Realizei o desafio do professor de usar tanto a leitura, quanto a escrita em um projeto e ficou dessa forma:
package br.com.alura.java.io.teste;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class ReadAndWriter{
private String pathFileRead;
private String pathFileWriter;
/*
* Construtor que recebe o caminho do arquivo que será lido e do arquivo que será escrito,
* guardando os valoes nos atríbutos locais.
*
*/
public ReadAndWriter(String pathFileRead, String pathFileWriter ) {
this.pathFileRead = new String(pathFileRead);
this.pathFileWriter = new String(pathFileWriter);
}
/* Método que após já instanciado o objeto pelo construtor com os valores,
* pode usar esses valores para fazer a cópia do leitor pro escritor.
*/
public void sendReading() throws IOException {
// Criando a leitura do arquivo
InputStream fis = new FileInputStream(pathFileRead);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
// Criando a escrita do arquivo
OutputStream os = new FileOutputStream(pathFileWriter);
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
// Variável que captura os caracteres do Buffered br e usa o readLine para junta-los em uma linha
String linha = br.readLine();
// Laço para que todas as linhas sejam percorridas e passadas para o escritor
while(linha != null) {
bw.write(linha);
bw.newLine();
linha = br.readLine();
}
br.close();
bw.close();
}
}
Executando:
package br.com.alura.java.io.teste;
import java.io.IOException;
public class TestarDesafio {
public static void main(String[] args) throws IOException {
ReadAndWriter transferer = new ReadAndWriter("C:\\Users\\rafael.lima\\Documents\\lorem.txt", "lorem2.txt");
transferer.sendReading();
}
}
Minha dúvida que ficou é apenas se há como quebrar linhas a partir de um tio BufferedReader como o newLine(); do BufferedWriter.
(O desafio compilou e funcionou como o esperado)