我正在开发一个模拟文件存储库的项目,因此我使用了很多文件操作。我正在 Windows8 机器上开发它,但它也应该可以移植到其他平台。该项目要求使用 Java 6 编写。考虑以下代码:
public void add(String description, boolean move, String repPath, String filePath) throws Exception {
...
File fileToAdd = new File(filePath);
if(!fileToAdd.exists()) throw new FileNotFoundException(filePath + " does not exist.");
...
addDataset(description, move, repPath, fileToAdd, parentID);
...
}
该参数filePath
是一个名为的文件的相对路径move.txt
(我直接在文件系统上创建了这个非常标准的文本文件 my-self )。
现在首先,fileToAdd.exists()
检查失败(更不用说这段代码在过去几周内不是问题的事实)。但我 100% 确定该文件确实存在于该位置。我打印出绝对路径,这似乎是正确的路径,所以我看不出为什么检查失败......另外,fileToAdd.canRead()
失败(我已经测试过这个,因为有时这在我审查过的类似帖子中工作) . 也fileToAdd.getAbsoluteFile().exists()
失败了。
为了测试剩下的代码,我暂时把这行删掉了,又发现了一个问题:
private void addDataset(String description, boolean move, String repPath, File datasetToAdd, long parentID) {
if(datasetToAdd.isFile()){
addFile(description, move, repPath, datasetToAdd, parentID);
} else {
...
}
}
在第二个片段中,datasetToAdd
-File 对象与上面的相同fileToAdd
,因此它确实应该是一个文件(即move.txt
)。但是datasetToAdd.isFile()
-check 失败了!我在 javadoc 中读到,如果文件对象不代表目录(我很确定这不是问题)或“正常”文件,就会发生这种情况......我没有发现,什么一个不正常的文件是,但如果一个简单的文本文件不正常,那是什么?