Android【File文件存储工具类】

Android【File文件存储工具类】

最近写项目用到了文件存储,当需要频繁的存储操作的时候,文件存储性能方面远大于SharedPreferences 。

工具类复制可用

public class FileUtils {
   

    // 将字符串写入到文本文件中
    public static void writeTxtToFile(String strcontent, String filePath, String fileName) {
   
        //生成文件夹之后,再生成文件,不然会出错
        makeFilePath(filePath, fileName);
        String strFilePath = filePath + fileName;
        // 每次写入时,都换行写
        String strContent = strcontent + "\n";
        try {
   
            File file = new File(strFilePath);
            if (!file.exists()) {
   
                Log.d("TestFile", "Create the file:" + strFilePath);
                file.getParentFile().mkdirs();
                file.createNewFile();
            }
            RandomAccessFile raf = new RandomAccessFile(file, "rwd");
            raf.seek(file.length());
            raf.write(strContent.getBytes());
            raf.close();
        } catch (Exception e) {
   
            ToastUtils.show("请检查存储权限");
        }
    }

    //生成文件
    public static File makeFilePath(String filePath, String fileName) {
   
        File file = null;
        makeRootDirectory(filePath);
        try {
   
            file = new File(filePath + fileName);
            if (!file.exists()) {
   
                file.createNewFile();
            }
        } catch (Exception e) {
   
            e.printStackTrace();
        }
        return file;
    }

    //生成文件夹
    public static void makeRootDirectory(String filePath) {
   
        File file = null;
        try {
   
            file = new File(filePath);
            if (!file.exists()) {
   
                file.mkdir();
            }
        } catch (Exception e) {
   
            Log.i("error:", e + "");
        }
    }

    //读取指定目录下的所有TXT文件的文件内容
    public static String getFileContent(File file) {
   
        String content = "";
        if (!file.isDirectory()) {
     //检查此路径名的文件是否是一个目录(文件夹)
            if (file.getName().endsWith("txt")) {
   //文件格式为""文件
                try {
   
                    InputStream instream = new FileInputStream(file);
                    if (instream != null) {
   
                        InputStreamReader inputreader
                                = new InputStreamReader(instream, "UTF-8");
                        BufferedReader buffreader = new BufferedReader(inputreader);
                        String line = "";
                        //分行读取
                        while ((line = buffreader.readLine()) != null) {
   
                            content += line + "";
                        }
                        instream.close();//关闭输入流
                    }
                } catch (java.io.FileNotFoundException e) {
   
                    Log.d("TestFile", "The File doesn't not exist.");
                } catch (IOException e) {
   
                    Log.d("TestFile", e.getMessage());
                }
            }
        }
        return content;
    }

    public static void DeleteFile(String path) {
   
        File file = new File(path);
        if (file.exists()) {
   
            file.deleteOnExit();
        }
    }

    public static void updateText(String strcontent, String filePath, String fileName) {
   
        makeFilePath(filePath, fileName);
        String strFilePath = filePath + fileName;
        String strContent = strcontent;
        try {
   
            File file = new File(strFilePath);
            if (!file.exists()) {
   
                file.getParentFile().mkdirs();
                file.createNewFile();
            }
            //写入的txt文档的路径
            PrintWriter pw = new PrintWriter(strFilePath);
            //写入的内容
            pw.write(strContent);
            pw.flush();
            pw.close();
        } catch (Exception e) {
   
            ToastUtils.show("请检查存储权限");
        }
    }

    /** * 读取changedata请求的id * @return 请求的id */
    public static String getXctId() {
   
        String id = getFileContent(new File("/sdcard/xct/id.txt"));
        return TextUtils.isEmpty(id) ? "0" : id;
    }

    /** * 保存changedata的id * @param id */
    public static void saveId(String id) {
   
        updateText(id, "/sdcard/xct/", "id.txt");
    }

    /** * 保存广告 * @param advertStr */
    public static void saveAdvert(String advertStr){
   
        updateText(advertStr, "/sdcard/xct/", "advert.txt");
    }

    /** * 读取广告数据 * @return */
    public static String getAdvert() {
   
        String advert = getFileContent(new File("/sdcard/xct/advert.txt"));
        return advert==null? "":advert;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2813.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mac电脑 datagrip 激活码_通用破解码

    mac电脑 datagrip 激活码_通用破解码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • C# winform 界面美化技巧(扁平化设计)

    C# winform 界面美化技巧(扁平化设计)C#winform界面美化技巧(扁平化设计)关于C#界面美化的一些小技巧在不使用第三方控件如IrisSkin的前提下,依然可以对winform做出让人眼前一亮的美化首先,我们先来实现主界面的扁平化此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件。将主窗体FormBorderStyle更改为None,这样就得到了一个无边框的窗体(w…

  • 5大优秀黑客必逛技术网站

    5大优秀黑客必逛技术网站5大优秀黑客必逛技术网站HackForums最理想的黑客技术学习技术根据地,也适用于开发人员游戏开发者,程序员,图形设计师以及网络营销人士HackThisSite提供合法而安全的网络安全资源,可以通过·各类挑战题目测试自己的黑客技能EnilZone一个专门面向黑科群体的论坛,其中也涉及科学,编程以及艺术等领域的内容Exploit-DB提供一整套庞大的归档体…

  • sntp服务器位置,sntp的服务器地址

    sntp服务器位置,sntp的服务器地址sntp的服务器地址内容精选换一换介绍常见的安全组配置示例。如下示例中,出方向默认全通,仅介绍入方向规则配置方法。不同安全组内的云耀云服务器内网互通仅允许特定IP地址远程连接云耀云服务器SSH远程连接Linux云耀云服务器RDP远程连接Windows云服务器公网ping云耀云服务器云耀云服务器作Web服务器云耀云服务器作DNS服务器使用FTP上传或下载文件场景举例:在介绍常见的安全组配置示例…

    2022年10月27日
  • [ACM] POJ 1442 Black Box (堆,优先队列)

    [ACM] POJ 1442 Black Box (堆,优先队列)

  • java内存模型_简述java内存模型

    java内存模型_简述java内存模型  什么是JMM  JMM即为JAVA内存模型(javamemorymodel)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。JMM从java5开始的JSR-133发布后,已经…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号