Olá, estou criando um código utilizando a classe FileWriter pra escrever alguns arquivos para mim, só pra fins de teste mesmo, mas não estou conseguindo instanciar a classe FileWriter “fw” em uma classe minha que não tenha um método main, que está em outra classe no package
O erro gerado é o seguinte:
“Default constructor cannot handle exception type IOException thrown by implicit super constructor. Must define an explicit constructor”
Seu código está exatamente assim? À priori, todo “algoritmo” deveria estar dentro de um método ou de um construtor. Teu problema é que o compilador vai fornecer um construtor padrão e “enfiar” esse seu código dentro dele, maaaasssss o construtor de FileWriter pode lançar uma exceção verificada (IOException), então você precisa fornecer, explicitamente, o construtor para sua classe SistemaEscrita e tratar a exceção ou lançá-la para quem for construir um objeto dela.
Seguindo o que você fez, uma solução seria:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class SistemaEscrita {
String path = "C:\\Users\\victo\\Desktop\\arquivoGerado.txt";
File arquivo = new File( path );
FileWriter fw;
public SistemaEscrita() {
try {
fw = new FileWriter( arquivo );
} catch ( IOException exc ) {
// trata a exceção aqui...
}
}
}
Uma forma menos feia, mais padronizada, seria assim:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class SistemaEscrita {
private String path;
private File arquivo;
private FileWriter fw;
public SistemaEscrita() {
path = "C:\\Users\\victo\\Desktop\\arquivoGerado.txt";
arquivo = new File( path );
try {
fw = new FileWriter( arquivo );
} catch ( IOException exc ) {
// trata a exceção aqui...
}
}
}
Em tempo, se quiser lançar para quem construir SistemaEscrita tratar, seria algo assim:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class SistemaEscrita {
private String path;
private File arquivo;
private FileWriter fw;
public SistemaEscrita() throws IOException {
path = "C:\\Users\\victo\\Desktop\\arquivoGerado.txt";
arquivo = new File( path );
fw = new FileWriter( arquivo );
}
}
E na classe cliente:
import java.io.IOException;
public class ClasseCliente {
public static void main( String[] args ) {
try {
SistemaEscrita se = new SistemaEscrita();
//...
} catch ( IOException exc ) {
// trata a exceção aqui...
}
}
}
Na classe que vou utilizar o FileWriter só tem isso, porque não conseguia instanciar ele de jeito nenhum e procurei ajuda no Fórum para ver qual era o problema