FileUtils方法大全

来源:互联网 发布:mysql execute using 编辑:程序博客网 时间:2024/05/19 02:23

FileUtils

获取系统的临时目录路径:getTempDirectoryPath()

[java] view plain copy
print?
  1. public static String getTempDirectoryPath() {  
  2.   
  3.            return System.getProperty(“java.io.tmpdir”);  
  4.   
  5.  }  
public static String getTempDirectoryPath() {           return System.getProperty("java.io.tmpdir"); }

获取代表系统临时目录的文件:getTempDirectory ()

[java] view plain copy
print?
  1. public static File getTempDirectory() {  
  2.   
  3.            return new File(getTempDirectoryPath());  
  4.   
  5.  }  
public static File getTempDirectory() {           return new File(getTempDirectoryPath()); }

获取用户的主目录路径:getUserDirectoryPath()

[java] view plain copy
print?
  1. public static String getUserDirectoryPath() {  
  2.   
  3.            return System.getProperty(“user.home”);  
  4.   
  5.  }  
public static String getUserDirectoryPath() {           return System.getProperty("user.home"); }

获取代表用户主目录的文件:getUserDirectory()

[java] view plain copy
print?
  1. public static File getUserDirectory() {  
  2.   
  3.            return new File(getUserDirectoryPath());  
  4.   
  5. }  
public static File getUserDirectory() {           return new File(getUserDirectoryPath());}

根据指定的文件获取一个新的文件输入流:openInputStream(File file)

[java] view plain copy
print?
  1. public static FileInputStream openInputStream(File file) throws IOException {  
  2.   
  3.            if (file.exists()) {  
  4.   
  5.                if (file.isDirectory()) {  
  6.   
  7.                    throw new IOException(“File ’” + file + “’ exists but is adirectory”);  
  8.   
  9.                }  
  10.   
  11.                if (file.canRead() == false) {  
  12.   
  13.                    throw new IOException(“File ’” + file + “’ cannot be read”);  
  14.   
  15.                }  
  16.   
  17.            } else {  
  18.   
  19.                throw newFileNotFoundException(“File ’” + file + “’ does notexist”);  
  20.   
  21.            }  
  22.   
  23.            return new FileInputStream(file);  
  24.   
  25.        }  
public static FileInputStream openInputStream(File file) throws IOException {           if (file.exists()) {               if (file.isDirectory()) {                   throw new IOException("File '" + file + "' exists but is adirectory");               }               if (file.canRead() == false) {                   throw new IOException("File '" + file + "' cannot be read");               }           } else {               throw newFileNotFoundException("File '" + file + "' does notexist");           }           return new FileInputStream(file);       }

根据指定的文件获取一个新的文件输出流:openOutputStream (File file)

[java] view plain copy
print?
  1. public static FileOutputStream openOutputStream(File file) throws IOException {  
  2.   
  3.            if (file.exists()) {  
  4.   
  5.                if (file.isDirectory()) {  
  6.   
  7.                    throw new IOException(“File’” + file + “’ exists but is a directory”);  
  8.   
  9.                }  
  10.   
  11.                if (file.canWrite() == false) {  
  12.   
  13.                    throw new IOException(“File ’” + file + “’ cannot be written to”);  
  14.   
  15.                }  
  16.   
  17.            } else {  
  18.   
  19.                File parent = file.getParentFile();  
  20.   
  21.                if (parent != null &&parent.exists() == false) {  
  22.   
  23.                    if (parent.mkdirs() ==false) {  
  24.   
  25.                        throw new IOException(“File ’” + file + “’ could not be created”);  
  26.   
  27.                    }  
  28.   
  29.                }  
  30.   
  31.            }  
  32.   
  33.            return new FileOutputStream(file);  
  34.   
  35.        }  
public static FileOutputStream openOutputStream(File file) throws IOException {           if (file.exists()) {               if (file.isDirectory()) {                   throw new IOException("File'" + file + "' exists but is a directory");               }               if (file.canWrite() == false) {                   throw new IOException("File '" + file + "' cannot be written to");               }           } else {               File parent = file.getParentFile();               if (parent != null &&parent.exists() == false) {                   if (parent.mkdirs() ==false) {                       throw new IOException("File '" + file + "' could not be created");                   }               }           }           return new FileOutputStream(file);       }

字节转换成直观带单位的值(包括单位GB,MB,KB或字节)byteCountToDisplaySize(long size)

 

[java] view plain copy
print?
  1. public static StringbyteCountToDisplaySize(long size) {  
  2.   
  3.           String displaySize;  
  4.   
  5.           if (size / ONE_GB > 0) {  
  6.   
  7.               displaySize =String.valueOf(size / ONE_GB) + ” GB”;  
  8.   
  9.           } else if (size / ONE_MB > 0) {  
  10.   
  11.               displaySize =String.valueOf(size / ONE_MB) + ” MB”;  
  12.   
  13.           } else if (size / ONE_KB > 0) {  
  14.   
  15.               displaySize =String.valueOf(size / ONE_KB) + ” KB”;  
  16.   
  17.           } else {  
  18.   
  19.               displaySize =String.valueOf(size) + ” bytes”;  
  20.   
  21.           }  
  22.   
  23.           return displaySize;  
  24.   
  25.       }  
 public static StringbyteCountToDisplaySize(long size) {           String displaySize;           if (size / ONE_GB > 0) {               displaySize =String.valueOf(size / ONE_GB) + " GB";           } else if (size / ONE_MB > 0) {               displaySize =String.valueOf(size / ONE_MB) + " MB";           } else if (size / ONE_KB > 0) {               displaySize =String.valueOf(size / ONE_KB) + " KB";           } else {               displaySize =String.valueOf(size) + " bytes";           }           return displaySize;       }

创建一个空文件,若文件应经存在则只更改文件的最近修改时间:touch(File file)

[java] view plain copy
print?
  1. public static void touch(File file) throws IOException {  
  2.   
  3.          if (!file.exists()) {  
  4.   
  5.              OutputStream out =openOutputStream(file);  
  6.   
  7.              IOUtils.closeQuietly(out);  
  8.   
  9.          }  
  10.   
  11.          boolean success =file.setLastModified(System.currentTimeMillis());  
  12.   
  13.          if (!success) {  
  14.   
  15.              throw new IOException(“Unableto set the last modification time for ” + file);  
  16.   
  17.          }  
  18.   
  19.      }  
  public static void touch(File file) throws IOException {           if (!file.exists()) {               OutputStream out =openOutputStream(file);               IOUtils.closeQuietly(out);           }           boolean success =file.setLastModified(System.currentTimeMillis());           if (!success) {               throw new IOException("Unableto set the last modification time for " + file);           }       }


把相应的文件集合转换成文件数组convertFileCollectionToFileArray(Collection<File> files)

[java] view plain copy
print?
  1. public static File[] convertFileCollectionToFileArray(Collection<File> files) {  
  2.   
  3.             return files.toArray(newFile[files.size()]);  
  4.   
  5.        }  
public static File[] convertFileCollectionToFileArray(Collection<File> files) {            return files.toArray(newFile[files.size()]);       }


根据一个过滤规则获取一个目录下的文件innerListFiles(Collection<File> files, File directory,IOFileFilterfilter)

[java] view plain copy
print?
  1. private static void innerListFiles(Collection<File> files, File directory,  
  2.   
  3.                IOFileFilter filter) {  
  4.   
  5.            File[] found =directory.listFiles((FileFilter) filter);  
  6.   
  7.            if (found != null) {  
  8.   
  9.                for (File file : found) {  
  10.   
  11.                    if (file.isDirectory()) {  
  12.   
  13.                        innerListFiles(files,file, filter);  
  14.   
  15.                    } else {  
  16.   
  17.                        files.add(file);  
  18.   
  19.                    }  
  20.   
  21.                }  
  22.   
  23.            }  
  24.   
  25.        }  
private static void innerListFiles(Collection<File> files, File directory,               IOFileFilter filter) {           File[] found =directory.listFiles((FileFilter) filter);           if (found != null) {               for (File file : found) {                   if (file.isDirectory()) {                       innerListFiles(files,file, filter);                   } else {                       files.add(file);                   }               }           }       }


根据一个IOFileFilter过滤规则获取一个目录下的文件集合listFiles( File directory, IOFileFilterfileFilter, IOFileFilter dirFilter)

[java] view plain copy
print?
  1. public static Collection<File> listFiles(  
  2.   
  3.                File directory, IOFileFilterfileFilter, IOFileFilter dirFilter) {  
  4.   
  5.            if (!directory.isDirectory()) {  
  6.   
  7.                throw newIllegalArgumentException(  
  8.   
  9.                        ”Parameter’directory’ is not a directory”);  
  10.   
  11.            }  
  12.   
  13.            if (fileFilter == null) {  
  14.   
  15.                throw newNullPointerException(“Parameter ‘fileFilter’ is null”);  
  16.   
  17.            }  
  18.   
  19.     
  20.   
  21.            //Setup effective file filter  
  22.   
  23.            IOFileFilter effFileFilter =FileFilterUtils.and(fileFilter,  
  24.   
  25.                FileFilterUtils.notFileFilter(DirectoryFileFilter.INSTANCE));  
  26.   
  27.     
  28.   
  29.            //Setup effective directory filter  
  30.   
  31.            IOFileFilter effDirFilter;  
  32.   
  33.            if (dirFilter == null) {  
  34.   
  35.                effDirFilter =FalseFileFilter.INSTANCE;  
  36.   
  37.            } else {  
  38.   
  39.                effDirFilter =FileFilterUtils.and(dirFilter,  
  40.   
  41.                   DirectoryFileFilter.INSTANCE);  
  42.   
  43.            }  
  44.   
  45.     
  46.   
  47.            //Find files  
  48.   
  49.            Collection<File> files = newjava.util.LinkedList<File>();  
  50.   
  51.            innerListFiles(files, directory,  
  52.   
  53.               FileFilterUtils.or(effFileFilter, effDirFilter));  
  54.   
  55.            return files;  
  56.   
  57.        }  
public static Collection<File> listFiles(               File directory, IOFileFilterfileFilter, IOFileFilter dirFilter) {           if (!directory.isDirectory()) {               throw newIllegalArgumentException(                       "Parameter'directory' is not a directory");           }           if (fileFilter == null) {               throw newNullPointerException("Parameter 'fileFilter' is null");           }           //Setup effective file filter           IOFileFilter effFileFilter =FileFilterUtils.and(fileFilter,               FileFilterUtils.notFileFilter(DirectoryFileFilter.INSTANCE));           //Setup effective directory filter           IOFileFilter effDirFilter;           if (dirFilter == null) {               effDirFilter =FalseFileFilter.INSTANCE;           } else {               effDirFilter =FileFilterUtils.and(dirFilter,                  DirectoryFileFilter.INSTANCE);           }           //Find files           Collection<File> files = newjava.util.LinkedList<File>();           innerListFiles(files, directory,              FileFilterUtils.or(effFileFilter, effDirFilter));           return files;       }


根据一个IOFileFilter过滤规则获取一个目录下的文件集合的Iterator迭代器iterateFiles( File directory, IOFileFilterfileFilter, IOFileFilter dirFilter)

[java] view plain copy
print?
  1. public static Iterator<File> iterateFiles( File directory, IOFileFilterfileFilter, IOFileFilter dirFilter) {  
  2.   
  3.       return listFiles(directory,fileFilter, dirFilter).iterator();  
  4.   
  5.   }  
     public static Iterator<File> iterateFiles( File directory, IOFileFilterfileFilter, IOFileFilter dirFilter) {           return listFiles(directory,fileFilter, dirFilter).iterator();       }


把指定的字符串数组变成后缀名格式字符串数组toSuffixes(String[] extensions)

[java] view plain copy
print?
  1. private static String[] toSuffixes(String[] extensions) {  
  2.   
  3.            String[] suffixes = new String[extensions.length];  
  4.   
  5.            for (int i = 0; i <extensions.length; i++) {  
  6.   
  7.                suffixes[i] = ”.” +extensions[i];  
  8.   
  9.            }  
  10.   
  11.            return suffixes;  
  12.   
  13.        }  
private static String[] toSuffixes(String[] extensions) {           String[] suffixes = new String[extensions.length];           for (int i = 0; i <extensions.length; i++) {               suffixes[i] = "." +extensions[i];           }           return suffixes;       }


查找一个目录下面符合对应扩展名的文件的集合listFiles(File directory, String[]extensions, boolean recursive)

 

[java] view plain copy
print?
  1. public static Collection<File> listFiles( File directory, String[]extensions, boolean recursive) {  
  2.   
  3.            IOFileFilter filter;  
  4.   
  5.            if (extensions == null) {  
  6.   
  7.                filter =TrueFileFilter.INSTANCE;  
  8.   
  9.            } else {  
  10.   
  11.                String[] suffixes =toSuffixes(extensions);  
  12.   
  13.                filter = new SuffixFileFilter(suffixes);  
  14.   
  15.            }  
  16.   
  17.            return listFiles(directory, filter,  
  18.   
  19.                (recursive ?TrueFileFilter.INSTANCE : FalseFileFilter.INSTANCE));  
  20.   
  21.        }  
public static Collection<File> listFiles( File directory, String[]extensions, boolean recursive) {           IOFileFilter filter;           if (extensions == null) {               filter =TrueFileFilter.INSTANCE;           } else {               String[] suffixes =toSuffixes(extensions);               filter = new SuffixFileFilter(suffixes);           }           return listFiles(directory, filter,               (recursive ?TrueFileFilter.INSTANCE : FalseFileFilter.INSTANCE));       }

查找一个目录下面符合对应扩展名的文件的集合的迭代器Iterator<File> iterateFiles( File directory, String[]extensions, boolean recursive)

[java] view plain copy
print?
  1. public static Iterator<File> iterateFiles( File directory, String[]extensions, boolean recursive) {  
  2.   
  3.            return listFiles(directory,extensions, recursive).iterator();  
  4.   
  5.        }  
public static Iterator<File> iterateFiles( File directory, String[]extensions, boolean recursive) {           return listFiles(directory,extensions, recursive).iterator();       }


判断两个文件是否相等contentEquals(Filefile1, File file2)

[java] view plain copy
print?
  1. public static boolean contentEquals(File file1, File file2) throws IOException {  
  2.   
  3.            boolean file1Exists =file1.exists();  
  4.   
  5.            if (file1Exists != file2.exists()) {  
  6.   
  7.                return false;  
  8.   
  9.            }  
  10.   
  11.     
  12.   
  13.            if (!file1Exists) {  
  14.   
  15.                // two not existing files are equal  
  16.   
  17.                return true;  
  18.   
  19.            }  
  20.   
  21.     
  22.   
  23.            if (file1.isDirectory() ||file2.isDirectory()) {  
  24.   
  25.                // don’t want to compare directory contents  
  26.   
  27.                throw new IOException(“Can’t compare directories, only files”);  
  28.   
  29.            }  
  30.   
  31.     
  32.   
  33.            if (file1.length() !=file2.length()) {  
  34.   
  35.                // lengths differ, cannot be equal  
  36.   
  37.                return false;  
  38.   
  39.            }  
  40.   
  41.     
  42.   
  43.            if(file1.getCanonicalFile().equals(file2.getCanonicalFile())) {  
  44.   
  45.                // same file  
  46.   
  47.                return true;  
  48.   
  49.            }  
  50.   
  51.     
  52.   
  53.            InputStream input1 = null;  
  54.   
  55.            InputStream input2 = null;  
  56.   
  57.            try {  
  58.   
  59.                input1 = newFileInputStream(file1);  
  60.   
  61.                input2 = newFileInputStream(file2);  
  62.   
  63.                returnIOUtils.contentEquals(input1, input2);  
  64.   
  65.     
  66.   
  67.            } finally {  
  68.   
  69.                IOUtils.closeQuietly(input1);  
  70.   
  71.                IOUtils.closeQuietly(input2);  
  72.   
  73.            }  
  74.   
  75.        }  
public static boolean contentEquals(File file1, File file2) throws IOException {           boolean file1Exists =file1.exists();           if (file1Exists != file2.exists()) {               return false;           }           if (!file1Exists) {               // two not existing files are equal               return true;           }           if (file1.isDirectory() ||file2.isDirectory()) {               // don't want to compare directory contents               throw new IOException("Can't compare directories, only files");           }           if (file1.length() !=file2.length()) {               // lengths differ, cannot be equal               return false;           }           if(file1.getCanonicalFile().equals(file2.getCanonicalFile())) {               // same file               return true;           }           InputStream input1 = null;           InputStream input2 = null;           try {               input1 = newFileInputStream(file1);               input2 = newFileInputStream(file2);               returnIOUtils.contentEquals(input1, input2);           } finally {               IOUtils.closeQuietly(input1);               IOUtils.closeQuietly(input2);           }       }


根据一个Url来创建一个文件toFile(URL url)

[java] view plain copy
print?
  1. public static File toFile(URL url) {  
  2.   
  3.            if (url == null ||!“file”.equalsIgnoreCase(url.getProtocol())) {  
  4.   
  5.                return null;  
  6.   
  7.            } else {  
  8.   
  9.                String filename =url.getFile().replace(’/’, File.separatorChar);  
  10.   
  11.                filename = decodeUrl(filename);  
  12.   
  13.                return new File(filename);  
  14.   
  15.            }  
  16.   
  17.        }  
public static File toFile(URL url) {           if (url == null ||!"file".equalsIgnoreCase(url.getProtocol())) {               return null;           } else {               String filename =url.getFile().replace('/', File.separatorChar);               filename = decodeUrl(filename);               return new File(filename);           }       }


 

对一个Url字符串进行将指定的URL按照RFC 3986进行转换decodeUrl(Stringurl)

[java] view plain copy
print?
  1. static String decodeUrl(String url) {  
  2.   
  3.            String decoded = url;  
  4.   
  5.            if (url != null &&url.indexOf(‘%’) >= 0) {  
  6.   
  7.                int n = url.length();  
  8.   
  9.                StringBuffer buffer = newStringBuffer();  
  10.   
  11.                ByteBuffer bytes =ByteBuffer.allocate(n);  
  12.   
  13.                for (int i = 0; i < n;) {  
  14.   
  15.                    if (url.charAt(i) == ‘%’) {  
  16.   
  17.                        try {  
  18.   
  19.                            do {  
  20.   
  21.                                byte octet =(byte) Integer.parseInt(url.substring(i + 1, i + 3), 16);  
  22.   
  23.                               bytes.put(octet);  
  24.   
  25.                                i += 3;  
  26.   
  27.                            } while (i < n&& url.charAt(i) == ‘%’);  
  28.   
  29.                            continue;  
  30.   
  31.                        } catch(RuntimeException e) {  
  32.   
  33.                            // malformedpercent-encoded octet, fall through and  
  34.   
  35.                            // append charactersliterally  
  36.   
  37.                        } finally {  
  38.   
  39.                            if (bytes.position()> 0) {  
  40.   
  41.                                bytes.flip();  
  42.   
  43.                               buffer.append(UTF8.decode(bytes).toString());  
  44.   
  45.                                bytes.clear();  
  46.   
  47.                            }  
  48.   
  49.                        }  
  50.   
  51.                    }  
  52.   
  53.                   buffer.append(url.charAt(i++));  
  54.   
  55.                }  
  56.   
  57.                decoded = buffer.toString();  
  58.   
  59.            }  
  60.   
  61.            return decoded;  
  62.   
  63.        }  
static String decodeUrl(String url) {           String decoded = url;           if (url != null &&url.indexOf('%') >= 0) {               int n = url.length();               StringBuffer buffer = newStringBuffer();               ByteBuffer bytes =ByteBuffer.allocate(n);               for (int i = 0; i < n;) {                   if (url.charAt(i) == '%') {                       try {                           do {                               byte octet =(byte) Integer.parseInt(url.substring(i + 1, i + 3), 16);                              bytes.put(octet);                               i += 3;                           } while (i < n&& url.charAt(i) == '%');                           continue;                       } catch(RuntimeException e) {                           // malformedpercent-encoded octet, fall through and                           // append charactersliterally                       } finally {                           if (bytes.position()> 0) {                               bytes.flip();                              buffer.append(UTF8.decode(bytes).toString());                               bytes.clear();                           }                       }                   }                  buffer.append(url.charAt(i++));               }               decoded = buffer.toString();           }           return decoded;       }


将一个URL数组转化成一个文件数组toFiles(URL[] urls)

[java] view plain copy
print?
  1. public static File[]  toFiles(URL[] urls) {  
  2.   
  3.            if (urls == null || urls.length ==0) {  
  4.   
  5.                return EMPTY_FILE_ARRAY;  
  6.   
  7.            }  
  8.   
  9.            File[] files = newFile[urls.length];  
  10.   
  11.            for (int i = 0; i < urls.length;i++) {  
  12.   
  13.                URL url = urls[i];  
  14.   
  15.                if (url != null) {  
  16.   
  17.                    if(url.getProtocol().equals(“file”) == false) {  
  18.   
  19.                        throw newIllegalArgumentException(  
  20.   
  21.                                ”URL couldnot be converted to a File: ” + url);  
  22.   
  23.                    }  
  24.   
  25.                    files[i] = toFile(url);  
  26.   
  27.                }  
  28.   
  29.            }  
  30.   
  31.            return files;  
  32.   
  33.        }  
public static File[]  toFiles(URL[] urls) {           if (urls == null || urls.length ==0) {               return EMPTY_FILE_ARRAY;           }           File[] files = newFile[urls.length];           for (int i = 0; i < urls.length;i++) {               URL url = urls[i];               if (url != null) {                   if(url.getProtocol().equals("file") == false) {                       throw newIllegalArgumentException(                               "URL couldnot be converted to a File: " + url);                   }                   files[i] = toFile(url);               }           }           return files;       }


将一个文件数组转化成一个URL数组toURLs(File[] files)

 

[java] view plain copy
print?
  1. public static URL[]   toURLs(File[] files)throws IOException {  
  2.   
  3.           URL[] urls = new URL[files.length];  
  4.   
  5.    
  6.   
  7.           for (int i = 0; i < urls.length;i++) {  
  8.   
  9.               urls[i] =files[i].toURI().toURL();  
  10.   
  11.           }  
  12.   
  13.    
  14.   
  15.           return urls;  
  16.   
  17.       }  
 public static URL[]   toURLs(File[] files)throws IOException {           URL[] urls = new URL[files.length];           for (int i = 0; i < urls.length;i++) {               urls[i] =files[i].toURI().toURL();           }           return urls;       }


拷贝一个文件到指定的目录文件copyFileToDirectory(File srcFile, File destDir)

[java] view plain copy
print?
  1. public static void copyFileToDirectory(File srcFile, File destDir) throws IOException{  
  2.   
  3.            copyFileToDirectory(srcFile,destDir, true);  
  4.   
  5.        }  
public static void copyFileToDirectory(File srcFile, File destDir) throws IOException{           copyFileToDirectory(srcFile,destDir, true);       }


拷贝一个文件到指定的目录文件并且设置是否更新文件的最近修改时间copyFileToDirectory(File srcFile, File destDir, booleanpreserveFileDate)

[java] view plain copy
print?
  1. public static void copyFileToDirectory(File srcFile, File destDir, booleanpreserveFileDate) throws IOException {  
  2.   
  3.            if (destDir == null) {  
  4.   
  5.                throw new NullPointerException(“Destination must not be null”);  
  6.   
  7.            }  
  8.   
  9.            if (destDir.exists() &&destDir.isDirectory() == false) {  
  10.   
  11.                throw new IllegalArgumentException(“Destination ’” + destDir + “’ is not adirectory”);  
  12.   
  13.            }  
  14.   
  15.            File destFile = new File(destDir,srcFile.getName());  
  16.   
  17.            copyFile(srcFile, destFile,preserveFileDate);  
  18.   
  19.        }  
public static void copyFileToDirectory(File srcFile, File destDir, booleanpreserveFileDate) throws IOException {           if (destDir == null) {               throw new NullPointerException("Destination must not be null");           }           if (destDir.exists() &&destDir.isDirectory() == false) {               throw new IllegalArgumentException("Destination '" + destDir + "' is not adirectory");           }           File destFile = new File(destDir,srcFile.getName());           copyFile(srcFile, destFile,preserveFileDate);       }


拷贝文件到新的文件中并且保存最近修改时间copyFile(File srcFile, File destFile)

[java] view plain copy
print?
  1. public static void copyFile(File srcFile, File destFile) throws IOException {  
  2.   
  3.            copyFile(srcFile, destFile, true);  
  4.   
  5.        }  
public static void copyFile(File srcFile, File destFile) throws IOException {           copyFile(srcFile, destFile, true);       }


拷贝文件到新的文件中并且设置是否保存最近修改时间copyFile(File srcFile, File destFile,boolean preserveFileDate)

[java] view plain copy
print?
  1. public static void copyFile(File srcFile, File destFile,boolean preserveFileDate) throwsIOException {  
  2.   
  3.            if (srcFile == null) {  
  4.   
  5.                throw new NullPointerException(“Source must not be null”);  
  6.   
  7.            }  
  8.   
  9.            if (destFile == null) {  
  10.   
  11.                throw new NullPointerException(“Destination must not be null”);  
  12.   
  13.            }  
  14.   
  15.            if (srcFile.exists() == false) {  
  16.   
  17.                throw new FileNotFoundException(“Source ’” + srcFile + “’ does not exist”);  
  18.   
  19.            }  
  20.   
  21.            if (srcFile.isDirectory()) {  
  22.   
  23.                throw new IOException(“Source ’” + srcFile + “’ exists but is a directory”);  
  24.   
  25.            }  
  26.   
  27.            if(srcFile.getCanonicalPath().equals(destFile.getCanonicalPath())) {  
  28.   
  29.                throw new IOException(“Source ’” + srcFile + “’ and destination ’” +destFile + “’ are the same”);  
  30.   
  31.            }  
  32.   
  33.            if (destFile.getParentFile() != null&& destFile.getParentFile().exists() == false) {  
  34.   
  35.                if(destFile.getParentFile().mkdirs() == false) {  
  36.   
  37.                    throw new IOException(“Destination ’” + destFile + “’ directory cannot becreated”);  
  38.   
  39.                }  
  40.   
  41.            }  
  42.   
  43.            if (destFile.exists() &&destFile.canWrite() == false) {  
  44.   
  45.                throw new IOException(“Destination ’” + destFile + “’ exists but is read-only”);  
  46.   
  47.            }  
  48.   
  49.            doCopyFile(srcFile, destFile,preserveFileDate);  
  50.   
  51.        }  
public static void copyFile(File srcFile, File destFile,boolean preserveFileDate) throwsIOException {           if (srcFile == null) {               throw new NullPointerException("Source must not be null");           }           if (destFile == null) {               throw new NullPointerException("Destination must not be null");           }           if (srcFile.exists() == false) {               throw new FileNotFoundException("Source '" + srcFile + "' does not exist");           }           if (srcFile.isDirectory()) {               throw new IOException("Source '" + srcFile + "' exists but is a directory");           }           if(srcFile.getCanonicalPath().equals(destFile.getCanonicalPath())) {               throw new IOException("Source '" + srcFile + "' and destination '" +destFile + "' are the same");           }           if (destFile.getParentFile() != null&& destFile.getParentFile().exists() == false) {               if(destFile.getParentFile().mkdirs() == false) {                   throw new IOException("Destination '" + destFile + "' directory cannot becreated");               }           }           if (destFile.exists() &&destFile.canWrite() == false) {               throw new IOException("Destination '" + destFile + "' exists but is read-only");           }           doCopyFile(srcFile, destFile,preserveFileDate);       }


拷贝文件到新的文件中并且设置是否保存最近修改时间doCopyFile(File srcFile, File destFile, boolean preserveFileDate)

 

[java] view plain copy
print?
  1. private static void doCopyFile(File srcFile,File destFile, boolean preserveFileDate) throws IOException {  
  2.   
  3.           if (destFile.exists() &&destFile.isDirectory()) {  
  4.   
  5.               throw new IOException(“Destination ’” + destFile + “’ exists but is a directory”);  
  6.   
  7.           }  
  8.   
  9.    
  10.   
  11.           FileInputStream fis = null;  
  12.   
  13.           FileOutputStream fos = null;  
  14.   
  15.           FileChannel input = null;  
  16.   
  17.           FileChannel output = null;  
  18.   
  19.           try {  
  20.   
  21.               fis = newFileInputStream(srcFile);  
  22.   
  23.               fos = newFileOutputStream(destFile);  
  24.   
  25.               input  = fis.getChannel();  
  26.   
  27.               output = fos.getChannel();  
  28.   
  29.               long size = input.size();  
  30.   
  31.               long pos = 0;  
  32.   
  33.               long count = 0;  
  34.   
  35.               while (pos < size) {  
  36.   
  37.                   count = (size - pos) >FIFTY_MB ? FIFTY_MB : (size - pos);  
  38.   
  39.                   pos +=output.transferFrom(input, pos, count);  
  40.   
  41.               }  
  42.   
  43.           } finally {  
  44.   
  45.               IOUtils.closeQuietly(output);  
  46.   
  47.               IOUtils.closeQuietly(fos);  
  48.   
  49.               IOUtils.closeQuietly(input);  
  50.   
  51.               IOUtils.closeQuietly(fis);  
  52.   
  53.           }  
  54.   
  55.    
  56.   
  57.           if (srcFile.length() !=destFile.length()) {  
  58.   
  59.               throw new IOException(“Failed to copy full contents from ’” +  
  60.   
  61.                       srcFile + ”’ to ’”+ destFile + “’”);  
  62.   
  63.           }  
  64.   
  65.           if (preserveFileDate) {  
  66.   
  67.              destFile.setLastModified(srcFile.lastModified());  
  68.   
  69.           }  
  70.   
  71.       }  
 private static void doCopyFile(File srcFile,File destFile, boolean preserveFileDate) throws IOException {           if (destFile.exists() &&destFile.isDirectory()) {               throw new IOException("Destination '" + destFile + "' exists but is a directory");           }           FileInputStream fis = null;           FileOutputStream fos = null;           FileChannel input = null;           FileChannel output = null;           try {               fis = newFileInputStream(srcFile);               fos = newFileOutputStream(destFile);               input  = fis.getChannel();               output = fos.getChannel();               long size = input.size();               long pos = 0;               long count = 0;               while (pos < size) {                   count = (size - pos) >FIFTY_MB ? FIFTY_MB : (size - pos);                   pos +=output.transferFrom(input, pos, count);               }           } finally {               IOUtils.closeQuietly(output);               IOUtils.closeQuietly(fos);               IOUtils.closeQuietly(input);               IOUtils.closeQuietly(fis);           }           if (srcFile.length() !=destFile.length()) {               throw new IOException("Failed to copy full contents from '" +                       srcFile + "' to '"+ destFile + "'");           }           if (preserveFileDate) {              destFile.setLastModified(srcFile.lastModified());           }       }

将一个目录拷贝到另一目录中,并且保存最近更新时间copyDirectoryToDirectory(File srcDir, File destDir)

[java] view plain copy
print?
  1. public static void copyDirectoryToDirectory(File srcDir, File destDir) throws IOException {  
  2.   
  3.            if (srcDir == null) {  
  4.   
  5.                throw new NullPointerException(“Source must not be null”);  
  6.   
  7.            }  
  8.   
  9.            if (srcDir.exists() &&srcDir.isDirectory() == false) {  
  10.   
  11.                throw new IllegalArgumentException(“Source’” + destDir + “’ is not a directory”);  
  12.   
  13.            }  
  14.   
  15.            if (destDir == null) {  
  16.   
  17.                throw new NullPointerException(“Destination must not be null”);  
  18.   
  19.            }  
  20.   
  21.            if (destDir.exists() &&destDir.isDirectory() == false) {  
  22.   
  23.                throw new IllegalArgumentException(“Destination ’” + destDir + “’ is not a directory”);  
  24.   
  25.            }  
  26.   
  27.            copyDirectory(srcDir, newFile(destDir, srcDir.getName()), true);  
  28.   
  29.        }  
public static void copyDirectoryToDirectory(File srcDir, File destDir) throws IOException {           if (srcDir == null) {               throw new NullPointerException("Source must not be null");           }           if (srcDir.exists() &&srcDir.isDirectory() == false) {               throw new IllegalArgumentException("Source'" + destDir + "' is not a directory");           }           if (destDir == null) {               throw new NullPointerException("Destination must not be null");           }           if (destDir.exists() &&destDir.isDirectory() == false) {               throw new IllegalArgumentException("Destination '" + destDir + "' is not a directory");           }           copyDirectory(srcDir, newFile(destDir, srcDir.getName()), true);       }


拷贝整个目录到新的位置,并且保存最近修改时间copyDirectory(File srcDir, File destDir)

[java] view plain copy
print?
  1. public static void copyDirectory(File srcDir, File destDir) throws IOException{  
  2.   
  3.          copyDirectory(srcDir, destDir,true);  
  4.   
  5.      }  
  public static void copyDirectory(File srcDir, File destDir) throws IOException{           copyDirectory(srcDir, destDir,true);       }


拷贝整个目录到新的位置,并且设置是否保存最近修改时间copyDirectory(File srcDir, File destDir, boolean preserveFileDate)

[java] view plain copy
print?
  1. public static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate) throws IOException {  
  2.   
  3.            copyDirectory(srcDir, destDir, null,preserveFileDate);  
  4.   
  5.        }  
public static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate) throws IOException {           copyDirectory(srcDir, destDir, null,preserveFileDate);       }


拷贝过滤后的目录到指定的位置,并且保存最近修改时间copyDirectory(File srcDir, File destDir, FileFilter filter)

[java] view plain copy
print?
  1. public static void copyDirectory(File srcDir, File destDir, FileFilter filter) throws IOException {  
  2.   
  3.            copyDirectory(srcDir, destDir,filter, true);  
  4.   
  5.        }  
public static void copyDirectory(File srcDir, File destDir, FileFilter filter) throws IOException {           copyDirectory(srcDir, destDir,filter, true);       }


拷贝过滤后的目录到指定的位置,并且设置是否保存最近修改时间copyDirectory(File srcDir, File destDir,FileFilter filter, booleanpreserveFileDate)

[java] view plain copy
print?
  1. public static void copyDirectory(File srcDir, File destDir,FileFilter filter, booleanpreserveFileDate) throws IOException {  
  2.   
  3.             if (srcDir == null) {  
  4.   
  5.                 throw new NullPointerException(“Source must not be null”);  
  6.   
  7.             }  
  8.   
  9.             if (destDir == null) {  
  10.   
  11.                 throw new NullPointerException(“Destination must not be null”);  
  12.   
  13.             }  
  14.   
  15.             if (srcDir.exists() == false) {  
  16.   
  17.                 throw new FileNotFoundException(“Source ’” + srcDir + “’ does not exist”);  
  18.   
  19.             }  
  20.   
  21.             if (srcDir.isDirectory() == false){  
  22.   
  23.                 throw new IOException(“Source ’” + srcDir + “’ exists but is not a directory”);  
  24.   
  25.             }  
  26.   
  27.             if(srcDir.getCanonicalPath().equals(destDir.getCanonicalPath())) {  
  28.   
  29.                 throw new IOException(“Source ’” + srcDir + “’ and destination ’” +destDir + “’ are the same”);  
  30.   
  31.             }  
  32.   
  33.      
  34.   
  35.             // Cater for destination being directorywithin the source directory (see IO-141)  
  36.   
  37.             List<String> exclusionList =null;  
  38.   
  39.             if(destDir.getCanonicalPath().startsWith(srcDir.getCanonicalPath())) {  
  40.   
  41.                 File[] srcFiles = filter ==null ? srcDir.listFiles() : srcDir.listFiles(filter);  
  42.   
  43.                 if (srcFiles != null &&srcFiles.length > 0) {  
  44.   
  45.                     exclusionList = newArrayList<String>(srcFiles.length);  
  46.   
  47.                     for (File srcFile :srcFiles) {  
  48.   
  49.                         File copiedFile = new File(destDir, srcFile.getName());  
  50.   
  51.                        exclusionList.add(copiedFile.getCanonicalPath());  
  52.   
  53.                     }  
  54.   
  55.                 }  
  56.   
  57.             }  
  58.   
  59.             doCopyDirectory(srcDir, destDir,filter, preserveFileDate, exclusionList);  
  60.   
  61.         }  
public static void copyDirectory(File srcDir, File destDir,FileFilter filter, booleanpreserveFileDate) throws IOException {            if (srcDir == null) {                throw new NullPointerException("Source must not be null");            }            if (destDir == null) {                throw new NullPointerException("Destination must not be null");            }            if (srcDir.exists() == false) {                throw new FileNotFoundException("Source '" + srcDir + "' does not exist");            }            if (srcDir.isDirectory() == false){                throw new IOException("Source '" + srcDir + "' exists but is not a directory");            }            if(srcDir.getCanonicalPath().equals(destDir.getCanonicalPath())) {                throw new IOException("Source '" + srcDir + "' and destination '" +destDir + "' are the same");            }            // Cater for destination being directorywithin the source directory (see IO-141)            List<String> exclusionList =null;            if(destDir.getCanonicalPath().startsWith(srcDir.getCanonicalPath())) {                File[] srcFiles = filter ==null ? srcDir.listFiles() : srcDir.listFiles(filter);                if (srcFiles != null &&srcFiles.length > 0) {                    exclusionList = newArrayList<String>(srcFiles.length);                    for (File srcFile :srcFiles) {                        File copiedFile = new File(destDir, srcFile.getName());                       exclusionList.add(copiedFile.getCanonicalPath());                    }                }            }            doCopyDirectory(srcDir, destDir,filter, preserveFileDate, exclusionList);        }


内部拷贝目录的方法doCopyDirectory(FilesrcDir, File destDir, FileFilter filter, boolean preserveFileDate,List<String> exclusionList)

[java] view plain copy
print?
  1. private static void doCopyDirectory(File srcDir, File destDir, FileFilter filter,boolean preserveFileDate,List<String> exclusionList) throws IOException {  
  2.   
  3.             // recurse  
  4.   
  5.             File[] files = filter == null ?srcDir.listFiles() : srcDir.listFiles(filter);  
  6.   
  7.             if (files == null) {  // null if security restricted  
  8.   
  9.                 throw new IOException(“Failed to list contents of ” + srcDir);  
  10.   
  11.             }  
  12.   
  13.             if (destDir.exists()) {  
  14.   
  15.                 if (destDir.isDirectory() ==false) {  
  16.   
  17.                     throw new IOException(“Destination ’” + destDir + “’ exists but is not a directory”);  
  18.   
  19.                 }  
  20.   
  21.             } else {  
  22.   
  23.                 if (destDir.mkdirs() == false){  
  24.   
  25.                     throw new IOException(“Destination ’” + destDir + “’ directory cannot be created”);  
  26.   
  27.                 }  
  28.   
  29.             }  
  30.   
  31.             if (destDir.canWrite() == false) {  
  32.   
  33.                 throw new IOException(“Destination ’” + destDir + “’ cannot be written to”);  
  34.   
  35.             }  
  36.   
  37.             for (File file : files) {  
  38.   
  39.                 File copiedFile = newFile(destDir, file.getName());  
  40.   
  41.                 if (exclusionList == null ||!exclusionList.contains(file.getCanonicalPath())) {  
  42.   
  43.                     if (file.isDirectory()) {  
  44.   
  45.                         doCopyDirectory(file,copiedFile, filter, preserveFileDate, exclusionList);  
  46.   
  47.                     } else {  
  48.   
  49.                         doCopyFile(file,copiedFile, preserveFileDate);  
  50.   
  51.                     }  
  52.   
  53.                 }  
  54.   
  55.             }  
  56.   
  57.      
  58.   
  59.             // Do this last, as the above hasprobably affected directory metadata  
  60.   
  61.             if (preserveFileDate) {  
  62.   
  63.                destDir.setLastModified(srcDir.lastModified());  
  64.   
  65.             }  
  66.   
  67.         }  
private static void doCopyDirectory(File srcDir, File destDir, FileFilter filter,boolean preserveFileDate,List<String> exclusionList) throws IOException {            // recurse            File[] files = filter == null ?srcDir.listFiles() : srcDir.listFiles(filter);            if (files == null) {  // null if security restricted                throw new IOException("Failed to list contents of " + srcDir);            }            if (destDir.exists()) {                if (destDir.isDirectory() ==false) {                    throw new IOException("Destination '" + destDir + "' exists but is not a directory");                }            } else {                if (destDir.mkdirs() == false){                    throw new IOException("Destination '" + destDir + "' directory cannot be created");                }            }            if (destDir.canWrite() == false) {                throw new IOException("Destination '" + destDir + "' cannot be written to");            }            for (File file : files) {                File copiedFile = newFile(destDir, file.getName());                if (exclusionList == null ||!exclusionList.contains(file.getCanonicalPath())) {                    if (file.isDirectory()) {                        doCopyDirectory(file,copiedFile, filter, preserveFileDate, exclusionList);                    } else {                        doCopyFile(file,copiedFile, preserveFileDate);                    }                }            }            // Do this last, as the above hasprobably affected directory metadata            if (preserveFileDate) {               destDir.setLastModified(srcDir.lastModified());            }        }


根据一个Url拷贝字节到一个文件中copyURLToFile(URL source, File destination)

[java] view plain copy
print?
  1. public static void copyURLToFile(URL source, File destination) throws IOException {  
  2.   
  3.             InputStream input =source.openStream();  
  4.   
  5.             copyInputStreamToFile(input,destination);  
  6.   
  7.         }  
public static void copyURLToFile(URL source, File destination) throws IOException {            InputStream input =source.openStream();            copyInputStreamToFile(input,destination);        }


根据一个Url拷贝字节到一个文件中,并且可以设置连接的超时时间和读取的超时时间

copyURLToFile(URLsource, File destination, int connectionTimeout, int readTimeout)

[java] view plain copy
print?
  1. public static void copyURLToFile(URL source, File destination,int connectionTimeout, int readTimeout)throws IOException {  
  2.   
  3.             URLConnection connection =source.openConnection();  
  4.   
  5.            connection.setConnectTimeout(connectionTimeout);  
  6.   
  7.            connection.setReadTimeout(readTimeout);  
  8.   
  9.             InputStream input =connection.getInputStream();  
  10.   
  11.             copyInputStreamToFile(input,destination);  
  12.   
  13.         }  
public static void copyURLToFile(URL source, File destination,int connectionTimeout, int readTimeout)throws IOException {            URLConnection connection =source.openConnection();           connection.setConnectTimeout(connectionTimeout);           connection.setReadTimeout(readTimeout);            InputStream input =connection.getInputStream();            copyInputStreamToFile(input,destination);        }


拷贝一个字节流到一个文件中,如果这个文件不存在则新创建一个,存在的话将被重写进内容copyInputStreamToFile(InputStream source, File destination)

   

[java] view plain copy
print?
  1. public static voidcopyInputStreamToFile(InputStream source, File destination) throws IOException{  
  2.   
  3.            try {  
  4.   
  5.                FileOutputStream output =openOutputStream(destination);  
  6.   
  7.                try {  
  8.   
  9.                    IOUtils.copy(source,output);  
  10.   
  11.                } finally {  
  12.   
  13.                   IOUtils.closeQuietly(output);  
  14.   
  15.                }  
  16.   
  17.            } finally {  
  18.   
  19.                IOUtils.closeQuietly(source);  
  20.   
  21.            }  
  22.   
  23.        }  
 public static voidcopyInputStreamToFile(InputStream source, File destination) throws IOException{            try {                FileOutputStream output =openOutputStream(destination);                try {                    IOUtils.copy(source,output);                } finally {                   IOUtils.closeQuietly(output);                }            } finally {                IOUtils.closeQuietly(source);            }        }


递归的删除一个目录deleteDirectory(Filedirectory)

[java] view plain copy
print?
  1. public static void deleteDirectory(File directory) throws IOException {  
  2.   
  3.             if (!directory.exists()) {  
  4.   
  5.                 return;  
  6.   
  7.             }  
  8.   
  9.      
  10.   
  11.             if (!isSymlink(directory)) {  
  12.   
  13.                 cleanDirectory(directory);  
  14.   
  15.             }  
  16.   
  17.      
  18.   
  19.             if (!directory.delete()) {  
  20.   
  21.                 String message =  
  22.   
  23.                     ”Unable to deletedirectory ” + directory + “.”;  
  24.   
  25.                 throw new IOException(message);  
  26.   
  27.             }  
  28.   
  29.         }  
public static void deleteDirectory(File directory) throws IOException {            if (!directory.exists()) {                return;            }            if (!isSymlink(directory)) {                cleanDirectory(directory);            }            if (!directory.delete()) {                String message =                    "Unable to deletedirectory " + directory + ".";                throw new IOException(message);            }        }


安静模式删除目录,操作过程中会抛出异常deleteQuietly(File file)

[java] view plain copy
print?
  1. public static boolean deleteQuietly(File file) {  
  2.   
  3.             if (file == null) {  
  4.   
  5.                 return false;  
  6.   
  7.             }  
  8.   
  9.             try {  
  10.   
  11.                 if (file.isDirectory()) {  
  12.   
  13.                     cleanDirectory(file);  
  14.   
  15.                 }  
  16.   
  17.             } catch (Exception ignored) {  
  18.   
  19.             }  
  20.   
  21.      
  22.   
  23.             try {  
  24.   
  25.                 return file.delete();  
  26.   
  27.             } catch (Exception ignored) {  
  28.   
  29.                 return false;  
  30.   
  31.             }  
  32.   
  33.         }  
public static boolean deleteQuietly(File file) {            if (file == null) {                return false;            }            try {                if (file.isDirectory()) {                    cleanDirectory(file);                }            } catch (Exception ignored) {            }            try {                return file.delete();            } catch (Exception ignored) {                return false;            }        }


 

 

清除一个目录而不删除它cleanDirectory(Filedirectory)

[java] view plain copy
print?
  1. public static void cleanDirectory(File directory) throws IOException {  
  2.   
  3.             if (!directory.exists()) {  
  4.   
  5.                 String message = directory +” does not exist”;  
  6.   
  7.                 throw new IllegalArgumentException(message);  
  8.   
  9.             }  
  10.   
  11.      
  12.   
  13.             if (!directory.isDirectory()) {  
  14.   
  15.                 String message = directory +” is not a directory”;  
  16.   
  17.                 throw new IllegalArgumentException(message);  
  18.   
  19.             }  
  20.   
  21.      
  22.   
  23.             File[] files =directory.listFiles();  
  24.   
  25.             if (files == null) {  // null if security restricted  
  26.   
  27.                 throw new IOException(“Failed to list contents of ” + directory);  
  28.   
  29.             }  
  30.   
  31.      
  32.   
  33.             IOException exception = null;  
  34.   
  35.             for (File file : files) {  
  36.   
  37.                 try {  
  38.   
  39.                     forceDelete(file);  
  40.   
  41.                 } catch (IOException ioe) {  
  42.   
  43.                     exception = ioe;  
  44.   
  45.                 }  
  46.   
  47.             }  
  48.   
  49.      
  50.   
  51.             if (null != exception) {  
  52.   
  53.                 throw exception;  
  54.   
  55.             }  
  56.   
  57.         }  
public static void cleanDirectory(File directory) throws IOException {            if (!directory.exists()) {                String message = directory +" does not exist";                throw new IllegalArgumentException(message);            }            if (!directory.isDirectory()) {                String message = directory +" is not a directory";                throw new IllegalArgumentException(message);            }            File[] files =directory.listFiles();            if (files == null) {  // null if security restricted                throw new IOException("Failed to list contents of " + directory);            }            IOException exception = null;            for (File file : files) {                try {                    forceDelete(file);                } catch (IOException ioe) {                    exception = ioe;                }            }            if (null != exception) {                throw exception;            }        }


等待NFS来传播一个文件的创建,实施超时waitFor(File file, int seconds)

[java] view plain copy
print?
  1. public static boolean waitFor(File file, int seconds) {  
  2.   
  3.             int timeout = 0;  
  4.   
  5.             int tick = 0;  
  6.   
  7.             while (!file.exists()) {  
  8.   
  9.                 if (tick++ >= 10) {  
  10.   
  11.                     tick = 0;  
  12.   
  13.                     if (timeout++ > seconds){  
  14.   
  15.                         return false;  
  16.   
  17.                     }  
  18.   
  19.                 }  
  20.   
  21.                 try {  
  22.   
  23.                     Thread.sleep(100);  
  24.   
  25.                 } catch (InterruptedExceptionignore) {  
  26.   
  27.                     // ignore exception  
  28.   
  29.                 } catch (Exception ex) {  
  30.   
  31.                     break;  
  32.   
  33.                 }  
  34.   
  35.             }  
  36.   
  37.             return true;  
  38.   
  39.         }  
public static boolean waitFor(File file, int seconds) {            int timeout = 0;            int tick = 0;            while (!file.exists()) {                if (tick++ >= 10) {                    tick = 0;                    if (timeout++ > seconds){                        return false;                    }                }                try {                    Thread.sleep(100);                } catch (InterruptedExceptionignore) {                    // ignore exception                } catch (Exception ex) {                    break;                }            }            return true;        }


把一个文件的内容读取到一个对应编码的字符串中去readFileToString(File file, String encoding)

  

[java] view plain copy
print?
  1. public static String readFileToString(Filefile, String encoding) throws IOException {  
  2.   
  3.             InputStream in = null;  
  4.   
  5.             try {  
  6.   
  7.                 in = openInputStream(file);  
  8.   
  9.                 return IOUtils.toString(in,encoding);  
  10.   
  11.             } finally {  
  12.   
  13.                 IOUtils.closeQuietly(in);  
  14.   
  15.             }  
  16.   
  17.         }  
public static String readFileToString(Filefile, String encoding) throws IOException {            InputStream in = null;            try {                in = openInputStream(file);                return IOUtils.toString(in,encoding);            } finally {                IOUtils.closeQuietly(in);            }        }


读取文件的内容到虚拟机的默认编码字符串readFileToString(File file)

[java] view plain copy
print?
  1. public static String readFileToString(Filefile) throws IOException {  
  2.   
  3.           return readFileToString(file,null);  
  4.   
  5.       }  
  public static String readFileToString(Filefile) throws IOException {            return readFileToString(file,null);        }


把一个文件转换成字节数组返回readFileToByteArray(File file)

 

[java] view plain copy
print?
  1. public static byte[] readFileToByteArray(Filefile) throws IOException {  
  2.   
  3.            InputStream in = null;  
  4.   
  5.            try {  
  6.   
  7.                in = openInputStream(file);  
  8.   
  9.                return IOUtils.toByteArray(in);  
  10.   
  11.            } finally {  
  12.   
  13.                IOUtils.closeQuietly(in);  
  14.   
  15.            }  
  16.   
  17.        }  
 public static byte[] readFileToByteArray(Filefile) throws IOException {            InputStream in = null;            try {                in = openInputStream(file);                return IOUtils.toByteArray(in);            } finally {                IOUtils.closeQuietly(in);            }        }

把文件中的内容逐行的拷贝到一个对应编码的list<String>中去

[java] view plain copy
print?
  1. public static List<String> readLines(File file, String encoding) throws IOException {  
  2.   
  3.             InputStream in = null;  
  4.   
  5.             try {  
  6.   
  7.                 in = openInputStream(file);  
  8.   
  9.                 return IOUtils.readLines(in,encoding);  
  10.   
  11.             } finally {  
  12.   
  13.                 IOUtils.closeQuietly(in);  
  14.   
  15.             }  
  16.   
  17.         }  
public static List<String> readLines(File file, String encoding) throws IOException {            InputStream in = null;            try {                in = openInputStream(file);                return IOUtils.readLines(in,encoding);            } finally {                IOUtils.closeQuietly(in);            }        }


把文件中的内容逐行的拷贝到一个虚拟机默认编码的list<String>中去

[java] view plain copy
print?
  1. public static List<String>readLines(File file) throws IOException {  
  2.   
  3.            return readLines(file, null);  
  4.   
  5.        }  
 public static List<String>readLines(File file) throws IOException {            return readLines(file, null);        }


根据对应编码返回对应文件内容的行迭代器lineIterator(File file, String encoding)

[java] view plain copy
print?
  1. public static LineIterator lineIterator(File file, String encoding) throws IOException{  
  2.   
  3.             InputStream in = null;  
  4.   
  5.             try {  
  6.   
  7.                 in = openInputStream(file);  
  8.   
  9.                 return IOUtils.lineIterator(in,encoding);  
  10.   
  11.             } catch (IOException ex) {  
  12.   
  13.                 IOUtils.closeQuietly(in);  
  14.   
  15.                throw ex;  
  16.   
  17.             } catch (RuntimeException ex) {  
  18.   
  19.                 IOUtils.closeQuietly(in);  
  20.   
  21.                 throw ex;  
  22.   
  23.             }  
  24.   
  25.         }  
public static LineIterator lineIterator(File file, String encoding) throws IOException{            InputStream in = null;            try {                in = openInputStream(file);                return IOUtils.lineIterator(in,encoding);            } catch (IOException ex) {                IOUtils.closeQuietly(in);               throw ex;            } catch (RuntimeException ex) {                IOUtils.closeQuietly(in);                throw ex;            }        }


根据虚拟机默认编码返回对应文件内容的行迭代器lineIterator(File file)

[java] view plain copy
print?
  1. public static LineIterator lineIterator(Filefile) throws IOException {  
  2.   
  3.           return lineIterator(file, null);  
  4.   
  5.       }  
  public static LineIterator lineIterator(Filefile) throws IOException {            return lineIterator(file, null);        }


根据对应编码把字符串写进对应的文件中writeStringToFile(File file, String data, String encoding)

[java] view plain copy
print?
  1. public static void writeStringToFile(File file, String data, String encoding) throws IOException {  
  2.   
  3.             OutputStream out = null;  
  4.   
  5.             try {  
  6.   
  7.                 out = openOutputStream(file);  
  8.   
  9.                 IOUtils.write(data, out,encoding);  
  10.   
  11.             } finally {  
  12.   
  13.                 IOUtils.closeQuietly(out);  
  14.   
  15.             }  
  16.   
  17.         }  
public static void writeStringToFile(File file, String data, String encoding) throws IOException {            OutputStream out = null;            try {                out = openOutputStream(file);                IOUtils.write(data, out,encoding);            } finally {                IOUtils.closeQuietly(out);            }        }

根据虚拟机默认编码把字符串写进对应的文件中writeStringToFile(File file, String data)

[java] view plain copy
print?
  1. public static void writeStringToFile(Filefile, String data) throws IOException {  
  2.   
  3.           writeStringToFile(file, data,null);  
  4.   
  5.       }  
  public static void writeStringToFile(Filefile, String data) throws IOException {            writeStringToFile(file, data,null);        }


根据虚拟机默认的编码把CharSequence写入到文件中(File file, CharSequence data)

[java] view plain copy
print?
  1. public static void write(File file, CharSequence data) throws IOException {  
  2.   
  3.             String str = data == null ? null :data.toString();  
  4.   
  5.             writeStringToFile(file, str);  
  6.   
  7.         }  
public static void write(File file, CharSequence data) throws IOException {            String str = data == null ? null :data.toString();            writeStringToFile(file, str);        }


根据对应的编码把CharSequence写入到文件中write(File file, CharSequence data, String encoding)

[java] view plain copy
print?
  1. public static void write(File file, CharSequence data, String encoding) throws IOException {  
  2.   
  3.             String str = data == null ? null :data.toString();  
  4.   
  5.             writeStringToFile(file, str,encoding);  
  6.   
  7.         }  
public static void write(File file, CharSequence data, String encoding) throws IOException {            String str = data == null ? null :data.toString();            writeStringToFile(file, str,encoding);        }


把一个字节数组写入到指定的文件中writeByteArrayToFile(File file, byte[] data)

 

[java] view plain copy
print?
  1. public static void writeByteArrayToFile(Filefile, byte[] data) throws IOException {  
  2.   
  3.           OutputStream out = null;  
  4.   
  5.           try {  
  6.   
  7.               out = openOutputStream(file);  
  8.   
  9.               out.write(data);  
  10.   
  11.           } finally {  
  12.   
  13.               IOUtils.closeQuietly(out);  
  14.   
  15.           }  
  16.   
  17.       }  
  public static void writeByteArrayToFile(Filefile, byte[] data) throws IOException {            OutputStream out = null;            try {                out = openOutputStream(file);                out.write(data);            } finally {                IOUtils.closeQuietly(out);            }        }

把集合中的内容根据对应编码逐项插入到文件中writeLines(File file, String encoding, Collection<?> lines)

 

[java] view plain copy
print?
  1. public static void writeLines(File file,String encoding, Collection<?> lines) throws IOException {  
  2.   
  3.             writeLines(file, encoding, lines,null);  
  4.   
  5.         }  
public static void writeLines(File file,String encoding, Collection<?> lines) throws IOException {            writeLines(file, encoding, lines,null);        }


把集合中的内容根据虚拟机默认编码逐项插入到文件中writeLines(File file, Collection<?> lines)

[java] view plain copy
print?
  1. public static void writeLines(File file, Collection<?> lines) throws IOException{  
  2.   
  3.             writeLines(file, null, lines,null);  
  4.   
  5.         }  
public static void writeLines(File file, Collection<?> lines) throws IOException{            writeLines(file, null, lines,null);        }


把集合中的内容根据对应字符编码和行编码逐项插入到文件中

 

[java] view plain copy
print?
  1. public static void writeLines(File file,String encoding, Collection<?> lines, String lineEnding)  
  2.   
  3.           throws IOException {  
  4.   
  5.           OutputStream out = null;  
  6.   
  7.           try {  
  8.   
  9.               out = openOutputStream(file);  
  10.   
  11.               IOUtils.writeLines(lines,lineEnding, out, encoding);  
  12.   
  13.           } finally {  
  14.   
  15.               IOUtils.closeQuietly(out);  
  16.   
  17.           }  
  18.   
  19.       }  
  public static void writeLines(File file,String encoding, Collection<?> lines, String lineEnding)            throws IOException {            OutputStream out = null;            try {                out = openOutputStream(file);                IOUtils.writeLines(lines,lineEnding, out, encoding);            } finally {                IOUtils.closeQuietly(out);            }        }

把集合中的内容根据对应行编码逐项插入到文件中

[java] view plain copy
print?
  1. public static void writeLines(File file, Collection<?> lines, String lineEnding)throws IOException {  
  2.   
  3.             writeLines(file, null, lines,lineEnding);  
  4.   
  5.         }  
public static void writeLines(File file, Collection<?> lines, String lineEnding)throws IOException {            writeLines(file, null, lines,lineEnding);        }


删除一个文件,如果是目录则递归删除forceDelete(File file)

 

[java] view plain copy
print?
  1. public static void forceDelete(File file)throws IOException {  
  2.   
  3.             if (file.isDirectory()) {  
  4.   
  5.                 deleteDirectory(file);  
  6.   
  7.             } else {  
  8.   
  9.                 boolean filePresent =file.exists();  
  10.   
  11.                 if (!file.delete()) {  
  12.   
  13.                     if (!filePresent){  
  14.   
  15.                         throw new FileNotFoundException(“File does not exist: ” + file);  
  16.   
  17.                     }  
  18.   
  19.                     String message =  
  20.   
  21.                         ”Unable to deletefile: ” + file;  
  22.   
  23.                     throw new IOException(message);  
  24.   
  25.                 }  
  26.   
  27.             }  
  28.   
  29.         }  
public static void forceDelete(File file)throws IOException {            if (file.isDirectory()) {                deleteDirectory(file);            } else {                boolean filePresent =file.exists();                if (!file.delete()) {                    if (!filePresent){                        throw new FileNotFoundException("File does not exist: " + file);                    }                    String message =                        "Unable to deletefile: " + file;                    throw new IOException(message);                }            }        }


当虚拟机退出关闭时删除文件forceDeleteOnExit(File file)

[java] view plain copy
print?
  1. public static void forceDeleteOnExit(File file) throws IOException {  
  2.   
  3.             if (file.isDirectory()) {  
  4.   
  5.                 deleteDirectoryOnExit(file);  
  6.   
  7.             } else {  
  8.   
  9.                 file.deleteOnExit();  
  10.   
  11.             }  
  12.   
  13.         }  
public static void forceDeleteOnExit(File file) throws IOException {            if (file.isDirectory()) {                deleteDirectoryOnExit(file);            } else {                file.deleteOnExit();            }        }


当虚拟机退出关闭时递归删除一个目录deleteDirectoryOnExit(File directory)

[java] view plain copy
print?
  1. private static void deleteDirectoryOnExit(File directory) throws IOException {  
  2.   
  3.             if (!directory.exists()) {  
  4.   
  5.                 return;  
  6.   
  7.             }  
  8.   
  9.      
  10.   
  11.             if (!isSymlink(directory)) {  
  12.   
  13.                 cleanDirectoryOnExit(directory);  
  14.   
  15.             }  
  16.   
  17.             directory.deleteOnExit();  
  18.   
  19.         }  
private static void deleteDirectoryOnExit(File directory) throws IOException {            if (!directory.exists()) {                return;            }            if (!isSymlink(directory)) {                cleanDirectoryOnExit(directory);            }            directory.deleteOnExit();        }


在虚拟机退出或者关闭时清除一个目录而不删除它

[java] view plain copy
print?
  1. private static void cleanDirectoryOnExit(Filedirectory) throws IOException {  
  2.   
  3.           if (!directory.exists()) {  
  4.   
  5.               String message = directory +” does not exist”;  
  6.   
  7.               throw new IllegalArgumentException(message);  
  8.   
  9.           }  
  10.   
  11.    
  12.   
  13.           if (!directory.isDirectory()) {  
  14.   
  15.               String message = directory +” is not a directory”;  
  16.   
  17.               throw new IllegalArgumentException(message);  
  18.   
  19.           }  
  20.   
  21.    
  22.   
  23.           File[] files =directory.listFiles();  
  24.   
  25.           if (files == null) {  // null if security restricted  
  26.   
  27.               throw new IOException(“Failed to list contents of ” + directory);  
  28.   
  29.           }  
  30.   
  31.    
  32.   
  33.           IOException exception = null;  
  34.   
  35.           for (File file : files) {  
  36.   
  37.               try {  
  38.   
  39.                   forceDeleteOnExit(file);  
  40.   
  41.               } catch (IOException ioe) {  
  42.   
  43.                   exception = ioe;  
  44.   
  45.               }  
  46.   
  47.           }  
  48.   
  49.    
  50.   
  51.           if (null != exception) {  
  52.   
  53.               throw exception;  
  54.   
  55.           }  
  56.   
  57.       }  
  private static void cleanDirectoryOnExit(Filedirectory) throws IOException {            if (!directory.exists()) {                String message = directory +" does not exist";                throw new IllegalArgumentException(message);            }            if (!directory.isDirectory()) {                String message = directory +" is not a directory";                throw new IllegalArgumentException(message);            }            File[] files =directory.listFiles();            if (files == null) {  // null if security restricted                throw new IOException("Failed to list contents of " + directory);            }            IOException exception = null;            for (File file : files) {                try {                    forceDeleteOnExit(file);                } catch (IOException ioe) {                    exception = ioe;                }            }            if (null != exception) {                throw exception;            }        }


创建一个目录除了不存在的父目录其他所必须的都可以创建forceMkdir(File directory)

[java] view plain copy
print?
  1. public static void forceMkdir(File directory) throws IOException {  
  2.   
  3.             if (directory.exists()) {  
  4.   
  5.                 if (!directory.isDirectory()) {  
  6.   
  7.                     String message =  
  8.   
  9.                         ”File ”  
  10.   
  11.                             + directory  
  12.   
  13.                             + ” exists andis ”  
  14.   
  15.                             + ”not a directory. Unable to create directory.”;  
  16.   
  17.                     throw new IOException(message);  
  18.   
  19.                 }  
  20.   
  21.             } else {  
  22.   
  23.                 if (!directory.mkdirs()) {  
  24.   
  25.                     // Double-check that someother thread or process hasn’t made  
  26.   
  27.                     // the directory in thebackground  
  28.   
  29.                     if (!directory.isDirectory())  
  30.   
  31.                     {  
  32.   
  33.                         String message =  
  34.   
  35.                             ”Unable tocreate directory ” + directory;  
  36.   
  37.                         throw new IOException(message);  
  38.   
  39.                     }  
  40.   
  41.                 }  
  42.   
  43.             }  
  44.   
  45.         }  
public static void forceMkdir(File directory) throws IOException {            if (directory.exists()) {                if (!directory.isDirectory()) {                    String message =                        "File "                            + directory                            + " exists andis "                            + "not a directory. Unable to create directory.";                    throw new IOException(message);                }            } else {                if (!directory.mkdirs()) {                    // Double-check that someother thread or process hasn't made                    // the directory in thebackground                    if (!directory.isDirectory())                    {                        String message =                            "Unable tocreate directory " + directory;                        throw new IOException(message);                    }                }            }        }


获取文件或者目录的大小sizeOf(Filefile)

[java] view plain copy
print?
  1. public static long sizeOf(File file) {  
  2.   
  3.    
  4.   
  5.           if (!file.exists()) {  
  6.   
  7.               String message = file + ”does not exist”;  
  8.   
  9.               throw new IllegalArgumentException(message);  
  10.   
  11.           }  
  12.   
  13.    
  14.   
  15.           if (file.isDirectory()) {  
  16.   
  17.               return sizeOfDirectory(file);  
  18.   
  19.           } else {  
  20.   
  21.               return file.length();  
  22.   
  23.           }  
  24.   
  25.       }  
  public static long sizeOf(File file) {            if (!file.exists()) {                String message = file + "does not exist";                throw new IllegalArgumentException(message);            }            if (file.isDirectory()) {                return sizeOfDirectory(file);            } else {                return file.length();            }        }


获取目录的大小sizeOfDirectory(Filedirectory)

[java] view plain copy
print?
  1. public static long sizeOfDirectory(File directory) {  
  2.   
  3.             if (!directory.exists()) {  
  4.   
  5.                 String message = directory +” does not exist”;  
  6.   
  7.                 throw new IllegalArgumentException(message);  
  8.   
  9.             }  
  10.   
  11.             if (!directory.isDirectory()) {  
  12.   
  13.                 String message = directory +” is not a directory”;  
  14.   
  15.                 throw new IllegalArgumentException(message);  
  16.   
  17.             }  
  18.   
  19.      
  20.   
  21.             long size = 0;  
  22.   
  23.      
  24.   
  25.             File[] files =directory.listFiles();  
  26.   
  27.             if (files == null) {  // null if security restricted  
  28.   
  29.                 return 0L;  
  30.   
  31.             }  
  32.   
  33.             for (File file : files) {  
  34.   
  35.                 size += sizeOf(file);  
  36.   
  37.             }  
  38.   
  39.      
  40.   
  41.             return size;  
  42.   
  43.         }  
public static long sizeOfDirectory(File directory) {            if (!directory.exists()) {                String message = directory +" does not exist";                throw new IllegalArgumentException(message);            }            if (!directory.isDirectory()) {                String message = directory +" is not a directory";                throw new IllegalArgumentException(message);            }            long size = 0;            File[] files =directory.listFiles();            if (files == null) {  // null if security restricted                return 0L;            }            for (File file : files) {                size += sizeOf(file);            }            return size;        }


测试指定文件的最后修改日期是否比reference的文件新isFileNewer(File file, Filereference)

[java] view plain copy
print?
  1. public static boolean isFileNewer(File file, File reference) {  
  2.   
  3.             if (reference == null) {  
  4.   
  5.                 throw new IllegalArgumentException(“No specified reference file”);  
  6.   
  7.             }  
  8.   
  9.             if (!reference.exists()) {  
  10.   
  11.                 throw new IllegalArgumentException(“The reference file ’”  
  12.   
  13.                         + reference + “‘doesn’t exist”);  
  14.   
  15.             }  
  16.   
  17.             return isFileNewer(file,reference.lastModified());  
  18.   
  19.         }  
public static boolean isFileNewer(File file, File reference) {            if (reference == null) {                throw new IllegalArgumentException("No specified reference file");            }            if (!reference.exists()) {                throw new IllegalArgumentException("The reference file '"                        + reference + "'doesn't exist");            }            return isFileNewer(file,reference.lastModified());        }


检测指定文件的最后修改时间是否在指定日期之前isFileNewer(File file, Date date)

[java] view plain copy
print?
  1. public static boolean isFileNewer(File file, Date date) {  
  2.   
  3.             if (date == null) {  
  4.   
  5.                 throw new llegalArgumentException(“No specified date”);  
  6.   
  7.             }  
  8.   
  9.             return isFileNewer(file,date.getTime());  
  10.   
  11.         }  
public static boolean isFileNewer(File file, Date date) {            if (date == null) {                throw new llegalArgumentException("No specified date");            }            return isFileNewer(file,date.getTime());        }


检测指定文件的最后修改时间(毫秒)是否在指定日期之前isFileNewer(File file, long timeMillis)

[java] view plain copy
print?
  1. public static boolean isFileNewer(File file, long timeMillis) {  
  2.   
  3.             if (file == null) {  
  4.   
  5.                 throw new IllegalArgumentException(“No specified file”);  
  6.   
  7.             }  
  8.   
  9.             if (!file.exists()) {  
  10.   
  11.                 return false;  
  12.   
  13.             }  
  14.   
  15.             return file.lastModified() >timeMillis;  
  16.   
  17.         }  
public static boolean isFileNewer(File file, long timeMillis) {            if (file == null) {                throw new IllegalArgumentException("No specified file");            }            if (!file.exists()) {                return false;            }            return file.lastModified() >timeMillis;        }


检测指定文件的最后修改日期是否比reference文件的晚isFileOlder(File file, Filereference)

[java] view plain copy
print?
  1. public static boolean isFileOlder(File file, File reference) {  
  2.   
  3.             if (reference == null) {  
  4.   
  5.                 throw new IllegalArgumentException(“No specified reference file”);  
  6.   
  7.             }  
  8.   
  9.             if (!reference.exists()) {  
  10.   
  11.                 throw new IllegalArgumentException(“The reference file ’”  
  12.   
  13.                         + reference + “‘doesn’t exist”);  
  14.   
  15.             }  
  16.   
  17.             return isFileOlder(file,reference.lastModified());  
  18.   
  19.         }  
public static boolean isFileOlder(File file, File reference) {            if (reference == null) {                throw new IllegalArgumentException("No specified reference file");            }            if (!reference.exists()) {                throw new IllegalArgumentException("The reference file '"                        + reference + "'doesn't exist");            }            return isFileOlder(file,reference.lastModified());        }


检测指定文件的最后修改时间是否在指定日期之后isFileOlder(File file, Date date)

[java] view plain copy
print?
  1. public static boolean isFileOlder(File file, Date date) {  
  2.   
  3.             if (date == null) {  
  4.   
  5.                 throw new IllegalArgumentException(“No specified date”);  
  6.   
  7.             }  
  8.   
  9.             return isFileOlder(file,date.getTime());  
  10.   
  11.         }  
public static boolean isFileOlder(File file, Date date) {            if (date == null) {                throw new IllegalArgumentException("No specified date");            }            return isFileOlder(file,date.getTime());        }


检测指定文件的最后修改时间(毫秒)是否在指定日期之后isFileOlder(File file, long timeMillis)

[java] view plain copy
print?
  1. public static boolean isFileOlder(Filefile, long timeMillis) {  
  2.   
  3.         if (file == null) {  
  4.   
  5.             throw new IllegalArgumentException(“No specified file”);  
  6.   
  7.         }  
  8.   
  9.         if (!file.exists()) {  
  10.   
  11.             return false;  
  12.   
  13.         }  
  14.   
  15.         return file.lastModified() <timeMillis;  
  16.   
  17.     }  
    public static boolean isFileOlder(Filefile, long timeMillis) {            if (file == null) {                throw new IllegalArgumentException("No specified file");            }            if (!file.exists()) {                return false;            }            return file.lastModified() <timeMillis;        }


计算使用CRC32校验程序文件的校验和checksumCRC32(File file)

[java] view plain copy
print?
  1. public static long checksumCRC32(File file) throws IOException {  
  2.   
  3.             CRC32 crc = new CRC32();  
  4.   
  5.             checksum(file, crc);  
  6.   
  7.             return crc.getValue();  
  8.   
  9.         }  
public static long checksumCRC32(File file) throws IOException {            CRC32 crc = new CRC32();            checksum(file, crc);            return crc.getValue();        }


计算一个文件使用指定的校验对象的校验checksum(Filefile, Checksum checksum)

[java] view plain copy
print?
  1. public static Checksum checksum(File file, Checksum checksum) throws IOException {  
  2.   
  3.             if (file.isDirectory()) {  
  4.   
  5.                 throw new IllegalArgumentException(“Check sums can’t be computed on directories”);  
  6.   
  7.             }  
  8.   
  9.             InputStream in = null;  
  10.   
  11.             try {  
  12.   
  13.                 in = new CheckedInputStream(newFileInputStream(file), checksum);  
  14.   
  15.                 IOUtils.copy(in, newNullOutputStream());  
  16.   
  17.             } finally {  
  18.   
  19.                 IOUtils.closeQuietly(in);  
  20.   
  21.             }  
  22.   
  23.             return checksum;  
  24.   
  25.         }  
public static Checksum checksum(File file, Checksum checksum) throws IOException {            if (file.isDirectory()) {                throw new IllegalArgumentException("Check sums can't be computed on directories");            }            InputStream in = null;            try {                in = new CheckedInputStream(newFileInputStream(file), checksum);                IOUtils.copy(in, newNullOutputStream());            } finally {                IOUtils.closeQuietly(in);            }            return checksum;        }


移动目录到新的目录并且删除老的目录moveDirectory(File srcDir, File destDir)

[java] view plain copy
print?
  1. public static void moveDirectory(File srcDir, File destDir) throws IOException {  
  2.   
  3.             if (srcDir == null) {  
  4.   
  5.                 throw new NullPointerException(“Source must not be null”);  
  6.   
  7.             }  
  8.   
  9.             if (destDir == null) {  
  10.   
  11.                 throw new NullPointerException(“Destination must not be null”);  
  12.   
  13.             }  
  14.   
  15.             if (!srcDir.exists()) {  
  16.   
  17.                 throw new FileNotFoundException(“Source ’” + srcDir + “’ does not exist”);  
  18.   
  19.             }  
  20.   
  21.             if (!srcDir.isDirectory()) {  
  22.   
  23.                 throw new IOException(“Source ’” + srcDir + “’ is not a directory”);  
  24.   
  25.             }  
  26.   
  27.             if (destDir.exists()) {  
  28.   
  29.                 throw new FileExistsException(“Destination ’” + destDir + “’ already exists”);  
  30.   
  31.             }  
  32.   
  33.             boolean rename = srcDir.renameTo(destDir);  
  34.   
  35.             if (!rename) {  
  36.   
  37.                 copyDirectory( srcDir, destDir);  
  38.   
  39.                 deleteDirectory( srcDir );  
  40.   
  41.                 if (srcDir.exists()) {  
  42.   
  43.                     throw new IOException(“Failed to delete original directory ’” + srcDir +  
  44.   
  45.                             ”’ after copyto ’” + destDir + “’”);  
  46.   
  47.                 }  
  48.   
  49.             }  
  50.   
  51.         }  
public static void moveDirectory(File srcDir, File destDir) throws IOException {            if (srcDir == null) {                throw new NullPointerException("Source must not be null");            }            if (destDir == null) {                throw new NullPointerException("Destination must not be null");            }            if (!srcDir.exists()) {                throw new FileNotFoundException("Source '" + srcDir + "' does not exist");            }            if (!srcDir.isDirectory()) {                throw new IOException("Source '" + srcDir + "' is not a directory");            }            if (destDir.exists()) {                throw new FileExistsException("Destination '" + destDir + "' already exists");            }            boolean rename = srcDir.renameTo(destDir);            if (!rename) {                copyDirectory( srcDir, destDir);                deleteDirectory( srcDir );                if (srcDir.exists()) {                    throw new IOException("Failed to delete original directory '" + srcDir +                            "' after copyto '" + destDir + "'");                }            }        }


把一个目录移动到另一个目录中去moveDirectoryToDirectory(File src, File destDir, booleancreateDestDir)

[java] view plain copy
print?
  1. public static void moveDirectoryToDirectory(File src, File destDir, booleancreateDestDir) throws IOException {  
  2.   
  3.             if (src == null) {  
  4.   
  5.                 throw new NullPointerException(“Source must not be null”);  
  6.   
  7.             }  
  8.   
  9.             if (destDir == null) {  
  10.   
  11.                 throw new NullPointerException(“Destination directory must not be null”);  
  12.   
  13.             }  
  14.   
  15.             if (!destDir.exists() &&createDestDir) {  
  16.   
  17.                 destDir.mkdirs();  
  18.   
  19.             }  
  20.   
  21.             if (!destDir.exists()) {  
  22.   
  23.                 throw new FileNotFoundException(“Destination directory ’” + destDir +  
  24.   
  25.                         ”’ does not exist[createDestDir=” + createDestDir +“]”);  
  26.   
  27.             }  
  28.   
  29.             if (!destDir.isDirectory()) {  
  30.   
  31.                 throw new IOException(“Destination’” + destDir + “’ is not a directory”);  
  32.   
  33.             }  
  34.   
  35.             moveDirectory(src, newFile(destDir, src.getName()));  
  36.   
  37.          
  38.   
  39.         }  
public static void moveDirectoryToDirectory(File src, File destDir, booleancreateDestDir) throws IOException {            if (src == null) {                throw new NullPointerException("Source must not be null");            }            if (destDir == null) {                throw new NullPointerException("Destination directory must not be null");            }            if (!destDir.exists() &&createDestDir) {                destDir.mkdirs();            }            if (!destDir.exists()) {                throw new FileNotFoundException("Destination directory '" + destDir +                        "' does not exist[createDestDir=" + createDestDir +"]");            }            if (!destDir.isDirectory()) {                throw new IOException("Destination'" + destDir + "' is not a directory");            }            moveDirectory(src, newFile(destDir, src.getName()));        }


复制文件到对应的文件中去moveFile(FilesrcFile, File destFile)

[java] view plain copy
print?
  1. public static void moveFile(File srcFile, File destFile) throws IOException {  
  2.   
  3.             if (srcFile == null) {  
  4.   
  5.                 throw new NullPointerException(“Source must not be null”);  
  6.   
  7.             }  
  8.   
  9.             if (destFile == null) {  
  10.   
  11.                 throw new NullPointerException(“Destination must not be null”);  
  12.   
  13.             }  
  14.   
  15.             if (!srcFile.exists()) {  
  16.   
  17.                 throw new FileNotFoundException(“Source ’” + srcFile + “’ does not exist”);  
  18.   
  19.             }  
  20.   
  21.             if (srcFile.isDirectory()) {  
  22.   
  23.                 throw new IOException(“Source ’” + srcFile + “’ is a directory”);  
  24.   
  25.             }  
  26.   
  27.             if (destFile.exists()) {  
  28.   
  29.                 throw new FileExistsException(“Destination ’” + destFile + “’ already exists”);  
  30.   
  31.             }  
  32.   
  33.             if (destFile.isDirectory()) {  
  34.   
  35.                 throw new IOException(“Destination ’” + destFile + “’ is a directory”);  
  36.   
  37.             }  
  38.   
  39.             boolean rename =srcFile.renameTo(destFile);  
  40.   
  41.             if (!rename) {  
  42.   
  43.                 copyFile( srcFile, destFile );  
  44.   
  45.                 if (!srcFile.delete()) {  
  46.   
  47.                    FileUtils.deleteQuietly(destFile);  
  48.   
  49.                     throw new IOException(“Failed to delete original file ’” + srcFile +  
  50.   
  51.                             ”’ after copy to ’” + destFile + “’”);  
  52.   
  53.                 }  
  54.   
  55.             }  
  56.   
  57.         }  
public static void moveFile(File srcFile, File destFile) throws IOException {            if (srcFile == null) {                throw new NullPointerException("Source must not be null");            }            if (destFile == null) {                throw new NullPointerException("Destination must not be null");            }            if (!srcFile.exists()) {                throw new FileNotFoundException("Source '" + srcFile + "' does not exist");            }            if (srcFile.isDirectory()) {                throw new IOException("Source '" + srcFile + "' is a directory");            }            if (destFile.exists()) {                throw new FileExistsException("Destination '" + destFile + "' already exists");            }            if (destFile.isDirectory()) {                throw new IOException("Destination '" + destFile + "' is a directory");            }            boolean rename =srcFile.renameTo(destFile);            if (!rename) {                copyFile( srcFile, destFile );                if (!srcFile.delete()) {                   FileUtils.deleteQuietly(destFile);                    throw new IOException("Failed to delete original file '" + srcFile +                            "' after copy to '" + destFile + "'");                }            }        }


 

 

复制文件到对应的文件中去,可设置当目标文件不存在时是否创建新的文件moveFile(File srcFile, File destFile)

 

[java] view plain copy
print?
  1. public static void moveFileToDirectory(File srcFile, File destDir, booleancreateDestDir) throws IOException {  
  2.   
  3.             if (srcFile == null) {  
  4.   
  5.                 throw new NullPointerException(“Source must not be null”);  
  6.   
  7.             }  
  8.   
  9.             if (destDir == null) {  
  10.   
  11.                 throw new NullPointerException(“Destination directory must not be null”);  
  12.   
  13.             }  
  14.   
  15.             if (!destDir.exists() &&createDestDir) {  
  16.   
  17.                 destDir.mkdirs();  
  18.   
  19.             }  
  20.   
  21.             if (!destDir.exists()) {  
  22.   
  23.                 throw new FileNotFoundException(“Destination directory ’” + destDir +  
  24.   
  25.                         ”’ does not exist[createDestDir=” + createDestDir +“]”);  
  26.   
  27.             }  
  28.   
  29.             if (!destDir.isDirectory()) {  
  30.   
  31.                 throw new IOException(“Destination’” + destDir + “’ is not a directory”);  
  32.   
  33.             }  
  34.   
  35.             moveFile(srcFile, new File(destDir,srcFile.getName()));  
  36.   
  37.         }  
public static void moveFileToDirectory(File srcFile, File destDir, booleancreateDestDir) throws IOException {            if (srcFile == null) {                throw new NullPointerException("Source must not be null");            }            if (destDir == null) {                throw new NullPointerException("Destination directory must not be null");            }            if (!destDir.exists() &&createDestDir) {                destDir.mkdirs();            }            if (!destDir.exists()) {                throw new FileNotFoundException("Destination directory '" + destDir +                        "' does not exist[createDestDir=" + createDestDir +"]");            }            if (!destDir.isDirectory()) {                throw new IOException("Destination'" + destDir + "' is not a directory");            }            moveFile(srcFile, new File(destDir,srcFile.getName()));        }


移动文件或者目录到新的路径下,并且设置在目标路径不存在的情况下是否创建moveToDirectory(File src, File destDir, boolean createDestDir)

[java] view plain copy
print?
  1. public static void moveToDirectory(File src, File destDir, boolean createDestDir)throws IOException {  
  2.   
  3.            if (src == null) {  
  4.   
  5.                 throw new NullPointerException(“Source must not be null”);  
  6.   
  7.             }  
  8.   
  9.             if (destDir == null) {  
  10.   
  11.                 throw new NullPointerException(“Destination must not be null”);  
  12.   
  13.             }  
  14.   
  15.             if (!src.exists()) {  
  16.   
  17.                 throw new FileNotFoundException(“Source ’” + src + “’ does notexist”);  
  18.   
  19.             }  
  20.   
  21.             if (src.isDirectory()) {  
  22.   
  23.                 moveDirectoryToDirectory(src,destDir, createDestDir);  
  24.   
  25.             } else {  
  26.   
  27.                 moveFileToDirectory(src,destDir, createDestDir);  
  28.   
  29.             }  
  30.   
  31.         }  
public static void moveToDirectory(File src, File destDir, boolean createDestDir)throws IOException {           if (src == null) {                throw new NullPointerException("Source must not be null");            }            if (destDir == null) {                throw new NullPointerException("Destination must not be null");            }            if (!src.exists()) {                throw new FileNotFoundException("Source '" + src + "' does notexist");            }            if (src.isDirectory()) {                moveDirectoryToDirectory(src,destDir, createDestDir);            } else {                moveFileToDirectory(src,destDir, createDestDir);            }        }


确定指定的文件是否是一个符号链接,而不是实际的文件。isSymlink(File file)

[java] view plain copy
print?
  1. public static boolean isSymlink(File file) throws IOException {  
  2.   
  3.             if (file == null) {  
  4.   
  5.                 throw new NullPointerException(“File must not be null”);  
  6.   
  7.             }  
  8.   
  9.             if(FilenameUtils.isSystemWindows()) {  
  10.   
  11.                 return false;  
  12.   
  13.             }  
  14.   
  15.             File fileInCanonicalDir = null;  
  16.   
  17.             if (file.getParent() == null) {  
  18.   
  19.                 fileInCanonicalDir = file;  
  20.   
  21.             } else {  
  22.   
  23.                 File canonicalDir =file.getParentFile().getCanonicalFile();  
  24.   
  25.                 fileInCanonicalDir = newFile(canonicalDir, file.getName());  
  26.   
  27.             }  
  28.   
  29.              
  30.   
  31.             if(fileInCanonicalDir.getCanonicalFile().equals(fileInCanonicalDir.getAbsoluteFile())){  
  32.   
  33.                 return false;  
  34.   
  35.             } else {  
  36.   
  37.                 return true;  
  38.   
  39.             }  
  40.   
  41.         }  
public static boolean isSymlink(File file) throws IOException {            if (file == null) {                throw new NullPointerException("File must not be null");            }            if(FilenameUtils.isSystemWindows()) {                return false;            }            File fileInCanonicalDir = null;            if (file.getParent() == null) {                fileInCanonicalDir = file;            } else {                File canonicalDir =file.getParentFile().getCanonicalFile();                fileInCanonicalDir = newFile(canonicalDir, file.getName());            }            if(fileInCanonicalDir.getCanonicalFile().equals(fileInCanonicalDir.getAbsoluteFile())){                return false;            } else {                return true;            }        }


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 太阳能水管有洞怎么办 缺氧水管冻了怎么办 地下自来水冻了怎么办 厨房主水管漏水怎么办 洗脸盆下水管漏水怎么办 暗装水管漏水怎么办 厨房水管裂了怎么办 水池下水口漏水怎么办 厨房下水口漏水怎么办 6脸盆塞漏水怎么办 洗手盆周围漏水怎么办 做完防水还漏怎么办 防水漏了不咋砖怎么办 贴完砖防水漏了怎么办 面盆下水器漏水怎么办 面盆下水口漏水怎么办 水龙头接口处漏水怎么办 洗脸池脸盆渗水怎么办 老小区水管漏水怎么办 脸盆漏水口漏水怎么办 花洒水管漏水怎么办 空调水管断了怎么办 空调水管有声音怎么办 洗衣机洗桶漏水怎么办 全自动洗衣机排水管漏水怎么办 ppr塑料水管漏水怎么办 空调出水管漏了怎么办 pvc管接口漏水怎么办 外墙下水管漏水怎么办 污水管缝漏水怎么办 铁管有个沙眼怎么办 卫生间边缝漏水怎么办 老铸铁水管漏水怎么办 厕所下水道管子漏水怎么办 外墙雨水管堵了怎么办 商品房子地基下沉怎么办 楼下的管道漏水怎么办 铁水管开关漏水怎么办 排污管堵了怎么办 水龙头换不下来怎么办 全自动洗衣机水龙头漏水怎么办