• 3-SII--Android的SD卡文件读写


    零、前言

    [1]读写SD卡需要运行时权限。
    [2]如果对运行时权限不清楚的童鞋,可以看一下我的封装:TI--安卓运行时权限完美封装

    一、使用:SD卡文件读写

    FileHelper fileHelper = FileHelper.get();
    //在SD卡追加模式创建:data/writeFile2SD.txt文件,写入"toly"
    fileHelper.writeFile2SD("data/writeFile2SD.txt", "toly", true);
    //在SD卡上创建一个空文件
    fileHelper.createFile("create/create.txt");
    
    //读取data/writeFile2SD.txt文件
    String read = fileHelper.readFromSD("data/writeFile2SD.txt");
    System.out.println(read);//tolytolytolytolytolytoly
    

    二、创建文件

    判断是否存在SD卡
        /**
         * 判断是否存在SD卡
         *
         * @return 是否存在SD卡
         */
        private boolean hasSdCard() {
            return Environment.getExternalStorageState()
                    .equals(Environment.MEDIA_MOUNTED);
        }
    
    在SD卡中创建文件
        /**
         * 在SD卡中创建文件的核心代码
         *
         * @param savePath    保存的绝对路径(路径不存在会自动创建上级文件夹)
         * @param fileContent 文件内容
         * @param append      是否以追加模式
         */
        private File writeFileWithAbsolutePath(String savePath, String fileContent, boolean append) {
            FileOutputStream fos = null;
            File filePic = null;
            try {
                filePic = new File(savePath);
                if (!filePic.exists()) {
                    filePic.getParentFile().mkdirs();
                    filePic.createNewFile();
                }
                fos = append ? 
                        new FileOutputStream(savePath, true) : new FileOutputStream(savePath);
                write(fos, fileContent);
    
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                close(fos);
            }
            return filePic;
        }
        
        /**
         * 在SD卡中创建文件暴露方法
         *
         * @param filename    文件名:(形式:"XX/YY/ZZ.UU")
         * @param fileContent 文件内容
         * @param append      是否以追加模式
         */
        public File writeFile2SD(String filename, String fileContent, boolean append) {
            return writeFileWithAbsolutePath(PathUtils.getSDPath() + File.separator + filename, fileContent, append);
        }
        
        /**
         * 在SD卡中创建空文件
         *
         * @param filename 文件名
         * @return 文件对象
         */
        public File createFile(String filename) {
    
            return writeFile2SD(filename, "", false);
        }
    

    三、读取文件

        /**
         * 在SD卡中读取文件
         *
         * @param filename 文件名
         * @return 文件内容
         */
        private String readFileWithAbsolutePath(String filename) {
            String result = null;
            FileInputStream input = null;
            if (hasSdCard()) {
                try {
                    input = new FileInputStream(filename);//文件输入流
                    result = read(input);//读取InputStream
                    close(input); //关闭输入流
                } catch (IOException e) {
                    e.printStackTrace();
                    L.e(e.toString());
                } finally {
                    close(input);
                }
            }
            return result;
        }
    
        /**
         * 在SD卡中读取文件
         *
         * @param fileName 文件名
         * @return 文件内容
         */
        public String readFromSD(String fileName) {
            return readFileWithAbsolutePath(PathUtils.getSDPath() + File.separator + fileName);
        }
    
    

    后记、

    1.声明:

    [1]本文由张风捷特烈原创,转载请注明
    [2]欢迎广大编程爱好者共同交流
    [3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
    [4]你的喜欢与支持将是我最大的动力

    2.连接传送门:

    更多安卓技术欢迎访问:安卓技术栈
    我的github地址:欢迎star
    简书首发,腾讯云+社区同步更新
    张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com

    3.联系我

    QQ:1981462002
    邮箱:1981462002@qq.com

    微信:zdl1994328

    4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
    9414344-c474349cd3bd4b82.jpg
    公众号.jpg
  • 相关阅读:
    根据界面上的button增加、删除、重命名文件夹,名字是数据库下面某一表单的某一列的名字
    打包测试的过程记录
    java中return的作用
    UVA
    UVA
    UVA
    HDU
    HDU
    spring技术详解
    Java对象的生命周期与垃圾回收以及四种引用
  • 原文地址:https://www.cnblogs.com/toly-top/p/9781938.html
Copyright © 2020-2023  润新知