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:
Tá, não simplesmente copia, tenta entender o que eu fiz:
public static void main(String args[]) {
String in = "arquivo de entrada;
String out = "arquivo de saida";
long contador = 0;
List linhas = new ArrayList();
// LE O ARQUIVO
String linha = "";
System.out.println("Começou a leitura do arquivo!!!");
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("Arquivo não encontrado");
return;
} catch (IOException e) {
System.err.println("Erro na leitura do arquivo");
return;
} finally {
if (arqr != null) {
try {
arqr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Começou a escrita dos arquivos!!!");
// 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("Erro na tentativa de abrir o arquivo");
} catch (IOException ex) {
System.err.println("Erro na escrita do arquivo" + args[0]);
} finally {
if (arqw != null) {
try {
arqw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Terminou a escrita dos arquivos");
System.out.println("O total de registros copiados é: " + 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