Em geral, quando você cria um documento de texto em que determinados valores precisam ser posicionados de forma adequada, você separa os “elementos” usando a tecla tab e não a space.
Se quer um exemplo, no java, você pode fazer algo como:
Por acaso você não está fazendo nenhum replace do conteúdo da linha lida?
Posta o código completo da leitura do arquivo, pois o trecho que você postou sempre vai lançar uma exceção.
Você está salvando o valor lido em um arquivo e conferindo o conteúdo em algum editor the texto?
Se for o caso, pode ser que seu editor está renderizando o ‘\t’ como vários espaços em branco.
java.io.File file = new java.io.File( path );
nomeArquivo = file.getName();
//Contando quantas linhas há no arquivo.
//----------------------------------------------------------------------
logSistema = "contagem de linhas.";
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(file);
java.io.BufferedReader bufferedReader = new java.io.BufferedReader( new java.io.InputStreamReader(fileInputStream) );
//Lendo arquivo para importação
logSistema = "leitura do arquivo de importação.";
while( (linha = bufferedReader.readLine() ) != null ){
if( ! gb.isEmpty(linha) ){
O arquivo em si vem zipado, antes de realizar a leitura eu descompacto ele, salvo em uma pasta, pego o arquivo .txt para fazer a leitura, esse arquivo descompacto fica exatamente igual ao que eu descompactei por conta propria, achei que era o problema de tabulação mesmo, porém vi que o espaçamento são espaços simples mesmo e não “tab”.
PS: Não postei o restante do codigo pois é muito extenso e esse trecho é o que se usa como base para as demais partes do codigo, devido depender da variavel “linha”.
Legal, o problema não parece estar na descompactação.
Após descompactar, é feito alguma outra tratativa no arquivo descompactado?
Pergundo porque você tem uma chamada pra um tal de gb.getExecScript("CorrigirCharset");
Tem algum outro código que manipula seus arquivos antes de você ler as linhas?
Se não tiver, então minha sugestão é que realmente poste o código que faz a leitura dele.
Então, não passa por nenhuma tratativa antes da leitura, aquele gb.getExecScript é referente ao nome do arquivo, não tem contato com o arquivo em si.
Como eu havia postado logo acima, o código referente a leitura é esse:
try{
java.io.File file = new java.io.File( path );
nomeArquivo = file.getName();
//Contando quantas linhas há no arquivo.
//----------------------------------------------------------------------
logSistema = "contagem de linhas.";
java.io.FileInputStream fileInputStream = new java.io.FileInputStream(file);
java.io.BufferedReader bufferedReader = new java.io.BufferedReader( new java.io.InputStreamReader(fileInputStream) );
//Lendo arquivo para importação
logSistema = "leitura do arquivo de importação.";
while( (linha = bufferedReader.readLine() ) != null ){
if( ! gb.isEmpty(linha) ){
logSistema = "importação do VA.";
auxIe = linha.substring(0,12);
inscricaoEstadual = auxIe.substring(0, 3) + "." +
auxIe.substring(3, 6) + "." +
auxIe.substring(6, 9) + "." +
auxIe.substring(9, 12);
O restante do código é somente obtendo os valores respectivos da variavel “Linha”.
O problema é que no arquivo as posições das informações estão de um jeito e na hora de fazer a leitura do mesmo, esta de outro, que é aquela questão dos espaçamentos. Impossibilitando que eu estipule um padrão de recorte das informações.
Está usando java 8 ou superior?
Se sim, existe a classe Files. Ela permite ler o arquivo todo, de uma vez, e gerar um array de String que representam as linhas:
Cara meu exitamento em postar o reste do código, foi minha perdição.
O codigo estava complemente correto no que diz respeito a leitura, porém em dado momento ao tentar recortar um trecho da string utilizando substring, ele estourava o tamanho. Acontece que o parametro “endIndex” estava incorreto, dai na pressa em resolver nem me atentei que poderia ser isso pois ao exibir a linha estava diferente da do arquivo. Peço desculpas, e agradeço o empenho.