«

工具类(2)文件操作工具类

时间:2024-3-2 18:07     作者:韩俊     分类: Android


这些工具类是由开源项目中获取得到


public class FileUtils {

/**<br />
  • 写文本文件 在Android系统中,文件保存在 /data/data/PACKAGE_NAME/files 目录下

  • @param context
  • @param msg

    */

    public static void write(Context context, String fileName, String content) {

    if (content == null)

    content = "";

    try {

    FileOutputStream fos = context.openFileOutput(fileName,

    Context.MODE_PRIVATE);

    fos.write(content.getBytes());





    fos.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    }





    /**
  • 读取文本文件

  • @param context
  • @param fileName
  • @return

    */

    public static String read(Context context, String fileName) {

    try {

    FileInputStream in = context.openFileInput(fileName);

    return readInStream(in);

    } catch (Exception e) {

    e.printStackTrace();

    }

    return "";

    }





    public static String readInStream(InputStream inStream) {

    try {

    ByteArrayOutputStream outStream = new ByteArrayOutputStream();

    byte[] buffer = new byte[512];

    int length = -1;

    while ((length = inStream.read(buffer)) != -1) {

    outStream.write(buffer, 0, length);

    }

    outStream.close();

    inStream.close();

    return outStream.toString();

    } catch (IOException e) {

    Log.i("FileTest", e.getMessage());

    }

    return null;

    }





    public static File createFile(String folderPath, String fileName) {

    File destDir = new File(folderPath);

    if (!destDir.exists()) {

    destDir.mkdirs();

    }

    return new File(folderPath, fileName + fileName);

    }





    /**
  • 向手机写图片

  • @param buffer
  • @param folder
  • @param fileName
  • @return

    */

    public static boolean writeFile(byte[] buffer, String folder,

    String fileName) {

    boolean writeSucc = false;





    boolean sdCardExist = Environment.getExternalStorageState().equals(

    android.os.Environment.MEDIA_MOUNTED);





    String folderPath = "";

    if (sdCardExist) {

    folderPath = Environment.getExternalStorageDirectory()

    + File.separator + folder + File.separator;

    } else {

    writeSucc = false;

    }





    File fileDir = new File(folderPath);

    if (!fileDir.exists()) {

    fileDir.mkdirs();

    }





    File file = new File(folderPath + fileName);

    FileOutputStream out = null;

    try {

    out = new FileOutputStream(file);

    out.write(buffer);

    writeSucc = true;

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    try {

    out.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }





    return writeSucc;

    }





    /**
  • 根据文件绝对路径获取文件名

  • @param filePath
  • @return

    */

    public static String getFileName(String filePath) {

    if (StringUtils.isEmpty(filePath))

    return "";

    return filePath.substring(filePath.lastIndexOf(File.separator) + 1);

    }





    /**
  • 根据文件的绝对路径获取文件名但不包含扩展名

  • @param filePath
  • @return

    */

    public static String getFileNameNoFormat(String filePath) {

    if (StringUtils.isEmpty(filePath)) {

    return "";

    }

    int point = filePath.lastIndexOf('.');

    return filePath.substring(filePath.lastIndexOf(File.separator) + 1,

    point);

    }





    /**
  • 获取文件扩展名

  • @param fileName
  • @return

    */

    public static String getFileFormat(String fileName) {

    if (StringUtils.isEmpty(fileName))

    return "";





    int point = fileName.lastIndexOf('.');

    return fileName.substring(point + 1);

    }





    /**
  • 获取文件大小

  • @param filePath
  • @return

    */

    public static long getFileSize(String filePath) {

    long size = 0;





    File file = new File(filePath);

    if (file != null && file.exists()) {

    size = file.length();

    }

    return size;

    }





    /**
  • 获取文件大小

  • @param size
  • 字节
  • @return

    */

    public static String getFileSize(long size) {

    if (size <= 0)

    return "0";

    java.text.DecimalFormat df = new java.text.DecimalFormat("##.##");

    float temp = (float) size / 1024;

    if (temp >= 1024) {

    return df.format(temp / 1024) + "M";

    } else {

    return df.format(temp) + "K";

    }

    }





    /**
  • 转换文件大小

  • @param fileS
  • @return B/KB/MB/GB

    */

    public static String formatFileSize(long fileS) {

    java.text.DecimalFormat df = new java.text.DecimalFormat("#.00");

    String fileSizeString = "";

    if (fileS < 1024) {

    fileSizeString = df.format((double) fileS) + "B";

    } else if (fileS < 1048576) {

    fileSizeString = df.format((double) fileS / 1024) + "KB";

    } else if (fileS < 1073741824) {

    fileSizeString = df.format((double) fileS / 1048576) + "MB";

    } else {

    fileSizeString = df.format((double) fileS / 1073741824) + "G";

    }

    return fileSizeString;

    }





    /**
  • 获取目录文件大小

  • @param dir
  • @return

    */

    public static long getDirSize(File dir) {

    if (dir == null) {

    return 0;

    }

    if (!dir.isDirectory()) {

    return 0;

    }

    long dirSize = 0;

    File[] files = dir.listFiles();

    for (File file : files) {

    if (file.isFile()) {

    dirSize += file.length();

    } else if (file.isDirectory()) {

    dirSize += file.length();

    dirSize += getDirSize(file); // 递归调用继续统计

    }

    }

    return dirSize;

    }





    /**
  • 获取目录文件个数

  • @param f
  • @return

    */

    public long getFileList(File dir) {

    long count = 0;

    File[] files = dir.listFiles();

    count = files.length;

    for (File file : files) {

    if (file.isDirectory()) {

    count = count + getFileList(file);// 递归

    count--;

    }

    }

    return count;

    }





    public static byte[] toBytes(InputStream in) throws IOException {

    ByteArrayOutputStream out = new ByteArrayOutputStream();

    int ch;

    while ((ch = in.read()) != -1) {

    out.write(ch);

    }

    byte buffer[] = out.toByteArray();

    out.close();

    return buffer;

    }





    /**
  • 检查文件是否存在

  • @param name
  • @return

    */

    public static boolean checkFileExists(String name) {

    boolean status;

    if (!name.equals("")) {

    File path = Environment.getExternalStorageDirectory();

    File newPath = new File(path.toString() + name);

    status = newPath.exists();

    } else {

    status = false;

    }

    return status;

    }





    /**
  • 检查路径是否存在

  • @param path
  • @return

    */

    public static boolean checkFilePathExists(String path) {

    return new File(path).exists();

    }





    /**
  • 计算SD卡的剩余空间

  • @return 返回-1,说明没有安装sd卡

    /

    public static long getFreeDiskSpace() {

    String status = Environment.getExternalStorageState();

    long freeSpace = 0;

    if (status.equals(Environment.MEDIA_MOUNTED)) {

    try {

    File path = Environment.getExternalStorageDirectory();

    StatFs stat = new StatFs(path.getPath());

    long blockSize = stat.getBlockSize();

    long availableBlocks = stat.getAvailableBlocks();

    freeSpace = availableBlocks
    blockSize / 1024;

    } catch (Exception e) {

    e.printStackTrace();

    }

    } else {

    return -1;

    }

    return (freeSpace);

    }





    /**
  • 新建目录

  • @param directoryName
  • @return

    */

    public static boolean createDirectory(String directoryName) {

    boolean status;

    if (!directoryName.equals("")) {

    File path = Environment.getExternalStorageDirectory();

    File newPath = new File(path.toString() + directoryName);

    status = newPath.mkdir();

    status = true;

    } else

    status = false;

    return status;

    }





    /**
  • 检查是否安装SD卡

  • @return

    */

    public static boolean checkSaveLocationExists() {

    String sDCardStatus = Environment.getExternalStorageState();

    boolean status;

    if (sDCardStatus.equals(Environment.MEDIA_MOUNTED)) {

    status = true;

    } else

    status = false;

    return status;

    }



    /**
  • 检查是否安装外置的SD卡

  • @return

    */

    public static boolean checkExternalSDExists() {



    Map<String, String> evn = System.getenv();

    return evn.containsKey("SECONDARY_STORAGE");

    }





    /**
  • 删除目录(包括:目录里的所有文件)

  • @param fileName
  • @return

    */

    public static boolean deleteDirectory(String fileName) {

    boolean status;

    SecurityManager checker = new SecurityManager();



    if (!fileName.equals("")) {





    File path = Environment.getExternalStorageDirectory();

    File newPath = new File(path.toString() + fileName);

    checker.checkDelete(newPath.toString());

    if (newPath.isDirectory()) {

    String[] listfile = newPath.list();

    // delete all files within the specified directory and then

    // delete the directory

    try {

    for (int i = 0; i < listfile.length; i++) {

    File deletedFile = new File(newPath.toString() + "/"

    + listfile[i].toString());

    deletedFile.delete();

    }

    newPath.delete();

    Log.i("DirectoryManager deleteDirectory", fileName);

    status = true;

    } catch (Exception e) {

    e.printStackTrace();

    status = false;

    }





    } else

    status = false;

    } else

    status = false;

    return status;

    }





    /**
  • 删除文件

  • @param fileName
  • @return

    */

    public static boolean deleteFile(String fileName) {

    boolean status;

    SecurityManager checker = new SecurityManager();





    if (!fileName.equals("")) {





    File path = Environment.getExternalStorageDirectory();

    File newPath = new File(path.toString() + fileName);

    checker.checkDelete(newPath.toString());

    if (newPath.isFile()) {

    try {

    Log.i("DirectoryManager deleteFile", fileName);

    newPath.delete();

    status = true;

    } catch (SecurityException se) {

    se.printStackTrace();

    status = false;

    }

    } else

    status = false;

    } else

    status = false;

    return status;

    }





    /**
  • 删除空目录

  • 返回 0代表成功 ,1 代表没有删除权限, 2代表不是空目录,3 代表未知错误

  • @return

    */

    public static int deleteBlankPath(String path) {

    File f = new File(path);

    if (!f.canWrite()) {

    return 1;

    }

    if (f.list() != null && f.list().length > 0) {

    return 2;

    }

    if (f.delete()) {

    return 0;

    }

    return 3;

    }





    /**
  • 重命名

  • @param oldName
  • @param newName
  • @return

    */

    public static boolean reNamePath(String oldName, String newName) {

    File f = new File(oldName);

    return f.renameTo(new File(newName));

    }





    /**
  • 删除文件

  • @param filePath

    */

    public static boolean deleteFileWithPath(String filePath) {

    SecurityManager checker = new SecurityManager();

    File f = new File(filePath);

    checker.checkDelete(filePath);

    if (f.isFile()) {

    Log.i("DirectoryManager deleteFile", filePath);

    f.delete();

    return true;

    }

    return false;

    }



    /**
  • 清空一个文件夹
  • @param files

    */

    public static void clearFileWithPath(String filePath) {

    List<File> files = FileUtils.listPathFiles(filePath);

    if (files.isEmpty()) {

    return;

    }

    for (File f : files) {

    if (f.isDirectory()) {

    clearFileWithPath(f.getAbsolutePath());

    } else {

    f.delete();

    }

    }

    }





    /**
  • 获取SD卡的根目录

  • @return

    */

    public static String getSDRoot() {



    return Environment.getExternalStorageDirectory().getAbsolutePath();

    }



    /**
  • 获取手机外置SD卡的根目录

  • @return

    */

    public static String getExternalSDRoot() {



    Map<String, String> evn = System.getenv();



    return evn.get("SECONDARY_STORAGE");

    }





    /**
  • 列出root目录下所有子目录

  • @param path
  • @return 绝对路径

    */

    public static List<String> listPath(String root) {

    List<String> allDir = new ArrayList<String>();

    SecurityManager checker = new SecurityManager();

    File path = new File(root);

    checker.checkRead(root);

    // 过滤掉以.开始的文件夹

    if (path.isDirectory()) {

    for (File f : path.listFiles()) {

    if (f.isDirectory() && !f.getName().startsWith(".")) {

    allDir.add(f.getAbsolutePath());

    }

    }

    }

    return allDir;

    }



    /**
  • 获取一个文件夹下的所有文件
  • @param root
  • @return

    */

    public static List<File> listPathFiles(String root) {

    List<File> allDir = new ArrayList<File>();

    SecurityManager checker = new SecurityManager();

    File path = new File(root);

    checker.checkRead(root);

    File[] files = path.listFiles();

    for (File f : files) {

    if (f.isFile())

    allDir.add(f);

    else

    listPath(f.getAbsolutePath());

    }

    return allDir;

    }





    public enum PathStatus {

    SUCCESS, EXITS, ERROR

    }





    /**
  • 创建目录

  • @param path

    */

    public static PathStatus createPath(String newPath) {

    File path = new File(newPath);

    if (path.exists()) {

    return PathStatus.EXITS;

    }

    if (path.mkdir()) {

    return PathStatus.SUCCESS;

    } else {

    return PathStatus.ERROR;

    }

    }





    /**
  • 截取路径名

  • @return

    */

    public static String getPathName(String absolutePath) {

    int start = absolutePath.lastIndexOf(File.separator) + 1;

    int end = absolutePath.length();

    return absolutePath.substring(start, end);

    }



    /**
  • 获取应用程序缓存文件夹下的指定目录
  • @param context
  • @param dir
  • @return

    */

    public static String getAppCache(Context context, String dir) {

    String savePath = context.getCacheDir().getAbsolutePath() + "/" + dir + "/";

    File savedir = new File(savePath);

    if (!savedir.exists()) {

    savedir.mkdirs();

    }

    savedir = null;

    return savePath;

    }

    }

标签: android

热门推荐