Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以强制用Java编写文件,这样在函数返回后,文件就可以保证被编写?_Java_Eclipse_File_File Io - Fatal编程技术网

有没有一种方法可以强制用Java编写文件,这样在函数返回后,文件就可以保证被编写?

有没有一种方法可以强制用Java编写文件,这样在函数返回后,文件就可以保证被编写?,java,eclipse,file,file-io,Java,Eclipse,File,File Io,我在Eclipse中的调试器中运行以下代码: FileOutputStream fstream = new FileOutputStream(new File("foo")); byte[] ba = someBytes(); fstream.write(bytes); // tried with and without the following two lines. no difference // fstream.flush(); // fstream.getFD().sync();

我在Eclipse中的调试器中运行以下代码:

FileOutputStream fstream = new FileOutputStream(new File("foo"));
byte[] ba = someBytes();
fstream.write(bytes);

// tried with and without the following two lines. no difference
// fstream.flush();
// fstream.getFD().sync();

fstream.close();
当我在Eclipse调试器中单步执行此代码时,调用
fstream.close()
之后,文件并不存在(通过
file.exists()
从另一个使用相同路径创建的文件对象进行验证,并在bash shell中查找文件)

我想这是某种比赛条件,但我还没能找到到底发生了什么。我尝试根据另一个StackOverflow问题添加
fstream.flush()
fstream.getFD().sync()
,但这没有帮助

这种情况的最终症状是一些测试用例在某种程度上不确定地失败。无论是否进行调试,连续相同运行的行为都是相同的,但是如果我在调试器中更改断点,行为可能会更改。我相信,当我在调试器外部运行代码时,它通常/总是有效的,但同样的代码在调试器内部可能会失败,这很麻烦

这里会发生什么?有没有一个好方法可以确保文件在我认为是的时候被写入

**最新消息:我了解了一些情况。以下黑客强制写入文件:

fstream.close();
fstream = new FileOutputStream(file, true);

这是一个黑客攻击,但似乎迫使操作系统完成其编写。

这似乎是Eclipse调试器的一个问题。我在编辑中提到的黑客是我发现的唯一强制执行预期行为的方法。

这似乎是Eclipse调试器的一个问题。我在编辑中提到的黑客是我发现的唯一强制执行预期行为的方法。

JVM底层系统的详细信息?Fedora 14,java 1.6.0\u 20您是否在网络文件系统(例如nfs或samba挂载)上运行代码?这似乎更像是一个文件系统问题,而不是java问题。如果java中经常出现这种情况,许多代码就会中断。有关JVM底层系统的详细信息?Fedora 14,java 1.6.0您是否在网络文件系统(例如nfs或samba装载)上运行代码?这似乎更像是一个文件系统问题,而不是java问题。如果java中经常出现这种情况,很多代码都会中断。