2012-03-09 16 views
2

を開くことができません:それはすべてが、ほとんどの場合、結構な作品Javaファイルは、私がこのようなものを使用してJava内からファイルを開くしようとしている特定のファイル

もちろん
java.awt.Desktop.getDesktop().open(new File("c:\\coolfile.txt"); 

どのように!

ユニコード文字u3000のファイルがあるときに開くことができません。ファイルが存在する場合でも。例えば

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

FILEが

[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

これはカットアンドペーストですか?すなわち、あなたのファイル名の文字列は実際には単一の '\'文字を持っていますか? – John3136

+2

あなたがjava.awt.Desktop.getDesktop()のように "\" を倍増する必要がオープン(新しいファイル( "C:\\ coolfile \\ u3000withweirdname.txt"); – RealHowTo

+0

\ U3000は、Unicode文字のU3000を記述する方法です。私は、少なくとも – user1258312

答えて

1

私は実際に私の質問に一種の解決策を見つけたと思うし、同様の問題を抱えている人を助けるためにここに投稿しています。

この修正はWindows(XPと私は思う)でも動作しますが、この問題が他のOSに存在するかどうかはわかりません。そして、たとえそれがあっても、同様の修正が可能でなければならない。私は正常に文字でファイルを開くには、次のコードを使用しています

:( "cmdが"、\ "/ \を開始C"

プロセスp =新しいProcessBuilderをを "\" E:\ _ PROGの\テスト\ u3000.txt \ "")。start();

ファイル 'E:_prog \ testu3000.txt'を開きます

+0

ohとbtw thxからmuCommanderまで、私はプログラムから修正を盗んだ – user1258312

+0

はい、それは神に感謝します。みんな助けてくれてありがとう。 – user1258312

0

私が知っている限り、\ u3000は表意文字の文字です。あなたのコードをテストするために、CompanyAlt + 3000Addressという名前のファイルを作成しました。

メモ:Alt + 3000キーを押すと、ウィンドウで表意文字の空白文字が作成されます。その後、私はJavaプログラムにファイル名をコピーし、それは私のために働いた。コンパイルされません

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

私の窓に何か問題があるかもしれません。 Alt + 3000は私に私を与えます。 – user1258312

+0

あなたがコピーした場合、 "java.lang.IllegalArgumentException:ファイル:c:\ tst"がありません.txtが存在しません。 c:\ test .txt – user1258312

+0

を開こうとすると、Windows XPを使用していても大丈夫です。コメントを入力している間でも、Alt + 3000を押すと╕のシンボルが表示されます。 –

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

。明らかにあなたの実際のコードではありません。

[javaの]にjava.io.IOException: ファイルを開くことができませんでした:/ E:/ _ PROG /テスト%のE3%を80%80.txt

そして証拠があります。明らかに、新しいFileInputStream()にURLを渡しました。それはURL文字列を取らず、ファイル名をとります。

+0

"明らかに新しいFileInputStream()にURLを渡した"これは間違っています。私は、フォルダ上でgetFiles()を呼び出すことからファイルパスを取得しました – user1258312

+0

@ user1258312証明されていません。コードを私たちに教えてください。 file://と%-escapesは、URLではない場合どこから来たのですか? – EJP

+0

私はそれが表示や何かのための例外をフォーマットするときに来ると思ったのか分かりません。私は今、私はコンパイル可能な例を作ったはずだったはずです。私がプロジェクトを投稿しなかった理由は、その方法が大きすぎて議論を混乱させるだけです。 – user1258312

関連する問題