java - 如果目录以点开头,File.getCanonicalPath() 返回错误

标签 java file

注意:问题无效,问题是由错误放置的 ! 引起的在父函数中。该问题已被标记,以便版主可以将其删除。

<小时/>

我创建了一个函数来检查(文件/目录)路径是否有效,而不检查它是否存在;

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返回falseC:\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/

相关文章:

java - JTree 不过滤扩展

java - ObjectInputStream.readObject 跳过文本文件的最后一行

iphone - 我们如何在iPhone中进行后台文件上传?

Java - 处理大文件

java - 在maven pom.xml中总是需要更改vault插件的版本

java - SOAP 网络服务客户端的工具,可以获取凭据并提供输入

java - 将字符串转换为纪元

java - Java 中的 JSON : Using encoded JSON files and keeping it

java - 内存数据库评估

java - 更改并重新编译 Android 源代码