Вы делаете это для целей регистрации? В этом случае несколько библиотек для этого . Двумя наиболее популярными являются Log4j и Logback .
Java 7 +
Если вам просто нужно сделать это один раз, класс Files делает это легко:
try {
Files.write(Paths.get("myfile.txt"), "the text".getBytes(), StandardOpenOption.APPEND);
}catch (IOException e) {
//exception handling left as an exercise for the reader
}
Осторожно : При вышеуказанном подходе выдается NoSuchFileException
, если файл еще не существует. Он также не добавляет новую строку автоматически (что часто требуется при добавлении в текстовый файл). Ответ Стива Чамберса описывает, как это можно сделать с помощью Files
класса.
Однако, если вы будете записывать в один и тот же файл много раз, описанное выше должно многократно открывать и закрывать файл на диске, что является медленной операцией. В этом случае буферизованный писатель лучше:
try(FileWriter fw = new FileWriter("myfile.txt", true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw))
{
out.println("the text");
//more code
out.println("more text");
//more code
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
Примечания:
- Второй параметр в конструкторе
FileWriter
скажет ему добавить файл, а не записывать новый файл. (Если файл не существует, он будет создан.)
- Использование
BufferedWriter
рекомендуется для дорогого писателя (например, FileWriter
).
- Использование
PrintWriter
дает вам доступ к синтаксису println
, к которому вы, вероятно, привыкли с System.out
.
- Но оболочки
BufferedWriter
и PrintWriter
не являются строго необходимыми.
Старая Java
try {
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true)));
out.println("the text");
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
Обработка исключений
Если вам нужна надежная обработка исключений для старой Java, она становится очень многословной:
FileWriter fw = null;
BufferedWriter bw = null;
PrintWriter out = null;
try {
fw = new FileWriter("myfile.txt", true);
bw = new BufferedWriter(fw);
out = new PrintWriter(bw);
out.println("the text");
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
finally {
try {
if(out != null)
out.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
try {
if(bw != null)
bw.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
try {
if(fw != null)
fw.close();
} catch (IOException e) {
//exception handling left as an exercise for the reader
}
}