您的位置:首页 > 运维架构

openFileOutput 文件属性设置、主动配置文件的可读写属性及事实上现方式

2017-05-21 18:19 459 查看
首先參考

Android 内部存储相关的函数(getCacheDir,getDir, getFileStreamPath,getFilesDir,openFileInput, ...)

1. 用openFileOutput方法改变文件的属性,可是该方法有局限性,他创建的文件仅仅能位于该程序的私有文件夹下,即/data/data/app-package/files/。

FileOutputStream fos;
fos = openFileOutput("filename", MODE_WORLD_READABLE);


FileOutputStream android.content.ContextWrapper.openFileOutput(String name, int mode) throws
FileNotFoundException

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来实现的改变文件权限的功能。

Runtime.getRuntime().exec("chmod 644 " + filename);


2. 用Runtime.getRuntime().exec()调用系统命令chmod来改变文件的权限,为了能推断命令的返回值,最好写成:

Process p = Runtime.getRuntime().exec("chmod 644 " + filename);
int status = p.waitFor();
if (status == 0) {
//chmod succeed
} else {
//chmod failed
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: