java的File的工具类

转载 2013年12月02日 10:30:41

包括

void listDirectory(File dir):列出指定目录下(包括其子目录)的所有文件,打印在控制台

void deleteDirectory(File dir):删除指定目录及其包含的所有内容

List<File> listFile(File dir,final String[] extensions, boolean recursive): 列出指定目录下指定扩展名的所有文件

List<File> listFile(File dir, final String filename, boolean recursive):列出文件名为指定文件名的文件

List<File> listFile(File dir, FileFilter ff, boolean recursive):列出指定文件过滤器的文件

void copyFile(File srcFile, File destFile):复制文件

void copyDirectory(File srcDir, File destDir):复制目录,以及下面的文件

 

  1. public class FileUtil {  
  2.   
  3.     /** 
  4.      *  
  5.      * 列出指定目录下(包括其子目录)的所有文件 
  6.      *  
  7.      */  
  8.   
  9.     public static void listDirectory(File dir)  
  10.   
  11.     throws IOException {  
  12.   
  13.         if (!dir.exists()) {  
  14.   
  15.             throw new IllegalArgumentException("目录:" + dir  
  16.   
  17.             + "不存在");  
  18.   
  19.         }  
  20.   
  21.         if (!dir.isDirectory()) {  
  22.   
  23.             throw new IllegalArgumentException(dir + "不是目录");  
  24.   
  25.         }  
  26.   
  27.         File[] subs = dir.listFiles();  
  28.   
  29.         if (subs != null && subs.length > 0) {  
  30.   
  31.             for (File sub : subs) {  
  32.   
  33.                 if (sub.isDirectory()) {  
  34.   
  35.                     listDirectory(sub);  
  36.   
  37.                 } else {  
  38.   
  39.                     System.out.println(sub);  
  40.   
  41.                 }  
  42.   
  43.             }  
  44.   
  45.         }  
  46.   
  47.     }  
  48.   
  49.     /** 
  50.      *  
  51.      * 删除指定目录及其包含的所有内容 
  52.      *  
  53.      *  
  54.      * */  
  55.   
  56.     public static void deleteDirectory(File dir)  
  57.   
  58.     throws IOException {  
  59.   
  60.         if (!dir.exists()) {  
  61.   
  62.             throw new IllegalArgumentException("目录:" + dir +  
  63.   
  64.             "不存在");  
  65.   
  66.         }  
  67.   
  68.         if (!dir.isDirectory()) {  
  69.   
  70.             throw new IllegalArgumentException(dir + "不是目录");  
  71.   
  72.         }  
  73.   
  74.         File[] subs = dir.listFiles();  
  75.   
  76.         if (subs != null && subs.length > 0) {  
  77.   
  78.             for (File sub : subs) {  
  79.   
  80.                 if (sub.isDirectory()) {  
  81.   
  82.                     deleteDirectory(sub);  
  83.   
  84.                 } else {  
  85.   
  86.                     System.out.println(sub);  
  87.   
  88.                     if (!sub.delete()) {  
  89.   
  90.                         throw new IOException("无法删除文件:" + sub);  
  91.   
  92.                     }  
  93.   
  94.                 }  
  95.   
  96.             }  
  97.   
  98.         }  
  99.   
  100.         System.out.println(dir);  
  101.   
  102.         if (!dir.delete()) {  
  103.   
  104.             throw new IOException("无法删除目录:" + dir);  
  105.   
  106.         }  
  107.   
  108.     }  
  109.   
  110.     /** 
  111.      *  
  112.      * 列出指定目录下指定扩展名的所有文件 
  113.      *  
  114.      */  
  115.   
  116.     public static List<File> listFile(File dir,  
  117.   
  118.     final String[] extensions, boolean recursive) {  
  119.   
  120.         if (!dir.exists()) {  
  121.   
  122.             throw new IllegalArgumentException("目录:" + dir +  
  123.   
  124.             "不存在");  
  125.   
  126.         }  
  127.   
  128.         if (!dir.isDirectory()) {  
  129.   
  130.             throw new IllegalArgumentException(dir + "不是目录");  
  131.   
  132.         }  
  133.   
  134.         FileFilter ff = null;  
  135.   
  136.         if (extensions == null || extensions.length == 0) {  
  137.   
  138.             ff = new FileFilter() {  
  139.   
  140.                 @Override  
  141.                 public boolean accept(File pathname) {  
  142.   
  143.                     return true;  
  144.   
  145.                 }  
  146.   
  147.             };  
  148.   
  149.         } else {  
  150.   
  151.             ff = new FileFilter() {  
  152.   
  153.                 @Override  
  154.                 public boolean accept(File pathname) {  
  155.   
  156.                     if (pathname.isDirectory())  
  157.   
  158.                         return true;  
  159.   
  160.                     String name = pathname.getName();  
  161.   
  162.                     for (String ext : extensions) {  
  163.   
  164.                         if (name.endsWith(ext)) {  
  165.   
  166.                             return true;  
  167.   
  168.                         }  
  169.   
  170.                     }  
  171.   
  172.                     return false;  
  173.   
  174.                 }  
  175.   
  176.             };  
  177.   
  178.         }  
  179.   
  180.         return listFile(dir, ff, recursive);  
  181.   
  182.     }  
  183.   
  184.     /** 
  185.      *  
  186.      * 列出文件名为指定文件名的文件 
  187.      *  
  188.      * */  
  189.   
  190.     public static List<File> listFile(File dir,  
  191.   
  192.     final String filename, boolean recursive) {  
  193.   
  194.         if (!dir.exists()) {  
  195.   
  196.             throw new IllegalArgumentException("目录:" + dir  
  197.   
  198.             + "不存在");  
  199.   
  200.         }  
  201.   
  202.         if (!dir.isDirectory()) {  
  203.   
  204.             throw new IllegalArgumentException(dir + "不是目录");  
  205.   
  206.         }  
  207.   
  208.         FileFilter ff = null;  
  209.   
  210.         if (filename == null || filename.length() == 0) {  
  211.   
  212.             ff = new FileFilter() {  
  213.   
  214.                 @Override  
  215.                 public boolean accept(File pathname) {  
  216.   
  217.                     return true;  
  218.   
  219.                 }  
  220.   
  221.             };  
  222.   
  223.         } else {  
  224.   
  225.             ff = new FileFilter() {  
  226.   
  227.                 @Override  
  228.                 public boolean accept(File pathname) {  
  229.   
  230.                     if (pathname.isDirectory())  
  231.   
  232.                         return true;  
  233.   
  234.                     String name = pathname.getName();  
  235.   
  236.                     if (name.indexOf(filename) != -1)  
  237.   
  238.                         return true;  
  239.   
  240.                     else  
  241.   
  242.                         return false;  
  243.   
  244.                 }  
  245.   
  246.             };  
  247.   
  248.         }  
  249.   
  250.         return listFile(dir, ff, recursive);  
  251.   
  252.     }  
  253.   
  254.     private static List<File> listFile(File dir, FileFilter ff,  
  255.   
  256.     boolean recursive) {  
  257.   
  258.         List<File> list = new ArrayList<File>();  
  259.   
  260.         File[] subs = dir.listFiles(ff);  
  261.   
  262.         if (subs != null && subs.length > 0) {  
  263.   
  264.             for (File sub : subs) {  
  265.   
  266.                 if (sub.isFile()) {  
  267.   
  268.                     list.add(sub);  
  269.   
  270.                 } else if (recursive) {  
  271.   
  272.                     list.addAll(listFile(sub, ff, true));  
  273.   
  274.                 }  
  275.   
  276.             }  
  277.   
  278.         }  
  279.   
  280.         return list;  
  281.   
  282.     }  
  283.   
  284.     /*** 
  285.      * 复制文件 
  286.      *  
  287.      * @param srcFile 
  288.      * @param destFile 
  289.      * @throws IOException 
  290.      */  
  291.     public static void copyFile(File srcFile, File destFile)  
  292.   
  293.     throws IOException {  
  294.   
  295.         if (!srcFile.exists()) {  
  296.   
  297.             throw new IllegalArgumentException("文件:" + srcFile  
  298.   
  299.             + "不存在");  
  300.   
  301.         }  
  302.   
  303.         if (!srcFile.isFile()) {  
  304.   
  305.             throw new IllegalArgumentException(srcFile +  
  306.   
  307.             "不是文件");  
  308.   
  309.         }  
  310.   
  311.         RandomAccessFile srcRaf = new RandomAccessFile(srcFile,  
  312.   
  313.         "r");  
  314.   
  315.         if (!destFile.exists()) {  
  316.   
  317.             if (!destFile.createNewFile())  
  318.   
  319.                 throw new IOException("无法创建文件:" + destFile);  
  320.   
  321.         }  
  322.   
  323.         RandomAccessFile destRaf = new RandomAccessFile(  
  324.   
  325.         destFile, "rw");  
  326.   
  327.         byte[] buffer = new byte[8 * 1024];  
  328.   
  329.         int len = -1;  
  330.   
  331.         while ((len = srcRaf.read(buffer)) != -1) {  
  332.   
  333.             destRaf.write(buffer, 0, len);  
  334.   
  335.         }  
  336.   
  337.         srcRaf.close();  
  338.   
  339.         destRaf.close();  
  340.   
  341.     }  
  342.   
  343.     /*** 
  344.      * 复制文件夹 
  345.      *  
  346.      * @param srcDir 
  347.      * @param destDir 
  348.      * @throws IOException 
  349.      */  
  350.   
  351.     public static void copyDirectory(File srcDir, File destDir)  
  352.   
  353.     throws IOException {  
  354.   
  355.         if (!srcDir.exists()) {  
  356.   
  357.             throw new IllegalArgumentException("文件:" +  
  358.   
  359.             srcDir + "不存在");  
  360.   
  361.         }  
  362.   
  363.         if (!srcDir.isDirectory()) {  
  364.   
  365.             throw new IllegalArgumentException(srcDir +  
  366.   
  367.             "不是目录");  
  368.   
  369.         }  
  370.   
  371.         if (!destDir.exists()) {  
  372.   
  373.             if (!destDir.mkdir())  
  374.   
  375.                 throw new IOException("无法创建目录:" + destDir);  
  376.   
  377.         }  
  378.   
  379.         File[] subs = srcDir.listFiles();  
  380.   
  381.         if (subs != null && subs.length > 0) {  
  382.   
  383.             for (File sub : subs) {  
  384.   
  385.                 if (sub.isFile()) {  
  386.   
  387.                     copyFile(sub, new File(destDir,  
  388.   
  389.                     sub.getName()));  
  390.   
  391.                 } else if (sub.isDirectory()) {  
  392.   
  393.                     copyDirectory(sub, new File(destDir,  
  394.   
  395.                     sub.getName()));  
  396.   
  397.                 }  
  398.   
  399.             }  
  400.   
  401.         }  
  402.   
  403.     }  
  404.   

相关文章推荐

java工具类——file

  • 2017年05月01日 23:13
  • 1KB
  • 下载

NO.63 [file]IO常用工具类IOUtils(Java读文件、写文件、打Zip包)

功能目录: 将输入流转换成字节流 将文件读取为一个字符串 以指定编码格式将输入流按行置入一个List 以GBK格式将输入流按行置入一个List 转换为每行补充指定换行符(...

java的File的工具类

包括 void listDirectory(File dir):列出指定目录下(包括其子目录)的所有文件,打印在控制台 void deleteDirectory(File dir):删除指定目录及...

java中实用的File工具类

和File有关的工具类 package arithmetic; import java.io.BufferedReader; import java.io.File; import java.io...

Java File操作工具类

package com.ybg.pf.framework.library.util;import java.io.BufferedReader; import java.io.ByteArrayOut...

java常用类解析五:IO系统File类及文件搜索工具类

1、先看一个File类的简单的例子 package test; import java.io.File; import java.io.FilenameFilter; import java.ut...

file工具类

  • 2017年06月14日 13:53
  • 4KB
  • 下载

FileUtil(File处理工具类,copy,压缩,删除等)

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRe...

File工具类

  • 2017年07月07日 13:34
  • 9KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java的File的工具类
举报原因:
原因补充:

(最多只允许输入30个字)