package net.oschina.app.util; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; import android.content.Context; import android.os.Environment; import android.os.StatFs; import android.util.Log; /** * 文件操作工具包 * * @author liux (http://my.oschina.net/liux) * @version 1.0 * @created 2012-3-21 */ public class FileUtil { /** * 写文本文件 在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 emojiFragment * @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(); 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 = FileUtil.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; } }
相关推荐
在Java编程中,`FileUtil`通常是一个自定义的工具类,用于封装常见的文件操作,以便在项目中方便地处理文件。这个类可以提供一系列静态方法,帮助开发者执行读写文件、创建、删除、移动、复制文件等任务,极大地提高...
* FileUtil. Simple file operation class. * * @author BeanSoft * */ public class FileUtil { /** * The buffer. */ protected static byte buf[] = new byte[1024]; /** * Read content from ...
在IT领域,文件操作是日常开发中的重要环节。"FileUtil"是一个基于Qt框架的库,专门用于处理各种类型的文件,包括CSV、DBF、Excel、INI、JSON和XML等。下面将详细介绍这些文件格式以及如何使用Qt进行操作。 1. CSV...
在本例中,我们关注的是名为`FileUtil`的工具类,它包含了多个与文件操作相关的静态方法。以下是对`FileUtil`类及其相关知识点的详细解释: 1. **环境检查**: 在进行SD卡操作之前,`FileUtil`会检查SD卡是否已...
1. **文件操作**:`FileUtil`类可能会有用于创建新文件的方法,如`createFile(String filePath)`,这个方法会根据指定的路径创建一个新的文件。此外,还可能包含删除文件的方法,如`deleteFile(String filePath)`,...
"C++文件操作工具类"是一个专门为C++开发者设计的实用工具,它简化了对文件进行读写、创建、删除等操作的过程。 首先,我们要理解C++中的文件操作基本概念。C++通过标准库中的`fstream`头文件提供了一套接口,允许...
文件工具类FileUtil是一个专门为Android开发提供帮助的实用类,它能够简化对文件的操作,使得开发者能更专注于业务逻辑,而不必重复编写文件操作的代码。下面详细介绍FileUtil中包含的一些关键功能点: 1. 读取raw...
"FileUtil"是一个Java工具类库,用于处理与文件操作相关的任务。在Java开发中,文件操作是一项常见的任务,例如读取、写入、移动、复制文件等。FileUtil类通常封装了这些基本操作,提供了更简洁、易用的API,以减少...
`FileUtil`工具类集合了多种文件操作功能,为开发者提供了一站式的解决方案。下面将详细介绍这个工具类中涉及的关键知识点。 首先,文件大小转换是一个常见的需求,特别是在处理大文件时。`FileUtil`可能包含了将...
这些工具类分别用于Base64编码解码、文件操作、JSON数据处理以及HTTP请求。下面将详细介绍这四个工具类的主要功能和使用场景。 1. Base64Util Base64是一种常见的数据编码方式,常用于在网络上传输二进制数据。Base...
结合这两个组件,我们可以创建一个健壮且灵活的应用,其中`ExceptionBean`确保了异常处理的统一性和专业性,而`FileUtil`则简化了文件操作。在Spring环境中,它们可以通过依赖注入轻松地被其他服务或控制器使用,...
"很多"暗示了这个工具包可能涵盖了多个领域的功能,比如字符串处理、日期时间操作、集合操作等。而"希望喜欢 多多支持"则表达了作者希望得到社区的认可和支持的愿望。 从标签来看,"java"和"工具"两个关键词进一步...
这里提到的"ArrayUtil+DateUtil+FileUtil+ReguUtil+StringUtil"是五个这样的工具包,它们分别针对数组操作、日期处理、文件操作、正则表达式匹配和字符串操作提供了一系列便利的方法。 1. **ArrayUtil**: - **...
在Java编程语言中,文件操作是一项基础且重要的任务。这篇博文主要探讨了如何使用Java进行常见的...对于实际项目开发,编写一个`FileUtil`工具类是非常常见的做法,这样可以将文件操作封装起来,便于代码的复用和维护。
具体到`resource`解压到本地,这可能是Hutool提供了文件操作相关的工具,例如`FileUtil`类,能够帮助开发者方便地进行文件的读写、复制、删除、解压缩等操作。对于学习者来说,这不仅是一个使用工具,也是一个学习...
这个类通常是为了提供更方便的文件操作方法,比如上述的复制、删除等。这些方法可能是静态的,可以直接通过类名调用,如`FileUtils.copyDirectory()`。 总的来说,Java的`File`类提供了丰富的文件和目录操作接口,...
【描述】:“基于PHP的工具包 一些操作封装.zip”的描述虽然简洁,但暗示了它可能包含了对文件操作、数据库交互、字符串处理、日期时间操作、网络请求等多种常见功能的封装。这样的工具包通常会提供统一的接口,使得...
4. **代码中使用FileUtil**:在自定义的MapReduce代码中,可以使用FileUtil类进行文件操作。例如,使用`FileUtils.copyPathToLocalFile()`方法将HDFS上的文件复制到本地,或者`FileUtils.copyFileToDirectory()`将...
在实际开发中,为了提高代码的可读性和可维护性,开发者通常会封装一套文件操作的工具类,如`FileUtil`。`FileUtil`类可能包含上述`File`类方法的便捷调用,还可能提供更高级的功能,如文件的读写、复制、移动、...