使用FileInputStream和FileOutputStream实现本地文件读写操作

FileInputStream和FileOutputStream 是一对继承与InputStream和OutputStream的类,分别用来创建磁盘文件的输入流和输出流对象,开发中我们会经常需要使用FileInputStream和FileOutputStream来实现本地文件读写操作,下面分享一个本地文件读写类

package com.pumasoft.vr.utils;

import android.content.Context;

import org.apache.http.util.EncodingUtils;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 本地文件读写类
 * Created by lijuan on 2016/8/26.
 */
public class FileUtils {
    /**
     * 写数据
     *
     * @param mContext 上下文
     * @param fileName 文件名
     * @param writestr 写入文件的字符串
     * @throws IOException
     */
    public static void writeFile(Context mContext, String fileName, String writestr) throws IOException {
        try {
            //创建流文件写出类
            FileOutputStream fout = mContext.openFileOutput(fileName, Context.MODE_PRIVATE);
            //获取流的字符数
            byte[] bytes = writestr.getBytes();
            //写出流,保存在文件fileName中
            fout.write(bytes);
            //关闭流
            fout.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 读数据
     *
     * @param mContext 上下文
     * @param fileName 文件名
     * @return
     * @throws IOException
     */
    public static String readFile(Context mContext, String fileName) throws IOException {
        String res = "";
        try {
            //创建流文件读入类
            FileInputStream fin = mContext.openFileInput(fileName);
            //通过available方法取得流的最大字符数
            byte[] buffer = new byte[fin.available()];
            //读入流,保存在byte数组
            fin.read(buffer);
            res = EncodingUtils.getString(buffer, "UTF-8");
            //关闭流
            fin.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return res;
    }
}

(一)主要步骤:

  • 生成文件流对象:对文件读操作时创建FileInputStream类对象,对文件写操作时创建FileOutputStream类对象;
  • 调用FileinputStream或fileoutputStream中方法:如read(buffer)、write(int buffer)方法来读写文件内容;
  • 关闭文件流关闭文件;

(二)其中注意的是,在这里我导入import org.apache.http.util.EncodingUtils;出错了

这里写图片描述
提示的错误是:程序包org.apache.http.util不存在,错误:找不到符号 符号:变量 EncodingUtils
这里写图片描述
还注:某些输入文件使用或覆盖了已过时的API,这是因为这里引用的EncodingUtils是HttpCore里面的,你的build.gradle里面没有依赖这个包,解决办法是在build.gradle文件添加依赖包:

compile 'org.apache.httpcomponents:httpcore:4.4.4'

(三)简单的方法调用
1、调用写数据的方法:

 try {
            FileUtils.writeFile(activity,"json.txt","写入文件的字符串");
        } catch (IOException e) {
            e.printStackTrace();
        }

2、读数据

try {
            String result = FileUtils.readFile(activity,"json.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }

好了,本篇文章就这样子啦,存在不对的地方还望指导,感谢^_^

猜你喜欢

转载自blog.csdn.net/qq_20785431/article/details/52330372