0

私は、訪問者のファイルシステムにアクセスする必要がある Java アプレットを開発しているので、ブラウザでファイル ( HTML タグがあるファイル) を開くときに、自己署名証明書.classを含むファイルにファイルを圧縮しました。セキュリティ ポップアップを表示すると、Java コンソールで次のエラーが表示されます。.jarcall.html<applet>

java.security.AccessControlException: アクセスが拒否されました (java.io.FilePermission output.txt 書き込み)

と を使用しFileInputStreamていFileOutputStreamます。FileInputStream動作しますが FileOutputStream、なぜですか?

これが私のコードです:

try {
      AccessController.doPrivileged(
          new PrivilegedExceptionAction() {              
              @Override 
              public Object run() throws FileNotFoundException {
                  outFile = new FileOutputStream("output.txt");
                  inFile = new FileInputStream("input.txt");
                  return "test";
              }
          }
      );
} catch (PrivilegedActionException e) {
    throw (FileNotFoundException) e.getException();
}

私は特権アクションを作成するために多くの方法を試しましたが、FileInputStream常に機能していますが、そうでFileOutputStreamはありません。output.txt読み取り専用ファイルではありません。

4

1 に答える 1

1

ポリシーファイルでアクセス権を付与し、表示中のアプレットに使用するポリシーファイルでappletviewerを起動します。

ポリシー ファイルの作成

ポリシー ツールは、ポリシー ファイルを作成するための Java 2 プラットフォーム セキュリティ ツールです。アプレットの制御に関する Java チュートリアル トレイルでは、ポリシー ツールの使用方法が詳細に説明されています。アプレットを実行するために必要なポリシー ファイルは次のとおりです。Policy ツールを使用して作成するか、以下のテキストを ASCII ファイルにコピーできます。

grant {
       permission java.util.PropertyPermission 
   "user.home", "read";
       permission java.io.FilePermission 
   "${user.home}/text.txt", "read,write";
     };

アプレット許可の完全なリンクは次のとおりです http://java.sun.com/developer/onlineTraining/Programming/BasicJava1/data.html

于 2012-05-05T12:00:00.567 に答える