美文网首页Java学习笔记
使用FileInputStream和FileOutputStre

使用FileInputStream和FileOutputStre

作者: Angelicas | 来源:发表于2016-09-18 16:14 被阅读1483次

    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,"homeJson.txt");
            } catch (IOException e) {
                e.printStackTrace();
            }
    

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

    相关文章

      网友评论

        本文标题:使用FileInputStream和FileOutputStre

        本文链接:https://www.haomeiwen.com/subject/fgcgettx.html