我正在尝试用写入文件后删除文件FileOutputStream。这是我用来编写的代码:
FileOutputStream
private void writeContent(File file, String fileContent) { FileOutputStream to; try { to = new FileOutputStream(file); to.write(fileContent.getBytes()); to.flush(); to.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
我刷新并关闭了流,但是当我尝试删除时,file.delete()返回false。
file.delete()
false
我删除前检查,看看是否该文件存在,并且:file.exists(),file.canRead(),file.canWrite(),file.canExecute()一切回归真实。在调用这些方法之后,我尝试file.delete()返回false。
file.exists(),file.canRead()
file.canWrite()
file.canExecute()
我做错了什么吗?
起作用的把戏很奇怪。事情是,当我以前读取文件的内容时,我使用BufferedReader。阅读后,我关闭了缓冲区。
BufferedReader
同时,我切换了语言,现在我正在使用读取内容FileInputStream。同样在完成阅读后,我关闭了流。现在它正在工作。
FileInputStream
问题是我没有对此的解释。
我不知道BufferedReader并且FileOutputStream不兼容。
Java中的另一个错误。我很少找到他们,只有我十年来的第二个。正如其他人所提到的,这是我的解决方案。我曾经用过一点System.gc()。但就我而言,这绝对至关重要。奇怪的?是!
System.gc()
finally { try { in.close(); in = null; out.flush(); out.close(); out = null; System.gc(); } catch (IOException e) { logger.error(e.getMessage()); e.printStackTrace(); } }