Eu quero declarar um FileWriter estático eFileReader para que eu possa usar o mesmo em um programa grande. O Eclipse me diz que uma IOException deve ser lançada. Como posso lançar uma exceção para a declaração?
static FileWriter fileWriter = new FileWriter(file, true);
static BufferedWriter writer = new BufferedWriter(fileWriter);
static FileReader fileReader = new FileReader(file);
static BufferedReader reader = new BufferedReader(fileReader);
Obrigado.
Respostas:
2 para resposta № 1Tente algo assim:
static File file = new File("");
static FileWriter fileWriter;
static BufferedWriter writer;
static FileReader fileReader;
static BufferedReader reader;
static {
try {
fileWriter = new FileWriter(file, true);
writer = new BufferedWriter(fileWriter);
fileReader = new FileReader(file);
reader = new BufferedReader(fileReader);
} catch (final IOException e) {
throw new ExceptionInInitializerError(e.getMessage());
}
}
1 para resposta № 2
Basta colocar um throws IOException
após a declaração do método.
ou seja: public static void main(String[] args) throws IOException { ... }
É isso aí. Embora não seja elegante usá-lo dessa maneira ...
0 para resposta № 3
Coloque a inicialização em um bloco estático da seguinte maneira:
public final class MyUtil {
static FileWriter fileWriter;
static BufferedWriter writer;
static FileReader fileReader;
static BufferedReader reader;
static {
try {
File file = new File("<pathToFile>");
fileWriter = new FileWriter(file, true);
writer = new BufferedWriter(fileWriter);
fileReader = new FileReader(file);
reader = new BufferedReader(fileReader);
}
catch (IOException e) {
// Handle the exception here
}
}
}
Observe que esse tipo de estado global para um gravador / leitor de arquivos pode causar problemas em um ambiente multithread, portanto, convém verificar se há alguma sincronização para lidar com isso.