像本文提到的文件存储

原文
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() &amp;&amp; !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;
  }
}

应用方式:壹肯定文件是还是不是存在“`java /* \ 保存获取的
软件音讯,设备消息和失误音信保存在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; }

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

其壹工具类里面还应该有其它的大队人马方法在工具类里面都早就拓展了讲授。

相关文章