2

さらに情報が必要な場合はお尋ねください。jnlp にセキュリティ タグとすべてのアクセス許可タグがあり、Java アプリをオフラインで実行すると正しく動作します。

File T = new File(System.getProperty("user.home") + File.separator + ".myapp/");<br />
if(!T.exists())
    T.mkdirs();
File[] temp=new File[2];

temp[0] = new File(System.getProperty("user.home") + File.separator +
                   ".myapp"+File.separator+"temp1.txt");
temp[1] = new File(System.getProperty("user.home") + File.separator +
                   ".myapp"+File.separator+"temp2.txt");

writer=new BufferedWriter(new FileWriter(temp[x]));
writer.write(finalData);
writer.close();

次の方法を使用して、ユーザーのシステムのディレクトリに作成するファイルに書き込みます。プログラムでは、同じフォルダーからも読み取り、そのフォルダーにテストデータを配置すると、正しく機能します。temp1.txt および temp2.​​txt ファイルを削除すると、データが読み取られません。エラーメッセージなどは表示されません。

繰り返しますが、Java Web Start で実行すると、ウィンドウがポップアップし、プログラムはエラー メッセージなしで正しく実行されますが、ユーザー システムにファイルが正しく書き込まれません。同時に、テスト データが .txt ファイルで提供されている場合は、正しく読み取ります。

編集:可能であれば、javaw.jnlp.* メソッドの一部を使用せずに解決策はありますか? プログラムには、読み取る.txtファイルを含むフォルダーが実際に必要です

edit2:すべてのjarファイルも署名されています

4

2 に答える 2

3

すみません、私はばかでした。私の jnlp ファイルは、私のローカル システムにある別のバージョンの Java プログラムを指していて、基本的に私はばかです。家に帰って、自宅のPCからウェブサイトをテストしたところ、エラーが見つかりました。

でも、助けてくれてありがとう!

于 2012-06-27T13:44:33.937 に答える
3

使用する前に、ファイルを作成してみていただけますか?

temp[1].createNewFile()

これにより、ファイルが存在しない場合にのみ作成されます。return boolean フラグを使用して、ファイルが既に存在するかどうかを確認できます。セキュリティ マネージャが作成要求を拒否した場合も、このメソッドはIOExceptionをスローします。

編集:

によるとjava.io.FileWriter、ファイルの作成は基盤となるプラットフォームに依存します。ファイルが存在する場合はファイルを読み取ることができ、JNLP アプリで新しいファイルを作成する際にのみ問題が発生するためです。createNewFileFileWriter に頼ってファイルを作成するのではなく、新しいファイルを作成することを提案しました。

java.io.FileWriterjavadocから:

ファイルが使用可能かどうか、またはファイルを作成できるかどうかは、基盤となるプラットフォームによって異なります。

于 2012-06-26T21:25:24.330 に答える