美文网首页
Android 写入数据到本地[2023-03-14]

Android 写入数据到本地[2023-03-14]

作者: 努力奔跑的小男孩 | 来源:发表于2023-03-13 16:11 被阅读0次
package com.example.circleringpro;

import android.content.Context;
import android.icu.text.SimpleDateFormat;
import android.icu.util.Calendar;
import android.os.Build;
import android.util.Log;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;

public class YYFileManager {
    private volatile static YYFileManager uniqueInstance;
    private Context mContext;
    private static String filePath;
    private static String fileName;


    private YYFileManager(Context context) {
        mContext = context;
        filePath = context.getExternalFilesDir(null).getAbsolutePath() + "/test_abc";
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            try {
                SimpleDateFormat fdate = new SimpleDateFormat("yyyyMMdd_HHmmss");
                fileName = fdate.format(Calendar.getInstance().getTime()) + ".csv";
            } catch (Exception e) {
                SimpleDateFormat fdate = new SimpleDateFormat("yyyyMMdd_HHmmss");
                fileName = fdate.format(new Date().getTime() + ".txt");
            }
        } else {
            fileName = String.valueOf(new Date().getTime()) + ".txt";
        }
    }

    public static YYFileManager getInstance(Context context) {
        if (uniqueInstance == null) {
            synchronized (YYFileManager.class) {
                if (uniqueInstance == null) {
                    uniqueInstance = new YYFileManager(context);
                }
            }
        }
        return uniqueInstance;
    }


    /*写数据*/
    public boolean writeLogData(String logStr) {
        boolean flag = false;
        String timeStr = "";
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            Calendar c = Calendar.getInstance();
            SimpleDateFormat fdate = new SimpleDateFormat("dd_HH:mm:ss.SSS");
            timeStr = fdate.format(c.getTime());
        } else {
            timeStr = String.valueOf(new Date().getTime());
        }


        //先实例化一个file对象,参数为路径名
        File file = new File(filePath + "/" + fileName);
        try {
            if (file.exists()) { // 已经存在 直接写入文件
                FileWriter write = new FileWriter(file, true);
                BufferedWriter bufferedWriter = new BufferedWriter(write);
                bufferedWriter.write((timeStr+","+logStr));
                bufferedWriter.newLine();//换行
                bufferedWriter.flush();
                write.close();
                bufferedWriter.close();
                flag = true;
            } else {
                Log.e(TAG, "不存在 创建文件");
                file = new File(filePath);
                try {
                    boolean createDirFlag = file.mkdirs();// 创建文件夹
                    Log.e(TAG, "createDirFlag:" + createDirFlag);
                    flag = createDirFlag;
                } catch (Exception e) {
                    Log.e(TAG, "dir_exc:" + e.toString());
                    flag = false;
                }
                try {
                    file = new File(filePath + "/" + fileName);
                    boolean createFileFlag = file.createNewFile();//创建文件
                    flag = createFileFlag;
                    Log.e(TAG, "createFileFlag:" + createFileFlag);
                } catch (Exception e) {
                    flag = false;
                    Log.e(TAG, "file_exc:" + e.toString());
                }
                // 写入文件
                FileWriter write = new FileWriter(file, true);
                BufferedWriter bufferedWriter = new BufferedWriter(write);
                bufferedWriter.write((timeStr+","+logStr));
                bufferedWriter.newLine();//换行
                bufferedWriter.flush();
                write.close();
                bufferedWriter.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
            flag = false;
        }
        return flag;
    }

}

如何使用

YYFileManager fileManager = YYFileManager.getInstance(this);
boolean flag = fileManager.writeLogData("222");
Log.e(TAG, "flag=" + flag);

相关文章

网友评论

      本文标题:Android 写入数据到本地[2023-03-14]

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