1

Windowsは、ライブラリを通常のフォルダやパスとは異なる方法で処理します。したがって、このコードブロックを使用してテキストファイルを作成すると、次のようになります。

File filePath = fc.getSelectedFile();

...もっと無関係なもの...

File outputText = new File(filePath.getParentFile(), "Decrypted.txt");

    try
        {
        FileWriter fw = new FileWriter(outputText); //Write everything to the file.
        fw.write(messageOut);
        fw.close(); //DON'T FORGET TO CLOSE THE FILE!
        }
    catch (IOException e)
        {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }

ファイルがたとえばデスクトップフォルダにある場合は機能しますが、マイピクチャーライブラリに入れようとすると、次のエラーメッセージが表示されます。

java.io.FileNotFoundException: ::{031E4825-7B94-4DC3-B131-E946B44C8DD5}\Pictures.library-ms\Decrypted.txt (The system cannot find the path specified)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileWriter.<init>(Unknown Source)
at code.Crypto.decrypt(Crypto.java:57)
at code.Crypto.main(Crypto.java:27)

これを修正する方法はありますか?

4

1 に答える 1

0

バグのように見えますが、私のシステムでもjava 7update432ビットでテストおよび確認されています。

JFileChooser fc = new JFileChooser();
int returnVal = fc.showSaveDialog(null);
//select and enter a name for a file under libraries (with windows look and feel 
//select 'desktop' in the left pane, then libraries->pictures)
if (returnVal == JFileChooser.APPROVE_OPTION) {
    File file = fc.getSelectedFile();
    FileWriter fw = new FileWriter(file); //<-- FileNotFoundException
    fw.write("foo bar");
    fw.close();
}

例外:

Exception in thread "main" java.io.FileNotFoundException: ::{031E4825-7B94-4DC3-B131-E946B44C8DD5}\Pictures.library-ms\hej.txt (The system cannot find the path specified)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
at java.io.FileOutputStream.<init>(FileOutputStream.java:165)
at java.io.FileWriter.<init>(FileWriter.java:90)
at test.Main.main(Main.java:16)

醜い回避策は、それらを除外するファイルフィルターを指定することです。以下を参照してください。

JavaのJFileChooserで「Computer」または「Libraries」を選択すると、奇妙なFileオブジェクトが生成されます

于 2012-05-27T22:53:41.887 に答える