我使用以下代码将数组写入文件:
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");
}
Run Code Online (Sandbox Code Playgroud)
:这里在上面的代码我把所有的零文件应该包含76800行(0)但我的文件只有69932行.问题是什么,如果你可以建议其他方法来做到这一点.
你还记得关闭输出流吗?您的示例没有列出对close()的调用,它也应该刷新流.BufferedWriter的默认行为是在关闭正在缓冲的流之前刷新(写入)其剩余内容.
您应该添加:
out1.close();
out2.close();
这是当一个文件的末尾被切断,你忘了关用于创建该文件的作家,尤其是当你已经使用了的BufferedOutputStream或BufferedWriter将可能不刷新其缓冲区一个很常见的情况下(将其写入文件)直到它被明确刷新(或更常见,关闭).
在打开流之后立即编写close()调用是一个非常好的习惯,然后编写所有代码以便在调用之间使用流.考虑到异常,标准调用使用以下习语:
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
}
}
Run Code Online (Sandbox Code Playgroud)
在Apache下议院IO项目(http://commons.apache.org/io/)拥有)一个很好的工具,叫做IOUtils.closeQuietly(即清理最后由包括尝试捕捉,空校验块,并调用关闭到一个方法调用.使用该库的示例如下所示:
Writer myOutWriter = null;
try {
myOutWriter = new BufferedWriter(new FileWriter("..."));
// Write to myOutWriter here
} catch (IOException ioe) {
// Handle any exceptions here
} finally {
IOUtils.closeQuietly(myOutWriter);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1112 次 |
最近记录: |