島:
私はいくつかのファイルが私のJavaプログラムで読み書きすることにしたいです。だから私は使用してjava.security.SecurityManager
これを管理するために、それは不十分なようです。
Main.java
ファイルは以下の通りです
import java.io.*;
import java.util.*;
public class Main {
static private final String INPUT = "in.txt";
public static void main(String args[]) throws Exception {
FileInputStream instream = null;
BufferedReader reader = new BufferedReader(new FileReader(INPUT));
String tempString = null;
while ((tempString = reader.readLine()) != null) {
System.out.println(tempString);
}
}
}
そして、ファイル/opt/java.policy
以下のような
grant {
permission java.io.FilePermission "./out.txt", "write";
};
それから私は実行します
java -Xss64m -Xms16m -Xmx512m -Djava.security.manager -Djava.security.policy=/opt/java.policy Main
しかし、エラーが出力が何であるか、存在しないin.txt
です。私は他のファイルを試してみましたが、同じ結果を得ました。これはなぜ起こるのでしょうか?
user207421:
以下からのJavadoc:
ノートはしてください:コードは、常にそれが中だ同じディレクトリ(またはそのディレクトリのサブディレクトリ)からファイルを読み込むことができます。それはそうする明示的な許可を必要としません。
これは、十分に指定されていないこと。コードは、ディレクトリ「に」ではありません:それはされてから実行され、現在の作業ディレクトリ、これが何を意味するかのように見えます。