本文实例为大家分享了java se文件操作工具类FileUtil的具体代码,供大家参考,具体内容如下
先展示一下文件工具类中打印文件夹树形结构的结果:
代码如下:
包com.mjq.iotest; 进口java.io.File; 进口java.io.FileInputStream; 进口java.io.FileOutputStream; 进口java.io.FilenameFilter; 进口java.io.IOException; 进口java.io.InputStream; 进口java.io.OutputStream; 进口java.util.regex.Matcher; 进口java.util.regex.Pattern;/* * *练习文件API * @author管理员 * */公开课FileUtil {/* * *单例模式 *//* 私有静态FileUtil实例=零; 私人FileUtil () { } 公共静态FileUtil getInstance () { 同步(FileUtil.class) { 如果(null==) { 实例=new FileUtil (); } } 返回实例; } *//* * *创建文件/文件夹 * @param路径路径 * @return是否创建成功 * @throws例外 */公共静态布尔creatFile (String路径)抛出异常 { 如果路径(null==| | path.length ()==0) { 抛出新的异常(“路径不正确!”); } 文件文件=新文件(路径);//如果路径存在,则不创建 如果(! file.exists ()) { 如果(file.isDirectory ()) {//文件夹 file.mkdirs ();//file.mkdir ();创建单层路径file.mkdirs()可以创建多层路径 返回true; } 其他的 {//文件先创建父路径,然后再创建文件 字符串dirPath=path.substring (0, path.lastIndexOf (File.separator)); 文件dirFile=新文件(dirPath); 如果(! dirFile.exists ()) { dirFile.mkdirs (); } 文件fileFile=新文件(路径); 尝试{ fileFile.createNewFile (); 返回true; }捕捉(IOException e) {//TODO自动生成的catch块 e.printStackTrace (); } } } 其他的 { 抛出新的异常(“文件已存在!”); } 返回错误; }/* * *删除文件/文件夹及其中的所有子文件夹和文件 * @return * @throws例外 */公共静态孔隙deleteFile(字符串filePath)抛出异常 { 如果(null==filePath | | filePath.length ()==0) { 抛出新的异常(“filePath:”+ filePath +“路径不正确!”); } 文件文件=新文件(filePath); 如果(! file.exists ()) { 抛出新的异常(“filePath:”+ filePath +“文件不存在!”); } 如果(file.isFile ()) { file.delete (); } 如果(file.isDirectory ()) { 文件[]childFiles=file.listFiles (); 如果(null !=childFiles,,childFiles.length !=0) {//循环递归删除 (文件childFile: childFiles) { deleteFile (childFile.getAbsolutePath ()); } } file.delete (); } }/* * *获取文件基本信息 * @param文件 */公共静态孔隙getBaseInfo(文件文件) {//文件绝对路径文件大小文件是否是文件夹文件是否是文件文件是否可读文件是否可写文件是否可执行文件修改时间文件父目录名//文件所在分区总大小未使用大小可用大小 System.out.println(“文件基本信息如下:”); System.out.println(“文件绝对路径:”+ file.getAbsolutePath ()); System.out.println(“文件名称:“+ file.getName ()); System.out.println(“文件大小:“+ file.length ()); System.out.println(“文件是否是文件夹:”+ file.isDirectory ()); System.out.println(“文件是否是文件:”+ file.isFile ()); System.out.println(“文件是否可读:“+ file.canExecute ()); System.out.println(“文件是否可读:“+ file.canRead ()); System.out.println(“文件是否可写:“+ file.canWrite ()); System.out.println(“文件修改时间:“+ file.lastModified ()); System.out.println(“文件父目录名称:“+ file.getParent ()); System.out.println(“文件所在分区大小:“+ file.getTotalSpace ()/1024/1024 + Mb); System.out.println(“文件所在分区未使用大小:“+ file.getFreeSpace ()/1024/1024 + Mb); System.out.println(“文件所在分区可用大小:“+ file.getUsableSpace ()/1024/1024 + Mb); System.out.println(“文件夹结构如下图:”); 尝试{ printFileStructure(文件,1); }捕捉(异常e) {//TODO自动生成的catch块 e.printStackTrace (); } }/* * *打印文件路径 * @param文件 * @param deepth * @throws例外 */公共静态孔隙printFileStructure(文件文件,int deepth)抛出异常 { 如果(! file.exists ()) { 抛出新的异常(“文件路径不存在!”); } 如果(! file.isHidden ()) { 如果(file.isFile ()) {//直接打印 printFile(文件,deepth); 返回; } 如果(file.isDirectory ()) {//先打印自身,然后递归打印子文件夹和子文件 printFile(文件,deepth); 文件[]childFiles=file.listFiles (); 如果(null !=childFiles,,childFiles.length> 0) { deepth + +; (文件childFile: childFiles) { printFileStructure (childFile deepth); } } } } }/* * *打印文件夹树形结构 * @param文件 * @param deepth */公共静态孔隙printFile(文件文件,int deepth) { 字符串名称=file.getName (); StringBuffer某人=new StringBuffer (); StringBuffer tempSb=new StringBuffer (); for (int i=0; ijava se文件操作工具类FileUtil详解