我有一个文件打开和编写与EOFException类曾经在20-30次左右死机的情况,因为该文件不可用因为其他一些进程正在写入。如何在同一个线程等待文件被写入,以完成,所以我们可以使用它
我能赶上这个例外,然后以某种方式等待文件的写入操作同步到结束,这样我就可以递归方法?
File productJSON = getFileStreamPath("product" + "_" + getId() + ".json");
if (!productJSON.exists()) {
productJSON = getFileStreamPath("product" + ".json");
}
InputStream jsonStringsFileInputStream;
try {
jsonStringsFileInputStream = new FileInputStream(productJSON);
HashMap<String, Map> that = new JSONToProductParser().convertThisToThat(jsonStringsFileInputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
无法理解你的问题,你可以请ellobrate上的文件 – koutuk 2014-12-02 09:24:49
读/写操作应该是同步的,以避免在多线程应用程序 – jhamon 2014-12-02 09:25:21
将文件标记为并发中的代码同步。它将解决你的问题,在这种情况下,一次只能有一个线程能够写入它。 – 2014-12-02 09:25:59