/ / Declarando um FileWriter e FileReader estáticos - java, file

Declarando um arquivo estático FileWriter e FileReader - java,

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 № 1

Tente 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.