【问题标题】:How do you reference a file in a path that has a space in it in Java?如何在 Java 中引用包含空格的路径中的文件?
【发布时间】:2016-01-02 19:36:31
【问题描述】:

我正在从事一个涉及读取 txt 文件的项目,而我目前的设置方式是...

reader = new BufferedReader(new FileReader(new File(url)));

...其中 url 是一个字符串。我没有为用户设置它来输入他们自己的文件路径(或者我的最终目标是能够在窗口中选择它,但这是另一回事),所以我只是将 url 设置为类似.. .

"file:///C:/Users/Jeremiah/Desktop/generic_text_file.txt"

我的问题是,使用这种技术,我不能在文件路径中包含空格,否则我会得到一个无效字符异常,但是一个人实际处理的计算机上的大多数文件和目录都有空格它,甚至是像“我的文档”一样出现在计算机上的那些。

我还尝试通过在字符串前面添加“\”来转义空格的方法传递字符串,但这仍然不起作用。

public String escapeSpaces(String string){
    int cursor = 0;
    System.out.println(string);
    while(cursor<string.length()){
        if(string.charAt(cursor)==' '){
            string = string.substring(0,cursor)+"\\"+string.substring(cursor, string.length());
            System.out.println(string);
            cursor++;
        }
        cursor++;
    }
    return string;
}

那么如何解决这个问题,以便我可以引用一个文件...

"file:///C:/Users/Jeremiah/Desktop/S O M A N Y S P A C E S/generic_text_file.txt"

感谢任何反馈。

【问题讨论】:

  • 如果你知道它是一个文件,为什么还要通过 URL 路由而不是直接使用它?
  • @OliverCharlesworth 在这种情况下,小舞仍然没有意义。
  • 仅供参考,您也可以将字符串传递给FileReader 构造函数。不知道这是否有帮助,但我想我记得使用带空格的文件名,而且效果很好。
  • @Hassan 在我从 url 字符串中删除“file://”后它起作用了。谢谢!
  • 推荐:请don't use the File class anymore。它已过时且信息不足。请改用Files 类。

标签: java io filepath


【解决方案1】:

您不能使用 URl 字符串构造 File。只需将正确的 filename 字符串直接传递给File, 的构造函数,或者实际上是FileReader. 的构造函数。文件名中的空格没有问题。

它仍然不允许我使用带空格的文件路径

是的。你错了。

逃不逃

文件名不需要转义。 URLS 需要转义。但是使用 URL 类只会造成不必要的混乱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2020-01-25
    • 2017-04-06
    • 2011-05-19
    • 2011-04-13
    相关资源
    最近更新 更多