bom como o teu arquivo é um .txt
facilita a vida, basta carregar o teu arquito para memória
e usar manipulação de String para recuperar a Substring
desejada…
no teu caso vc vai ter que saber qual a posição onde
você irá iniciar a leitura da substring e onde irá parar…
como nesse caso você tem um layout de aquivo, basta localizar a palavra:
INICIO ( mais precisamente saber qual a posição do O na atual String )
FIM( mais precisamente saber qual a posição do F na atual String )
tendo esses indices basta usar o método substring( inicio, fim ) do String
para recuperar a parte que lhe interessa
mas ainda tem outras alternativas, caso tenha os espaços em branco
como parte do teu layout de arquivo vc pode utilizar o método split
da String tendo como parametro ‘\n’ para separar e gerar o array,
apos tendo o array basta saber qual o indice da String que fica entre
INICIO e FIM :razz:
J
jason_voorheesPJ
Erko, valeu pela ajuda…
Eu fiz como vc disse, mas funcionou mais ou menos qdo eu mando gravar o arquivo de saida em um novo txt ele sai assim:
importjava.io.*;classLeArquivo{publicstaticvoidmain(Stringargs[])throwsIOException{longcontador=0;//LE O ARQUIVOBufferedReaderarq=newBufferedReader(newFileReader("C:/Testes/IN/teste.txt"));Stringlinha="";StringtextoInicial="",textoFinal="";Stringinicio="",fim="";System.out.println("Começou a leitura do arquivo!!!");while(!(linha=arq.readLine()).equals("FIM")){textoInicial+=linha;textoInicial+="\n";contador++;}textoFinal=textoInicial.substring(6);System.out.println("Terminou a leitura dos arquivos");System.out.println(textoInicial);System.out.println("Começou a escrita dos arquivos!!!");//GRAVA O ARQUIVOFileOutputStreamarq2;PrintStreamps;try{arq2=newFileOutputStream("C:/Testes/OUT/arq.txt");ps=newPrintStream(arq2);ps.println(textoFinal);ps.close();}catch(FileNotFoundExceptione){System.err.println("Erro na tentativa de abrir o arquivo");}catch(IOExceptionex){System.err.println("Erro na escrita do arquivo"+args[0]);}System.out.println("Terminou a escrita dos arquivos");System.out.println(textoFinal);System.out.println("O total de registros copiados é: "+contador);try{arq.close();}catch(IOExceptionex){ex.printStackTrace();}}}
Valeu…
J
jason_voorheesPJ
UP!!!
Alguem ai sabe como evitar isso que esta acontecendo??
Valeu…
L
luBSPJ
Tá, não simplesmente copia, tenta entender o que eu fiz:
publicstaticvoidmain(Stringargs[]){Stringin="arquivo de entrada; String out = "arquivodesaida"; long contador = 0; List linhas = new ArrayList(); // LE O ARQUIVO String linha = ""; System.out.println("Começoualeituradoarquivo!!!"); BufferedReader arqr = null; try { arqr = new BufferedReader(new FileReader(in)); boolean iniciado = false; while ((linha = arqr.readLine()) != null) { if (linha.trim().equals("FIM")) break; if (iniciado) { linhas.add(linha); contador++; } if (linha.trim().equals("INICIO")) iniciado = true; } } catch (FileNotFoundException e) { System.err.println("Arquivonãoencontrado"); return; } catch (IOException e) { System.err.println("Erronaleituradoarquivo"); return; } finally { if (arqr != null) { try { arqr.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("Começouaescritadosarquivos!!!"); // GRAVA O ARQUIVO BufferedWriter arqw = null; try { arqw = new BufferedWriter(new FileWriter(out)); for (int i = 0; i < linhas.size(); i++) { arqw.write((String) linhas.get(i)); arqw.newLine(); } } catch (FileNotFoundException e) { System.err.println("Erronatentativadeabriroarquivo"); } catch (IOException ex) { System.err.println("Erronaescritadoarquivo" + args[0]); } finally { if (arqw != null) { try { arqw.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("Terminouaescritadosarquivos"); System.out.println("Ototalderegistroscopiadosé:" + contador); }}
tava estranho a forma como vc lia o arquivo, jogando em uma string e depois dando substring de não sei oq… então refiz, gravo numa lista cada linha e depois uso BufferedWriter para gerar o novo arquivo, la existe um método chamado newLine.
agora eu te desafio a fazer o mesmo programa sem usar uma lista, abrindo um BufferedReader e um BufferedWriter ao mesmo tempo, lendo e ja gravando em um outro arquivo
S
SchuenemannPJ
Acho que o problema é o caractere que indica nova linha.
No windows é \r\n (ou o contrário).