Выполняете ли вы это для ведения журнала? Если это так, имеется несколько библиотек для этого . Двумя наиболее популярными являются Log4j и Logback .
Если вам просто нужно сделать это один раз , класс 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
не являются строго необходимыми. 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
}
}
Это известная ошибка в Apache 2.4 . Я использовал обходной путь, представленный здесь , и он работает сейчас.
У меня также было 404 с перенаправлениями WordPress на виртуальных хостах после обновления до Apache 2.4.6
В моем случае проблема была решена путем изменения «AllowOverride None» на «AllowOverride FileInfo» для каждой конфигурации каталога виртуальных хостов.
Я также наткнулся на эту очень неприятную проблему. Решение состоит в том, чтобы отключить MultiViews в httpd.conf
, добавив -MultiViews
для нужного каталога, например:
<Directory /home/example.com/public_html>
Options -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>
После этого перезаписи начали работать ожидаемым образом.
Не забудьте перезагрузить Apache после редактирования файлов конфигурации.