当前位置: 首页 > 知识库问答 >
问题:

文件如果目录以点开头,则getCanonicalPath()返回错误

秦城
2023-03-14

注意:问题无效,问题是由放置错误的引起的 。该问题已标记,以便版主删除。

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

public static boolean isValidPath(String path) {
    File f = new File(path);
    try {
        f.getCanonicalPath();
        return true;
    } catch (IOException e) {
        return false;
    }
}

问题是文件。getCanonicalPath() 在任何目录以点开头时返回错误,尽管它是Windows的有效目录路径。这会导致函数返回false,该值应为true。例如路径C:\Users\Tim\AppData\Roaming\。minecraft\bin返回false,而C:\Users\Tim\AppData\Roaming\minecraft\bin在minecraft目录上不带点返回true。目录名中带有点的第一个路径确实存在于我的系统中,我正在运行64位Windows 7。是否有其他功能来检查路径是否有效,或者我还能做些什么来解决此问题?


共有2个答案

董翰墨
2023-03-14

目录名中带有点的第一个路径确实存在于我的系统中,我正在运行64位Windows 7。

所以你会得到

如果发生I/O错误,这是可能的,因为规范路径名的构造可能需要文件系统查询。

是否有其他函数来检查路径是否有效?试试这个:

File file = new File("c:\fileName");
if (!file.isDirectory())
   file = file.getParentFile();
if (file.exists()){
    ...
}
仲孙飞文
2023-03-14
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
 类似资料:
  • 当我输入注册号时,当它以后一个B开头时,它应该返回值true,反之亦然,但在这个编码中,当我输入bhu132时,它将值变为false。这里怎么了..请帮帮我

  • 我想在PowerShell中发出POST请求。以下是Postman中的正文详细信息。 如何在PowerShell中传递此消息?

  • 问题内容: 我在node.js中编写一个函数来查询PostgreSQL表。 如果该行存在,我想从该行返回id列。 如果不存在,我想将其插入并返回ID()。 我一直在尝试和语句的变体,但似乎无法使其正常工作。 问题答案: 我建议在数据库端进行检查,然后将ID返回给nodejs。 例子: 而不是在Node.js端(在此示例中,我使用的是node-postgres):

  • 问题内容: 我现在正在使用Microsoft SQL,我的代码是: 我希望当[avail]存在时,返回[avail]的值,如果不存在,则返回0或“未找到” 谢谢! 问题答案: 你可以用这个

  • 我正在尝试使用python中的shutil将文本文件从一个文件夹复制到另一个文件夹。我写了以下几行: 但每次我调用此代码时,都会出现错误2。错误的回溯为

  • 我正在创建一个允许调整gif大小的小类。为此,我创建了一个包含所有帧的临时目录,调整它们的大小,然后再次创建gif。 创建gif后,我想删除我的临时目录。但一旦我的所有文件都被删除,我就会出现以下错误: 警告:目录不为空 这是我的密码: 这是我得到的: 正如您所看到的,没有隐藏文件,因为scandir没有返回任何文件<如你所见,我尝试了这个解决方案,但没有成功 我可以手动删除它,一旦代码完成,里面