注意:问题无效,问题是由错误放置的 !
引起的在父函数中。该问题已被标记,以便版主可以将其删除。
我创建了一个函数来检查(文件/目录)路径是否有效,而不检查它是否存在;
public static boolean isValidPath(String path) {
File f = new File(path);
try {
f.getCanonicalPath();
return true;
} catch (IOException e) {
return false;
}
}
问题是 File.getCanonicalPath();
当任何目录以点开头时,尽管它是 Windows 的有效目录路径,但会返回错误。这会导致函数返回 false
应该是true
。
例如路径C:\Users\Tim\AppData\Roaming\.minecraft\bin
返回false
而C:\Users\Tim\AppData\Roaming\minecraft\bin
如果minecraft目录上没有点,则返回true
。目录名称中带有点的第一个路径确实存在于我的系统上,并且我运行的是 Windows 7 64 位。是否有其他函数可以检查路径是否有效,或者我还可以做些什么来解决此问题?
最佳答案
import java.io.*;
class TestDirWithDot {
public static boolean isValidPath(String path) {
File f = new File(path);
try {
f.getCanonicalPath();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
public static void main(String[] arg) {
System.out.println(System.getProperty("os.name"));
String path = ".dir";
System.out.println(isValidPath(path));
}
}
<小时/>
Windows Vista
true
关于java - 如果目录以点开头,File.getCanonicalPath() 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16131968/