gpt4 book ai didi

Java 6 file.exists() 和 file.isFile() 莫名其妙地失败

转载 作者:行者123 更新时间:2023-12-01 18:42:25 26 4
gpt4 key购买 nike

我正在开发一个模拟文件存储库的项目,因此我使用了大量的文件操作。我正在 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的文件的相对路径(我自己直接在文件系统上创建了这个相当标准的文本文件)。

现在,首先,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() 检查失败!我在javadoc中读到,如果文件对象不代表目录(我很确定这不是问题)或“正常”文件,就会发生这种情况......我没有发现,什么一个不正常的文件是不正常的,但是如果一个简单的文本文件不正常,那么什么是不正常的?

最佳答案

每次出现“java 找不到该文件...我知道它在那儿!”之类的问题时,它在那里,因为:

JVM的当前目录不是你想象的那样。

最快的调试方法是:

System.out.println(file.getAbsolutePath());

您很快就会明白为什么 java“找不到”该文件。

关于Java 6 file.exists() 和 file.isFile() 莫名其妙地失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com