Поэтому давайте скажем, что у меня есть txt файл, с которым я хочу писать с помощью PrintWriter. Почему следующий код удаляет старое содержимое файла каждый раз при его вызове?
Код:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
public class Test {
public static void main(String[] args) {
writeToFile("foo");
writeToFile("bar");
}
public static void writeToFile(String text) {
try {
PrintWriter printer = new PrintWriter(new File("myTextFile.txt"));
printer.println("Your text is:" + text);
printer.close();
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
}
}
}
Вывод:
Your text is:bar
Я предполагаю, что это связано с тем, что я создаю новый PrintWriter или новый файл каждый раз при вызове метода, но только один экземпляр, созданный в основном методе, также не работал.
Если вы хотите добавить к содержимому файла, вам нужно явно открыть файл для добавления; значение по умолчанию на большинстве языков перезаписывается.
Чтобы сделать это на Java, используйте new FileWriter("myfile.txt", true)
. Затем вы можете обернуть PrintWriter, если хотите.