gpt4 book ai didi

java I/O,将数组写入文本文件

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:51:18 25 4
gpt4 key购买 nike

我正在使用以下代码将数组写入文件:

FileWriter fstream1=new FileWriter("outx.txt");
BufferedWriter out1= new BufferedWriter(fstream1);
FileWriter fstream2=new FileWriter("outy.txt");
BufferedWriter out2= new BufferedWriter(fstream2);
for(int i=0;i<320*240;i++)
{

out1.write(0+System.getProperty("line.separator"));//
// out1.write("\n");
out2.write(0+System.getProperty("line.separator"));
//out2.write("\n");

}

:在上面的代码中,我将全零该文件应包含 76800 行(0s),但我的文件只有 69932 行。问题是什么,您是否可以建议一些其他方法来做到这一点。

最佳答案

你记得关闭输出流吗?您的示例没有列出对 close() 的调用,这也应该刷新流。 BufferedWriter 的默认行为是在关闭它正在缓冲的流之前刷新(写入)其剩余内容。

您可能应该添加:

out1.close();
out2.close();

当文件末尾被截断时,您忘记关闭用于创建文件的编写器是一种非常常见的情况,尤其是当您使用了可能不会刷新其缓冲区的 BufferedOutputStream 或 BufferedWriter 时(将其写入到文件),直到它被显式刷新(或更常见的是,关闭)。

在打开流后立即编写 close() 调用是一个很好的习惯,然后在调用之间编写所有用于处理流的代码。考虑到异常(exception)情况,标准调用使用以下习惯用法:

Writer myOutWriter = null;
try {
myOutWriter = new BufferedWriter(new FileWriter("..."));
// Write to myOutWriter here
} catch (IOException ioe) {
// Handle any exceptions here
} finally {
try {
if (myOutWriter != null) {
myOutWriter.close();
}
} catch (IOException ioe) {
// Not much you can do here
}
}

Apache Commons IO 项目 (http://commons.apache.org/io/) 有一个名为 IOUtils.closeQuietly() 的实用工具,它通过将 try catch、null 检查和调用 close 包含在一个方法调用中来清理 finally block 。使用该库的示例如下所示:

Writer myOutWriter = null;
try {
myOutWriter = new BufferedWriter(new FileWriter("..."));
// Write to myOutWriter here
} catch (IOException ioe) {
// Handle any exceptions here
} finally {
IOUtils.closeQuietly(myOutWriter);
}

关于java I/O,将数组写入文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com