次を使用してファイルのアクセス許可モードを変更できることを知っています。
Runtime.getRuntime().exec( "chmod 777 myfile" );
.
この例では、許可ビットを に設定し777
ます。777
プログラムで Java を使用して許可ビットを設定することは可能ですか? これはすべてのファイルに対して実行できますか?
次を使用してファイルのアクセス許可モードを変更できることを知っています。
Runtime.getRuntime().exec( "chmod 777 myfile" );
.
この例では、許可ビットを に設定し777
ます。777
プログラムで Java を使用して許可ビットを設定することは可能ですか? これはすべてのファイルに対して実行できますか?
Android で chmod を使用する
Java は、chmod のようなプラットフォーム依存の操作をネイティブでサポートしていません。ただし、Android は android.os.FileUtils を介してこれらの操作の一部のユーティリティを提供します。FileUtils クラスは公開 SDK の一部ではないため、サポートされていません。したがって、これは自己責任で使用してください。
public int chmod(File path, int mode) throws Exception {
Class fileUtils = Class.forName("android.os.FileUtils");
Method setPermissions =
fileUtils.getMethod("setPermissions", String.class, int.class, int.class, int.class);
return (Integer) setPermissions.invoke(null, path.getAbsolutePath(), mode, -1, -1);
}
...
chmod("/foo/bar/baz", 0755);
...
Android では、Intent を使用しない限り、他のアプリケーションやそのデータとやり取りすることが難しくなっています。インテントを受け取るアプリケーションに依存しているため、インテントはアクセス許可に対して機能しません。おそらく、ファイルのアクセス許可を誰かに知らせるようには設計されていません。これを回避する方法はありますが、アプリケーションが同じ JVM で動作するように設計されている場合のみです。したがって、各アプリケーションはそのファイルのみを変更できます。ファイル許可の詳細については、http://docs.oracle.com/javase/1.4.2/docs/guide/security/permissions.htmlを参照してください。