揭锅拿锅话说其实...吧 关注:33贴子:1,582
  • 2回复贴,共1

Android 文件保存与读取

只看楼主收藏回复

o(≥v≤)o


IP属地:广东1楼2013-11-01 14:57回复
    1. 编写文件读取与写入功能实现类 FileService
    package cn.android.service;
    import java.io.ByteArrayOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import android.content.Context;
    import android.util.Log;
    /**
    * 文件保存与读取功能实现类
    * @author Administrator
    *
    * 2010-6-28 下午08:15:18
    */
    public class FileService {
    public static final String TAG = "FileService";
    private Context context;
    //得到传入的上下文对象的引用
    public FileService(Context context) {
    this.context = context;
    }
    /**
    * 保存文件
    *
    * @param fileName 文件名
    * @param content 文件内容
    * @throws Exception
    */
    public void save(String fileName, String content) throws Exception {
    // 由于页面输入的都是文本信息,所以当文件名不是以.txt后缀名结尾时,自动加上.txt后缀
    if (!fileName.endsWith(".txt")) {
    fileName = fileName + ".txt";
    }
    byte[] buf = fileName.getBytes("iso8859-1");
    Log.e(TAG, new String(buf,"utf-8"));
    fileName = new String(buf,"utf-8");
    Log.e(TAG, fileName);
    // Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
    // Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
    // Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
    // MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
    // 如果希望文件被其他应用读和写,可以传入:
    // openFileOutput("output.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
    FileOutputStream fos = context.openFileOutput(fileName, context.MODE_PRIVATE);
    fos.write(content.getBytes());
    fos.close();
    }
    /**
    * 读取文件内容
    *
    * @param fileName 文件名
    * @return 文件内容
    * @throws Exception
    */
    public String read(String fileName) throws Exception {
    // 由于页面输入的都是文本信息,所以当文件名不是以.txt后缀名结尾时,自动加上.txt后缀
    if (!fileName.endsWith(".txt")) {
    fileName = fileName + ".txt";
    }
    FileInputStream fis = context.openFileInput(fileName);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte[] buf = new byte[1024];
    int len = 0;
    //将读取后的数据放置在内存中---ByteArrayOutputStream
    while ((len = fis.read(buf)) != -1) {
    baos.write(buf, 0, len);
    }
    fis.close();
    baos.close();
    //返回内存中存储的数据
    return baos.toString();
    }
    }I


    IP属地:广东2楼2013-11-01 14:58
    收起回复