繁体   English   中英

使用 Java 读取路径中有空格的文件

[英]Read file with whitespace in its path using Java

我正在尝试使用 FileInputStream 打开名称中包含空格的文件。

例如:

String fileName = "This is my file.txt";
String path = "/home/myUsername/folder/";

String filePath = path + filename;
f = new BufferedInputStream(new FileInputStream(filePath));

结果是抛出了 FileNotFoundException。 我试图将 filePath 硬编码为"/home/myUserName/folder/This\\\\ is\\\\ my\\\\ file.txt"只是为了看看我是否应该转义空白字符,但它似乎不起作用。 关于这个问题有什么建议吗?

编辑:只是与查看此问题的每个人都在同一页面上......打开名称中没有空格的文件有效,有空格的文件会失败。 权限不是这里的问题,也不是文件夹分隔符。

带空格的文件名工作正常

这是我的代码

File f = new File("/Windows/F/Programming/Projects/NetBeans/TestApplications/database prop.properties");
        System.out.println(f.exists());
        try
        {
            FileInputStream stream = new FileInputStream(f);
        }
        catch (FileNotFoundException ex)
        {
            System.out.println(ex.getMessage());
        }

f.exists()总是返回true没有任何问题

看起来您有问题而不是文件分隔符而不是文件名中的空格。 你有没有试过使用

System.getProperty("file.separator")

而不是路径变量中的“/”?

通常路径中的空格应该无关紧要。 只要确保当您从外部源(如命令行)传递路径时,它最后不包含空格:

File file = new File(path.trim());

如果您希望路径不带空格,可以将其转换为 URI,然后再返回路径

try {
    URI u = new URI(path.trim().replaceAll("\\u0020", "%20"));
    File file = new File(u.getPath());
} catch (URISyntaxException ex) {
    Exceptions.printStackTrace(ex);
}

不,您不需要转义空格。

如果代码抛出FileNotFoundException ,则该文件不存在(或者,您可能缺乏访问它的必要权限)。

如果权限很好,并且您认为该文件存在,请确保它的名称与您认为的名称相同。 特别是,请确保文件名不包含任何不可打印的字符、无意的前导或尾随空格等。为此, ls -b可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM