本文共 2992 字,大约阅读时间需要 9 分钟。
[1]读写SD卡需要运行时权限。
[2]如果对运行时权限不清楚的童鞋,可以看一下我的封装:
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卡 * * @return 是否存在SD卡 */ private boolean hasSdCard() { return Environment.getExternalStorageState() .equals(Environment.MEDIA_MOUNTED); }
/** * 在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]本文由张风捷特烈原创,转载请注明
[2]欢迎广大编程爱好者共同交流 [3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正 [4]你的喜欢与支持将是我最大的动力
QQ:1981462002
邮箱:
微信:zdl1994328