美文网首页
Android数据存储,数据持久化(一)-------文件存储

Android数据存储,数据持久化(一)-------文件存储

作者: 小_番茄 | 来源:发表于2018-07-18 18:05 被阅读0次

Android系统主要提供了3种方式,提供数据持久化存储

  • 文件存储
  • sharedpreference存储
  • 数据库存储

文件存储

不对数据进行任何格式化处理,适合存储一些简单的文本数据或二进制数据。

第一步:创建文件管理类
public class FileUtils {


    /**
     * 保存数据到文件
     *
     * @param context  上下文
     * @param fileName 要存储的文件名
     * @param mode     文件的操作模式例如Context.MODE_APPEND 如果文件不存在就创建,如果存在就在原来基础上追加新内容
     *                 Context.MODE_PRIVATE如果文件不存在就创建,如果存在就覆盖
     * @param datas    存储的数据
     */
    public static void saveData2File(Context context, String fileName, int mode, String datas) {
        FileOutputStream outputStream;
        BufferedWriter writer = null;
        try {
            outputStream = context.openFileOutput(fileName, mode);
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
            writer = new BufferedWriter(outputStreamWriter);
            writer.write(datas);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != writer) {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    /**
     * 获取文件内容
     *
     * @param context  上下文
     * @param fileName 文件名
     * @return
     */
    public static String getDataFromFile(Context context, String fileName) {
        FileInputStream fileInputStream;
        BufferedReader reader = null;
        InputStreamReader inputStreamReader;
        StringBuffer content = new StringBuffer();

        try {
            fileInputStream = context.openFileInput(fileName);
            inputStreamReader = new InputStreamReader(fileInputStream);
            reader = new BufferedReader(inputStreamReader);
            String line = "";
            if ((line = reader.readLine()) != null) {
                content.append(line);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != reader) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        String fileResult = content.toString();
        Log.i("path", fileResult);
        return fileResult;
    }


    /**
     * 删除文件
     *
     * @param fileName 带文件路径的文件名
     * @return
     */
    public static boolean deletFile(String fileName) {
        File file = new File(fileName);
        // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
        if (file.exists() && file.isFile()) {
            if (file.delete()) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }

    }


    /**
     * 文件是否存在
     *
     * @param filePath 带完整文件路径的文件名称
     * @return
     */
    public static boolean isFileExists(String filePath) {
        try {
            File file = new File(filePath);
            if (file.exists()) {
                return true;
            }
        } catch (Exception e) {
            return false;
        }
        return false;


    }

    /**
     * 获取通过上面的saveData2File保存的文件路径
     *
     * @param context 上下文
     * @return
     */
    public static String getFilePath(Context context) {
        String absolutePath = context.getFilesDir().getAbsolutePath();
        Log.i("absolutePath", absolutePath);
        return absolutePath;
    }


}
第二步:使用
public class StorageActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_storage);
        findViewById(R.id.saveData).setOnClickListener(this);
        findViewById(R.id.getData).setOnClickListener(this);
        findViewById(R.id.getFilePath).setOnClickListener(this);
        findViewById(R.id.isFileExists).setOnClickListener(this);
        findViewById(R.id.deleteFile).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.saveData:
                FileUtils.saveData2File(this, "tomato.txt", Context.MODE_PRIVATE, "lalala");
                break;
            case R.id.getData:
                FileUtils.getDataFromFile(this, "tomato.txt");
                break;
            case R.id.getFilePath:
                FileUtils.getFilePath(this);
                break;
            case R.id.isFileExists:
                String filePath = FileUtils.getFilePath(this);
                FileUtils.isFileExists(filePath + "/tomato.txt");
                break;
            case R.id.deleteFile:
                String filePath1 = FileUtils.getFilePath(this);
                FileUtils.deletFile(filePath1+"/tomato.txt");
                break;

        }
    }
}

相关文章

网友评论

      本文标题:Android数据存储,数据持久化(一)-------文件存储

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