android开发和Java开发差不了多少,也会有许多相同的功能。像本文提到的文件存储,在Java项目和android项目里面用到都是相同的。只是android开发的一些路径做了相应的处理。

下面就是在项目中用到的一个文件存储和读取类。

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;import android.content.Context;
import android.os.Environment;
import android.text.TextUtils;/*** 文件工具类* * @version  v 1.0.0 2015-8-22 下午10:21:03 xl Exp $*/
public class FileUtils {public File ImgCachePath;public File ImgSavePath;public File ImgSharePath;public File ApkSavePath;public File LogSavePath;public File ImgCapTempPath;public File ImgCapCutPath;public File ImgCacheDefaultPath;public static String APP_DATA_ROOT_PATH;public static String IMG_SAVE_PATH;public static String IMG_SHARE_PATH;public static String APK_INSTALL_PATH;public static String APK_LOG_PATH;public static String IMG_SAVE_PATH_CAP_TEMP;public static String IMG_SAVE_PATH_CAP_CUT;public static String IMG_CACHE_XUTILS_SDCARD_PATH;public static String IMG_CACHE_XUTILS_DEFAULT_PATH;public static String FINAL_IMAGE_PATH;public static String FINAL_TEMP_PATH;public static String SDPATH;public File XLPath;public Context mContext;private static FileUtils mInstance;public FileUtils(Context context) {mContext = context;}/*** 创建文件工具类示例* * @param context*            上下文* @return*/public static synchronized FileUtils createInstance(Context context) {if (mInstance == null) {mInstance = new FileUtils(context);mInstance.initPath();}return mInstance;}/*** 获取文件工具类实例* * @return*/public static synchronized FileUtils getInstance() {if (mInstance == null)throw new IllegalStateException("FileUtil must be create by call createInstance(Context context)");return mInstance;}/*** 初始化本地缓存路径*/public void initPath() {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {SDPATH = Environment.getExternalStorageDirectory() + "/";IMG_SAVE_PATH = SDPATH + "**/images/save/";IMG_SHARE_PATH = SDPATH + "**/images/share/";APK_INSTALL_PATH = SDPATH + "**/app/";APK_LOG_PATH = SDPATH + "**/log/";IMG_SAVE_PATH_CAP_TEMP = SDPATH + "**/images/save/capture/**_temp/";IMG_SAVE_PATH_CAP_CUT = SDPATH + "**/images/save/capture/**_cut/";IMG_CACHE_XUTILS_SDCARD_PATH = SDPATH + "**/images/cache/";// 用于保存图片缓存吧IMG_CACHE_XUTILS_DEFAULT_PATH = SDPATH + "Android/data/" + mContext.getPackageName() + "/cache/imgCache/";APP_DATA_ROOT_PATH = getAppPath() + "**/";FINAL_IMAGE_PATH = APP_DATA_ROOT_PATH + "images/";FINAL_TEMP_PATH = APP_DATA_ROOT_PATH + "temp/";XLPath= new File(APP_DATA_ROOT_PATH);if (!**.exists()) {XLPath.mkdirs();}XLPath = new File(FINAL_IMAGE_PATH);if (!XLPath.exists()) {XLPath.mkdirs();}XLPath = new File(FINAL_TEMP_PATH);if (!XLPath.exists()) {XLPath.mkdirs();}// 拍照图片保存地址ImgCapTempPath = new File(IMG_SAVE_PATH_CAP_TEMP);if (!ImgCapTempPath.exists()) {ImgCapTempPath.mkdirs();}// 裁剪后图片保存地址ImgCapCutPath = new File(IMG_SAVE_PATH_CAP_CUT);if (!ImgCapCutPath.exists()) {ImgCapCutPath.mkdirs();}// 图片保存、缓存地址ImgSavePath = new File(IMG_SAVE_PATH);if (!ImgSavePath.exists()) {ImgSavePath.mkdirs();}// 分享图片的临时保存路径ImgSharePath = new File(IMG_SHARE_PATH);if (!ImgSharePath.exists()) {ImgSharePath.mkdirs();}// 检测更新时保存路径ApkSavePath = new File(APK_INSTALL_PATH);if (!ApkSavePath.exists()) {ApkSavePath.mkdirs();}// 异常保存路径LogSavePath = new File(APK_LOG_PATH);if (!LogSavePath.exists()) {LogSavePath.mkdirs();}ImgCachePath = new File(IMG_CACHE_XUTILS_SDCARD_PATH);if (!ImgCachePath.exists()) {ImgCachePath.mkdirs();}ImgCacheDefaultPath = new File(IMG_CACHE_XUTILS_DEFAULT_PATH);if (!ImgCacheDefaultPath.exists()) {ImgCacheDefaultPath.mkdirs();}}}private String getAppPath() {LogCatLog.i(TAG, "MyApplication-getAppPath():" + mContext.getFilesDir().getParent());return mContext.getFilesDir().getParent() + "/";}/*** [将文件保存到SDcard方法]<BR>* [功能详细描述]* * @param fileName* @param inStream* @throws IOException*/public boolean saveFile2SDCard(String fileName, byte[] dataBytes) throws IOException {boolean flag = false;FileOutputStream fs = null;try {if (!TextUtils.isEmpty(fileName)) {File file = newFileWithPath(fileName.toString());if (file.exists()) {file.delete();LogCatLog.w(TAG, "httpFrame  threadName:" + Thread.currentThread().getName() + " 文件已存在 则先删除: "+ fileName.toString());}fs = new FileOutputStream(file);fs.write(dataBytes, 0, dataBytes.length);fs.flush();flag = true;}} catch (Exception e) {e.printStackTrace();} finally {if (fs != null)fs.close();}return flag;}/*** 创建一个文件,如果其所在目录不存在时,他的目录也会被跟着创建* * @author songdiyuan* @date 2015-8-24* @return*/public File newFileWithPath(String filePath) {if (TextUtils.isEmpty(filePath)) {return null;}int index = filePath.lastIndexOf(File.separator);String path = "";if (index != -1) {path = filePath.substring(0, index);if (!TextUtils.isEmpty(path)) {File file = new File(path.toString());// 如果文件夹不存在if (!file.exists() && !file.isDirectory()) {boolean flag = file.mkdirs();if (flag) {LogCatLog.i(TAG, "httpFrame  threadName:" + Thread.currentThread().getName() + " 创建文件夹成功:"+ file.getPath());} else {LogCatLog.e(TAG, "httpFrame  threadName:" + Thread.currentThread().getName() + " 创建文件夹失败:"+ file.getPath());}}}}return new File(filePath);}/*** 判断文件是否存在* * @param strPath* @return*/public boolean isExists(String strPath) {if (strPath == null) {return false;}final File strFile = new File(strPath);if (strFile.exists()) {return true;}return false;}
}

使用方法:① 判断文件是否存在

/*** 保存获取的 软件信息,设备信息和出错信息保存在SDcard中* * @param context* @param ex* @return*/private String savaInfoToSD(Context context, Throwable ex) {String fileName = null;StringBuffer sb = new StringBuffer();for (Map.Entry<String, String> entry : obtainSimpleInfo(context).entrySet()) {String key = entry.getKey();String value = entry.getValue();sb.append(key).append(" = ").append(value).append("\n");}sb.append(obtainExceptionInfo(ex));try {fileName = FileUtils.APK_LOG_PATH+ paserTime(System.currentTimeMillis()) + ".log";FileOutputStream fos = new FileOutputStream(fileName);fos.write(sb.toString().getBytes());fos.flush();fos.close();} catch (Exception e) {e.printStackTrace();}return fileName;}

② 使用方法:往指定路径下存储文件

String fileName = "***" + " " + time + "[在这里输入要存储的文件类型eg:.jpg/.pdf/.doc/.txt....]";
String path = FileUtils.APK_INSTALL_PATH + fileName;
FileUtils.getInstance().saveFile2SDCard(path, ArchData);//由于该方法是将文件已二进制数组的方式将数据存储进去,所以第二个参数里面是一个二进制数组

这个工具类里面还有其他的许多方法在工具类里面都已经进行了注释。

转载于:https://www.cnblogs.com/BobAdmin/p/4983962.html

Android FileUtil(android文件工具类)相关推荐

  1. 操作SD卡,获取文件目录及文件工具类Android,listView

    操作SD卡,获取文件目录及文件工具类Android 1.获取文件目录及文件工具类: DirectoryInfo  FileScan 1.1 DirectoryInfo: package com.gls ...

  2. folderutils.java_值得分享的超全文件工具类FileUtil

    结合以前的项目开发中遇到的不同的文件操作,在这里基本上提取出了所遇到过的文件操作的工具类. 1 我项目中用到的文件工具类 1 读取raw文件.file文件,drawable文件,asset文件,比如本 ...

  3. android 快速开发常用工具类,实例详解Android快速开发工具类总结

    一.日志工具类 Log.java public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException ...

  4. android 字体像素转换工具类_android px,dp,sp大小转换工具

    package com.voole.playerlib.util; import android.content.Context; /** * Android大小单位转换工具类 * * float s ...

  5. android 字体像素转换工具类_Android中px与dip,sp与dip等的转换工具类

    Android中px与dip,sp与dip等的转换工具类 功能 通常在代码中设置组件或文字大小只能用px,通过这个工具类我们可以把dip(dp)或sp为单位的值转换为以px为单位的值而保证大小不变.方 ...

  6. Android中对话框的工具类

    Android中对话框的工具类,里面总结了比较好用的方法,直接调用即可 public class DialogUtils {private DialogUtils() {}private static ...

  7. Android沉浸式状态栏工具类,一句代码轻松搞定

    Android沉浸式状态栏工具类,一句代码轻松搞定 博客原文及源码地址:http://jaeger.itscoder.com/android/2016/03/27/statusbar-util.htm ...

  8. Android大小单位转换工具类

    package com.utouu.im.util; /**  * Android大小单位转换工具类  *   *   */ public class DisplayUtil { /** * 将px值 ...

  9. 解决修改properties 属性文件存在缓存问题,附带操作properties文件工具类

    2019独角兽企业重金招聘Python工程师标准>>> 在做项目的时候有些数据不一定需要在数据库管理,例如数据库连接,定时任务等等的配置..有时候需要动态修改这些数据,但在修改完后, ...

最新文章

  1. 图表+笔记-python语言-第5章:数字/5.11 位操作
  2. streaming优化:spark.default.parallelism调整处理并行度
  3. 海康威视:国际化+互联网 公司迎来“第二春”
  4. MyEclipse设置像visual studio一样的智能提示
  5. CORD 4.1:打造实现边缘计算的最佳平台
  6. java中什么表示打印_在java中打印对象时会发生什么
  7. 带你玩转Logview: MaxCompute Logview参数详解和问题排查
  8. 【iOS】Touch Up Inside 和 Touch Up Outside 的区别
  9. 用python画漂亮图-使用 Python/matplotlib 画出漂亮的论文插图
  10. 砸金蛋vue插件_小程序商城系统插件代码该如何写?
  11. mysql 修改字段为主键自增_给MySQL中某表增加一个新字段,设为主键值为自动增长。...
  12. 同步时钟与异步时钟介绍
  13. 计算机硬盘图标ico,LaCie 硬盘图标
  14. PR导入视频后无声音
  15. Labview和三菱Q系列PLC通讯
  16. android中常见的异常总结
  17. HTML5设计更具有交互性的标签方法(含智能辅助设备使用的HTML5,翻译资料)
  18. 【读书札记】《北大授课》中华文化四十七讲 余秋雨
  19. 性能测试——CPU占用率的计算原理
  20. oracle导入报错ora01652,Oracle ORA-01652错误

热门文章

  1. DL开源框架Caffe | 模型微调 (finetune)的场景、问题、技巧以及解决方案
  2. ByteBuffer
  3. java Servlet学习笔记(一)
  4. windows下安装virtual box(ubuntu)
  5. 常用开源工具、框架收藏
  6. Perl 安装 模块Net::SSH2 有些0day是ssh2
  7. 2月28日云栖精选夜读 | 阿里云率先达成国家绿色数据中心标准,平均PUE低于1.3...
  8. mybatis @sqlprovider
  9. 关于 Python 列表操作,最常见问答Top10
  10. mycncart操作使用教程 - 横幅广告