我正在尝试创建一个文件并继续追加到该文件中。我的代码文件正在创建,但它没有在该文件中附加任何内容。不知道为什么?任何人都可以建议我做错了什么..
更新代码: -
File file =new File("D://GeoData1.txt");
BufferedWriter out = new BufferedWriter(new FileWriter(file, true));
int j = -1;
while(true) {
j++;
String ipAddress = generateIPAddress(j);
try {
out.write(ipAddress);
System.out.println(ipAddress);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:3)
你应该关闭文件或刷新缓冲区。
答案 1 :(得分:2)
你是closing作家吗?
finally {
bufferWritter.close();
}
<强>更新强>
如果您使用的是Java 7,请尝试以下操作:
final int NUMBER_OF_IPS_TO_APPEND = 5000; // or whatever size
Charset charset = Charset.defaultCharset();
Path file = Paths.get("myfile.txt");
try (BufferedWriter writer = Files.newBufferedWriter(file, charset,
StandardOpenOption.CREATE,
StandardOpenOption.APPEND)) {
for (int i = 1; i <= NUMBER_OF_IPS_TO_APPEND; i++) {
String ip = generateIPAddress(i);
System.out.printf("Generated ip: %s\n", ip);
writer.append(ip + "\n");
}
} catch (IOException x) {
System.err.format("IOException: %s\n", x);
}
代码改编自The Java Tutorials。
检查IPS是否正在打印到控制台和文件。
Fully working code,其模拟实现为generateIPAddress
。每次执行时,它会向myfile.txt
附加5000个随机IPv4地址(不检查有效性)。
答案 2 :(得分:1)
我会尝试将文件编写器传递给文件对象并删除.getName()
BufferedWriter out = new BufferedWriter(new FileWriter(file, true));
答案 3 :(得分:1)
你有while(true)的无限循环。您应该使用statemant创建一个断点,或者使用&#34;而#34;像while一样循环(i&lt; xy)......
答案 4 :(得分:0)
首先,循环永无止境。你应该至少让它在某个时刻停止。 此外,您需要关闭该文件以释放任何内存。希望它有所帮助!
- edit-- 要关闭文件,
file.close();
答案 5 :(得分:0)
如果要在程序运行期间查看对文件所做的更改,则需要刷新编写器。请注意,它迟早会自动刷新。您在文本编辑器中看不到更改的原因取决于您的编辑器。例如,它无法打开这么大的文件(请注意,在您的程序中,您将非常快速地将字符追加到此文件中)。检查文件的大小。如果尺寸增加则可行。
如果您想监控文件,可以使用 tail 等工具。