在LINUX下每个文件都有一个权限的属性 ,那么在Android中怎么用java改变某个文件的权限呢?
Android中有两种方法可以改变文件的权限
1. 用openFileOutput方法:
FileOutputStream fos; fos = openFileOutput("filename", MODE_WORLD_READABLE);
android.content. .openFileOutput( name, int mode) throws
Open a private file associated with this Context's application package for writing. Creates the file if it doesn't already exist.
可用的mode 参数如下:
/**
* File creation mode: the default mode, where the created file can only * be accessed by the calling application (or all applications sharing the * same user ID). * @see #MODE_WORLD_READABLE * @see #MODE_WORLD_WRITEABLE */ public static final int MODE_PRIVATE = 0x0000; /** * File creation mode: allow all other applications to have read access * to the created file. * @see #MODE_PRIVATE * @see #MODE_WORLD_WRITEABLE */ public static final int MODE_WORLD_READABLE = 0x0001; /** * File creation mode: allow all other applications to have write access * to the created file. * @see #MODE_PRIVATE * @see #MODE_WORLD_READABLE */ public static final int MODE_WORLD_WRITEABLE = 0x0002; /** * File creation mode: for use with {@link #openFileOutput}, if the file * already exists then write data to the end of the existing file * instead of erasing it. * @see #openFileOutput */ public static final int MODE_APPEND = 0x8000;
其实该方法最终还是调用了系统的chmod来实现的改变文件权限的功能。
但是该方法有局限性,他创建的文件只能位于该程序的私有目录下,即/data/data/app-package/files/
2. 用Runtime.getRuntime().exec()
Runtime.getRuntime().exec("chmod 644 " + filename);
该方法调用系统命令chmod来改变文件的权限,为了能判断命令的返回值,最好写成:
Process p = Runtime.getRuntime().exec("chmod 644 " + filename); int status = p.waitFor(); if (status == 0) { //chmod succeed } else { //chmod failed }