我正在尝试使用以下内容从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写入文件,但我没有测试过,因为它不是我的主要关注点。
答案 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"));