我正在尝试使用类似这样的方式从 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");
那不编译。显然这不是您的真实代码。
[java] java.io.IOException: Failed to open file:/E:/_prog/test%E3%80%80.txt
而且有证据。很明显,您将 URL 传递给了新的 FileInputStream()
。它不接受 URL 字符串,它接受文件名。
关于Java File 无法打开某些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9628976/