Boa tarde a todos!
Estou tentando resolver um exercício onde eu preciso fazer a leitura do conteúdo de um arquivo texto e ao invés de imprimir o conteúdo do arquivo no console eu preciso gravá-lo em um novo arquivo. A classe está sem erros de sintaxe mas na hora de executar eu recebu uma excessão (NullPointerException). Alguém pode me ajudar?
Abaixo segue a definiçãoda classe.
[code]package br.com.java.io.stream.exercicios;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
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 FazLeituraEGravaEmUmNovoArquivo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
InputStream arquivo = new FileInputStream("seralido.txt");
try {
InputStreamReader scan = new InputStreamReader(arquivo);
BufferedReader br = new BufferedReader(scan);
String s = br.readLine();
while (s != null) {
s = br.readLine();
}
OutputStream os = new FileOutputStream("leituraesaida.txt");
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(s);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
[/code]
Obrigado.
Quando o while é iterado pela última vez, s recebe null. Lá no final, na hora q vc tenta escrever no BufferedWriter (bw.write(s)) vc ta passando null (pq s está null).
Isso
[code]
String s = br.readLine();
while (s != null) {
s = br.readLine();
}
OutputStream os = new FileOutputStream(“leituraesaida.txt”);
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(s);[/code]
Se transforma nisso:
[code]
String s = br.readLine();
OutputStream os = new FileOutputStream(“leituraesaida.txt”);
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
while (s != null) {
s = br.readLine();
bw.write(s);
}
bw.close();[/code]
Até mais!
Mais uma coisa, para ler arquivos de texto, use um FileReader ou qualquer outro Reader.
As classes do pacote java.io que tem nome Reader são dedicadas a leitura de streams que contém texto. Já as com nome Writer são dedicadas a escrita de streams que contém texto.
Até mais!
Olá David!
Agora rodou, mas o conteúdo do arquivo lido (seralido.txt) não foi gravado no arquivo destino (leituraesaida.txt).
Escrevi um exemplo completo. Dá uma olhada.
[code]
public static void main( String[] args ) {
try {
BufferedReader br = new BufferedReader( new FileReader( "origem.txt" ) );
BufferedWriter bw = new BufferedWriter( new FileWriter( "destino.txt" ) );
String linha = null;
while ( ( linha = br.readLine() ) != null ) {
bw.write( linha, 0, linha.length() );
bw.newLine();
}
br.close();
bw.close();
} catch ( IOException exc ) {
exc.printStackTrace();
}
}[/code]
Até mais!