Java读取文件,其路径中包含空格

时间:2012-02-03 11:56:57

标签: java java-io

我正在尝试使用名称中包含空格的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"只是为了看看我是否应该转义空白字符,它似乎不起作用。 关于此事的任何建议?

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

4 个答案:

答案 0 :(得分:4)

带空格的文件名可以正常使用

这是我的代码

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

答案 1 :(得分:1)

看起来你的文件分隔符比文件名中的空格有问题。你尝试过使用

吗?
System.getProperty("file.separator")

而不是路径变量中的'/'?

答案 2 :(得分:-1)

不,你不需要逃避空格。

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

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

答案 3 :(得分:-1)

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

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);
}