android为我们提供了openFileInput和openFileOutput两个方法来将数据读取和写入文件。
//写入文件
try{
FileOutputStream fo = openFileOutput("火焰魔法使用口诀.txt",Context.MODE_WORLD_READABLE);
//将字节流转换为字符流,相当于桥
OutputStreamWrite bridge = new OutputStreamWrite(fo);
//创建字符缓冲流,将桥传进去
BufferedWriter bw = new BufferedWriter(bridge);
String s = "我以屌丝之名召唤火焰!出来吧,大火";
//将字符串s写入到缓冲流中
bw.write(s);
//写完了一定要写这句将缓冲流中的数据刷到目的文件中去
bw.flush();
//关闭字符缓冲流和桥以及字节流
bw.close();
fo.close();
}
openFileOutput()方法是activity提供的一个打开文件的方法
第一个参数是文件名,不能包含路径分隔符 / ,如果文件不存在android会自动创建这个文件,这个文件在data/data/
/files 目录下,如 data/data/com.myApp.iottxt/file/火焰魔法使用口诀.txt 第二个参数是指定操作模式,有四个操作模式
Context.MODE_PRIVATE = 0 Context.MODE_APPEND = 32768 Context.MODE_WORLD_READABLE = 1 Context.MODE_WORLD_WRITEABLE = 2 /** *Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND *Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。 *Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。 *MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。 *如果希望文件被其他应用读和写,可以传入:openFileOutput(“火焰魔法使用口诀”, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); **/
OutputStreamWrite和InputStreamReader的作用
以InputStreamReader为例,另外一个用法一样。
openFileInput()返回的是字节流,需要传到InputStreamReader中,再将InputStreamReader传给BufferedReader字符缓冲流
//读取文件 try{ FileInputStream fi = openFile("火焰魔法使用口诀.txt") BufferedReader is = new BufferedReader(new InputStreamReader(fi)); String ls ; //临时的字符串 Steing text = ""; //最会读取出来的字符串 while((ls = is.readLine()) != null){ text = text+ls+"\n"; } fi.close(); is.close(); }
读取文件和写入文件都是差不多的感觉。。。基本就是打开一个文件,然后将字节文件流转换为字符文件流,再将她转为字符缓冲流。最后用缓冲流对文件进行操作。