try {
File file = new File("sample.txt");
FileWriter fw = new FileWriter(file,true);
fw.append('d');
fw.write(100);
fw.close();
} catch(IOException exp) {
exp.printStackTrace();
}
我无法在文件中附加或写入任何内容。
但我可以从文件中读取内容。
我的代码有什么问题吗?
答案 0 :(得分:2)
听起来你可能正在写一个文件 - 但不是你想要的文件。如果没有抛出任何异常(并且吞下异常,只是将其写入标准输出,很少是正确的方法)那么该文件将存在于某处。
它将在代码运行的任何目录中 - 可能不与包含您正在阅读的sample.txt
文件的目录相同。我建议您浏览文件系统,并检查Eclipse中的Run Configuration以查看该应用程序的工作目录。
顺便说一下,你应该在finally
块中关闭作者,这样即使出现异常也会关闭它,如下所示:
File file = new File("sample.txt");
FileWriter fw = null;
try {
fw = new FileWriter(file, true);
fw.append('d');
fw.write(100);
} catch(IOException) {
// Ideally do something to indicate the failure to the caller
// - do you need to catch this at all?
e.printStackTrace();
} finally {
// From Guava
Closeables.closeQuietly(fw);
}
显然你可以在没有Guava的情况下做到这一点,但它会让事情变得更简单 - 而不仅仅是在这里。如果您使用的是Java 7,则可以使用try-with-resources statement使其更简单。
答案 1 :(得分:0)
http://www.roseindia.net/java/example/java/io/java-write-to-file.shtml 如果代码正确并且您仍然遇到问题,您可以刷新上下文。它“刷新流” 这个链接可以提供帮助!
答案 2 :(得分:0)
之前说过,在构建/清理过程中文件可能会被清除。尝试指定文件的绝对路径并再次运行它。你写的所有内容都是正确的,没有提供的更正。
try {
File file = new File("C:\sample.txt"); // for Windows or possibly just "/sample.txt" for *nix
FileWriter fw = new FileWriter(file,true);
fw.append('d');
fw.write(100);
} catch(IOException e) {
e.printStackTrace();
} finally {
// Good practice to move close to a finally block
fw.close();
}
答案 3 :(得分:0)
您可以尝试使用以下语法:
String filename = "C:/sample.txt";
FileWriter fw = new FileWriter(filename,true);