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

时间:2022-05-24 08:50:10

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;出错了

使用FileInputStream和FileOutputStream实现本地文件读写操作
提示的错误是:程序包org.apache.http.util不存在,错误:找不到符号 符号:变量 EncodingUtils
使用FileInputStream和FileOutputStream实现本地文件读写操作
还注:某些输入文件使用或覆盖了已过时的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();
}

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