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

作者: e4e52c116681 | 来源:发表于2018-08-26 11:02 被阅读4次

    零、前言

    [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);
        }
    
    

    本文由张风捷特烈原创,转载请注明
    更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94
    张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
    你的喜欢与支持将是我最大的动力

    相关文章

      网友评论

        本文标题:3-SII--Android的SD卡文件读写

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