一部のディレクトリに読み取り権限を設定したい。java.io.Fileのlist()メソッドを使用したいのですが、たとえばこれを印刷すると、次のようになります。
System.out.println(fileDir.list());
ドキュメントによると、「null」が発生します。これは、ファイルが配置されているディレクトリへのアクセス許可がないことを意味している可能性があります。
一部のディレクトリに読み取り権限を設定したい。java.io.Fileのlist()メソッドを使用したいのですが、たとえばこれを印刷すると、次のようになります。
System.out.println(fileDir.list());
ドキュメントによると、「null」が発生します。これは、ファイルが配置されているディレクトリへのアクセス許可がないことを意味している可能性があります。
JNAを使用してネイティブCライブラリを呼び出すことができます(JNIを使用する代わりに)。
JNAの唯一の問題は、JNAよりも処理時間が長いことです。そのため、多数のファイル/ディレクトリを変更しようとすると実用的ではなくなります。
コードを編集する
import com.sun.jna.Library;
import com.sun.jna.Native;
public class ChmodTest {
private static LinkedOSLibrary linkedLibrary =
(LinkedOSLibrary ) Native.loadLibrary("c", LinkedOSLibrary.class);
public static void main(String[] args) {
linkedLibrary.chmod("/path/to/file", 0755);
}
}
interface LinkedOSLibrary extends Library {
public int chmod(String path, int mode);
}