【问题标题】:Play a file after calling getPath in Java在 Java 中调用 getPath 后播放文件
【发布时间】:2015-01-19 02:54:20
【问题描述】:

文件类中getPath()的返回值是这样的

"C:\Users\Daniel\Desktop\ASDF.mp3". 

要使用 java 中的 Desktop 类播放文件,必须将路径输入到文件中,路径类似于

"C:\\Users\\Daniel\\Desktop\\ASDF.mp3"

由于 \ 是保留字符(据我的理解),要创建一个新文件,您必须使用双反斜杠来指示它是一个文件。我的问题是,当我尝试获取路径时,我需要将其转换为双斜杠版本。 .replaceAll() 方法不允许使用 '\',因为它是保留字符,但 .replace() 方法可以。

要解决这个问题,我是否只需要循环查找所有实例并一次替换一个?还是有更简单的解决方法?另外我想知道我收到这个错误是因为它是一个保留字符,还是我完全错了。

【问题讨论】:

  • message = message.replaceAll("\\\\", "\\\\\\\\"); replace - 接受一个子字符串,而 replaceAll 接受一个正则表达式,因此有所不同。 \\ 是 \ 的正则表达式,但使用 java 的转义字符 \ 的数量是双倍的。

标签: java string file


【解决方案1】:

上面的两个字符串其实是一模一样的。 当 Java 或其他语言输出字符串时,它只显示一个斜杠“\”,但是当您将字符串输入双引号时,您需要双反斜杠“\\”,以便 Java 解析器知道它是一个斜杠。反斜杠用于许多其他转义字符,因此这是解析器知道的唯一方式。 (即使在输入这个答案时,我也需要 4 个反斜杠来制作 2 个!

【讨论】:

  • 所以我只需要在前面添加一个'\'字符就可以了?我也不能投票给你的回复。不过谢谢。
  • @user1241388 只有在添加新文本时才需要替换 \ 的现有字符串,例如:path+"\\file.txt";
猜你喜欢
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 2013-05-28
相关资源
最近更新 更多