今天在修复某个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",字符串类型的,完美!!!所以,很多时候出现问题还是仔细看自己的代码吧。