使用openFileInput和openFileOutput读写文本文件

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();
      }

    读取文件和写入文件都是差不多的感觉。。。基本就是打开一个文件,然后将字节文件流转换为字符文件流,再将她转为字符缓冲流。最后用缓冲流对文件进行操作。

添加新评论