注意:无效的问题,问题是由父函数中错误放置的!
引起的。该问题已被标记,因此可由主持人删除。
我创建了一个函数来检查(文件/目录)路径是否有效而不检查它是否存在;
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
而{mine}目录中没有点的true
返回{{1}}。目录名中带点的第一个路径确实存在于我的系统上,而我正在运行Windows 7 64位。是否有任何其他功能来检查路径是否有效,或者我还能做些什么来解决这个问题?
答案 0 :(得分:1)
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
答案 1 :(得分:0)
目录名中带点的第一个路径确实存在于我的身上 系统,我正在运行Windows 7 64位。
所以你会得到
IOException
- 如果发生I / O错误,这是可能的,因为规范路径名的构造可能需要文件系统查询。
是否还有其他功能来检查路径是否有效? 试试这个:
File file = new File("c:\fileName");
if (!file.isDirectory())
file = file.getParentFile();
if (file.exists()){
...
}