Java File 无法打开某些文件

标签 java windows file unicode io

我正在尝试使用类似这样的方式从 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/

相关文章:

java - 多线程回调方法

java - 如何将千克、克转换为千克转换器并获得以克为单位的结果

c++ - ATLGetDacl 从 32 位进程访问 64 位注册表键

c - Windows 可执行文件返回失败

java - 理解java中的Array<file>

java - 未记录显式 GC

java - 错误 - 需要类接口(interface)或枚举

windows - 如何通过 PowerShell 脚本将文件从 Windows 复制到 Ubuntu

android - 三星我的文件资源管理器 : Pick file from specified folder

file - 使用 MIPS 程序集读取文件