安卓开发文件工具类

更新时间:2020-06-05 15:21:51

image.png

今天在修复某个bug时,需要在应用内部存储,只需要一个开关就可以了,所以选择在应用内的存储空间中写入一个status.txt,内容写入0和1,本来是写死的代码,但是后来又在一个地方需要用到同样的功能,所以把它提出来单列了一个工具类,一个存储、一个读取。


以下为代码:

import android.content.Context;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * 应用内空间的文件工具类
 */
public class MyFileUtils {


    /**
     * 写入文件方法
     *
     * @param context
     * @param fileName
     * @param i        三个参数
     *                 1.上下文
     *                 2.文件名称
     *                 3.内容
     */
    public static void saveFile(Context context, String fileName, String i) {
        FileOutputStream out = null;
        BufferedWriter writer = null;
        try {
            out = context.getApplicationContext().openFileOutput(fileName, Context.MODE_PRIVATE);
            writer = new BufferedWriter(new OutputStreamWriter(out, "utf-8"));
            writer.write(i);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (writer != null) {
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

    /**
     * 读取文件方法
     *
     * @param context
     * @param fileName
     * @return 两个参数
     * 1.上下文
     * 2.文件名
     */
    public static String MyLoadFile(Context context, String fileName) {
        FileInputStream in = null;
        BufferedReader reader = null;
        StringBuilder content = new StringBuilder();
        try {
            in = context.getApplicationContext().openFileInput(fileName);
            reader = new BufferedReader(new InputStreamReader(in));
            String line = "";
            while ((line = reader.readLine()) != null) {
                content.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return content.toString();
    }
}

文件名就是:MyFileUtil.java

写入的时候需要传入三个参数、读取的时候传入两个参数。

做一下笔记,以后再用到的话可以直接copy了。


其他:

由于我只是写入一个0或者1,所以之前我有试了直接append一个int 0或者1,一直出现乱码,当然我没有想过这方面的原因,所以各种查找安卓写入文件乱码、java写入文件乱码,当然结果也是没有找到,于是慢慢排查自己的代码,发现直接append了一个int型,于是我抱着试一试的态度写入了一个"1",字符串类型的,完美!!!所以,很多时候出现问题还是仔细看自己的代码吧。