Java File无法打开某些文件

时间:2012-03-09 04:32:36

标签: 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写入文件,但我没有测试过,因为它不是我的主要关注点。

3 个答案:

答案 0 :(得分:1)

java.awt.Desktop.getDesktop().open(new File("c:\\coolfile\u3000withweirdname.txt");

那不编译。显然,这不是你的真实代码。

  

[java] java.io.IOException:无法打开   文件:/ E:/ _ PROG /试验%E3%80%80.txt

有证据。显然,您已将网址传递给新FileInputStream()。它不需要URL字符串,它需要一个文件名。

答案 1 :(得分:1)

好吧,我想我实际上找到了一个问题的解决方案,并在此发布,以帮助任何可能遇到类似问题的人。

此修复程序仅适用于Windows(XP和我认为)但我甚至不知道其他操作系统中是否存在此问题。即使它做了类似的修复也应该是可能的。

我使用以下代码成功打开一个带有字符的文件:

处理p = new ProcessBuilder(“cmd”,“/ c start \”\“\”E:\ _ prog \ test \ u3000.txt \“”)。start();

打开文件'E:_prog \ testu3000.txt'

答案 2 :(得分:0)

据我所知,\ u3000是表意空间角色。为了测试你的代码,我创建了一个名为CompanyAlt + 3000Address的文件。

注意:当您按Alt + 3000时,窗口将创建一个表意空格字符。然后我将文件名复制到我的java程序中,它对我有用。

Desktop.getDesktop().open(new File("C:\\Users\\Chandru\\Desktop\\Company╕Address.txt"));