use*_*809 1 java io file-permissions binaryfiles corruption
我需要检查给定的二进制文件是否具有写访问权限.文件类API有一个错误,它在JDK7中修复,但我不能只升级到它.
以下是该错误的链接:http: //bugs.sun.com/bugdatabase/view_bug.do?video_id = 6203387
当我打开FileOutputStream时,它会破坏二进制文件,资源管理器会将其大小显示为零并且无法启动它.这是代码片段.
操作系统:Win7
请帮助我理解为什么只打开输出流(不写任何东西)会破坏二进制文件.有没有解决这个问题的方法?
这是代码片段:
private boolean hasWriteAccess(File file) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
} catch (Exception e) {
e.printStackTrace();
if(fos != null) {
try {
fos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
当我打开FileOutputStream时,它会破坏二进制文件,资源管理器会将其大小显示为零
它不会破坏文件 - 它会截断它.
如果要在"追加"模式下打开它,请使用构造函数重载,该重载允许:
fos = new FileOutputStream(file, true);
Run Code Online (Sandbox Code Playgroud)
看看你的代码,这几乎肯定是你想要做的.
正如Andrew所说,你也应该总是关闭流.