【发布时间】:2012-03-26 14:29:45
【问题描述】:
我正在尝试使用以下方式从 Java 中打开文件:
java.awt.Desktop.getDesktop().open(new File("c:\\coolfile.txt");
当然,在大多数情况下,这一切都很好。
但是!
当我有一个带有 unicode 字符 u3000 的文件时,我无法打开它!即使文件存在。
例如:
java.awt.Desktop.getDesktop().open(new File("c:\\coolfile\u3000withweirdname.txt");
我得到一个异常,即使文件存在
[java] java.io.IOException: Failed to open file:/E:/_prog/test%E3%80%80.txt. Error message: The system cannot find the path specified.
请帮助我,我几乎尝试了所有方法。这让我发疯:/
编辑:
提供更多信息:
我可以轻松地从 Java 中创建具有此名称的文件。
好像和空格有关
我不知道它是否适用于其他角色;我还没有找到。当然,如果有 1 个,那么很容易有 100 个。
我很确定我无法从文件中读取或从 Java 中写入,但我还没有测试过,因为这不是我主要关心的问题。
【问题讨论】:
-
那是剪切和粘贴吗?即您的文件名字符串中是否真的有单个 '\' 字符?
-
你需要把“\”加倍,比如 java.awt.Desktop.getDesktop().open(new File("c:\\coolfile\\u3000withweirdname.txt");
-
\u3000 是如何写 unicode char u3000。至少我是这么认为的
-
@user1258312 给别人一个SSCCE来帮助你,并说明你都尝试了什么
-
1) 进行一些更改以进行调试!
File f = new File("c:\\coolfile\u3000withweirdname.txt"); System.out.println("Exists: " + f.exists() ); //is it real path?2) 为了尽快获得更好的帮助,请发布SSCCE。请注意,这是前面引用的术语在 Google 上的热门话题,请不要指望人们会向您提供信息。 3) 引用的代码不会编译,所以如果不是你自己的,请不要再浪费我们的时间了。
标签: java windows file unicode io