Android学习之文件操作

来源:互联网 发布:淘宝找直通车运营好吗 编辑:程序博客网 时间:2024/06/05 22:40


为啥CSDN只有原创,转载和翻译三种呢,很让我纠结,写的东西部分是从别的地方抠的,部分自己总结的,让我咋选呢! 好吧,不纠结了。

今天在看一个源码时发现调用Context对象的getFilesDir()方法得到的是/data/data/包名/files,因为平时没怎么用,所以有点好奇,想探个究竟,API是这么说的:

public File getFilesDir ()Added in API level 1Returns the absolute path to the directory on the filesystem where files created with openFileOutput(String, int) are stored.ReturnsReturns the path of the directory holding application files.

又来了一个API,openFileOutput(),

public abstract FileOutputStream openFileOutput (String name, int mode)Added in API level 1Open a private file associated with this Context's application package for writing. Creates the file if it doesn't already exist.ParametersnameThe name of the file to open; can not contain path separators.modeOperating mode. Use 0 or MODE_PRIVATE for the default operation, MODE_APPEND to append to an existing file, MODE_WORLD_READABLE and MODE_WORLD_WRITEABLE to control permissions.ReturnsFileOutputStream Resulting output stream.ThrowsFileNotFoundExceptionSee AlsoMODE_APPENDMODE_PRIVATEMODE_WORLD_READABLEMODE_WORLD_WRITEABLEopenFileInput(String)fileList()deleteFile(String)FileOutputStream(String)

英文不好的我着实头疼啊。

粗略的解释一下吧:具体的来说可以使用openFileOutput来保存数据,第一个参数是文件名称,第二个是模式,提供了相应的参数供选择了,

MODE_PRIVATE:应用程序私有,这个应该明白吧。

MODE_WORLD_READABLE:所有应用程序都可以访问。

MODE_WORLD_WRITEABLE:所有应用程序都可以写入。

MODE_APPEND:如果要创建的文件存在则新写入的数据不会覆盖以前的数据。

写一个简单的例子吧:

OutputStream os = activity.openFileOutput("file.txt", MODE_PRIVATE);OutputStreamWriter w = new OutputStreamWriter(os);w.write("hello world!");w.close();os.close();

这样就在系统的/data/data/应用程序包名/files/下创建了一个叫做file.txt的文件,并写入了hello world!字符。

那getFilesDir()的作用呢就是得到“/data/data/应用程序包名/files”。

还有一个跟它类似的函数叫做getCacheDir(),得到的是这样的目录结构:/data/data/包名/cache


对了,注意在写示例代码的时候添加上相应的文件权限,否则报错哟!

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>



------------- 暂时到这里吧,文件操作还有很大部分需要学习的。

原创粉丝点击