FileDocCategorySizeDatePackage
FileUtils.javaAPI DocAndroid 1.5 API78865Wed May 06 22:42:46 BST 2009org.apache.commons.io

FileUtils

public class FileUtils extends Object
General file manipulation utilities.

Facilities are provided in the following areas:

  • writing to a file
  • reading from a file
  • make a directory including parent directories
  • copying files and directories
  • deleting files and directories
  • converting to and from a URL
  • listing files and directories by filter and extension
  • comparing file content
  • file last changed date
  • calculating a checksum

Origin of code: Excalibur, Alexandria, Commons-Utils

author
Kevin A. Burton
author
Scott Sanders
author
Daniel Rall
author
Christoph.Reck
author
Peter Donald
author
Jeff Turner
author
Matthew Hawthorne
author
Jeremias Maerki
author
Stephen Colebourne
author
Ian Springer
author
Chris Eldredge
author
Jim Harrington
author
Niall Pemberton
author
Sandy McArthur
version
$Id: FileUtils.java 610810 2008-01-10 15:04:49Z niallp $

Fields Summary
public static final long
ONE_KB
The number of bytes in a kilobyte.
public static final long
ONE_MB
The number of bytes in a megabyte.
public static final long
ONE_GB
The number of bytes in a gigabyte.
public static final File[]
EMPTY_FILE_ARRAY
An empty array of type File.
Constructors Summary
public FileUtils()
Instances should NOT be constructed in standard programming.

        super();
    
Methods Summary
public static java.lang.StringbyteCountToDisplaySize(long size)
Returns a human-readable version of the file size, where the input represents a specific number of bytes.

param
size the number of bytes
return
a human-readable display value (includes units)

        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;
    
public static java.util.zip.Checksumchecksum(java.io.File file, java.util.zip.Checksum checksum)
Computes the checksum of a file using the specified checksum object. Multiple files may be checked using one Checksum instance if desired simply by reusing the same checksum object. For example:
long csum = FileUtils.checksum(file, new CRC32()).getValue();

param
file the file to checksum, must not be null
param
checksum the checksum object to be used, must not be null
return
the checksum specified, updated with the content of the file
throws
NullPointerException if the file or checksum is null
throws
IllegalArgumentException if the file is a directory
throws
IOException if an IO error occurs reading the file
since
Commons IO 1.3

        if (file.isDirectory()) {
            throw new IllegalArgumentException("Checksums can't be computed on directories");
        }
        InputStream in = null;
        try {
            in = new CheckedInputStream(new FileInputStream(file), checksum);
            IOUtils.copy(in, new NullOutputStream());
        } finally {
            IOUtils.closeQuietly(in);
        }
        return checksum;
    
public static longchecksumCRC32(java.io.File file)
Computes the checksum of a file using the CRC32 checksum routine. The value of the checksum is returned.

param
file the file to checksum, must not be null
return
the checksum value
throws
NullPointerException if the file or checksum is null
throws
IllegalArgumentException if the file is a directory
throws
IOException if an IO error occurs reading the file
since
Commons IO 1.3

        CRC32 crc = new CRC32();
        checksum(file, crc);
        return crc.getValue();
    
public static voidcleanDirectory(java.io.File directory)
Cleans a directory without deleting it.

param
directory directory to clean
throws
IOException in case cleaning is unsuccessful

        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 (int i = 0; i < files.length; i++) {
            File file = files[i];
            try {
                forceDelete(file);
            } catch (IOException ioe) {
                exception = ioe;
            }
        }

        if (null != exception) {
            throw exception;
        }
    
private static voidcleanDirectoryOnExit(java.io.File directory)
Cleans a directory without deleting it.

param
directory directory to clean, must not be null
throws
NullPointerException if the directory is null
throws
IOException in case cleaning is unsuccessful

        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 (int i = 0; i < files.length; i++) {
            File file = files[i];
            try {
                forceDeleteOnExit(file);
            } catch (IOException ioe) {
                exception = ioe;
            }
        }

        if (null != exception) {
            throw exception;
        }
    
public static booleancontentEquals(java.io.File file1, java.io.File file2)
Compares the contents of two files to determine if they are equal or not.

This method checks to see if the two files are different lengths or if they point to the same file, before resorting to byte-by-byte comparison of the contents.

Code origin: Avalon

param
file1 the first file
param
file2 the second file
return
true if the content of the files are equal or they both don't exist, false otherwise
throws
IOException in case of an I/O error

        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 = new FileInputStream(file1);
            input2 = new FileInputStream(file2);
            return IOUtils.contentEquals(input1, input2);

        } finally {
            IOUtils.closeQuietly(input1);
            IOUtils.closeQuietly(input2);
        }
    
public static java.io.File[]convertFileCollectionToFileArray(java.util.Collection files)
Converts a Collection containing java.io.File instanced into array representation. This is to account for the difference between File.listFiles() and FileUtils.listFiles().

param
files a Collection containing java.io.File instances
return
an array of java.io.File

         return (File[]) files.toArray(new File[files.size()]);
    
public static voidcopyDirectory(java.io.File srcDir, java.io.File destDir)
Copies a whole directory to a new location preserving the file dates.

This method copies the specified directory and all its child directories and files to the specified destination. The destination is the new location and name of the directory.

The destination directory is created if it does not exist. If the destination directory did exist, then this method merges the source with the destination, with the source taking precedence.

param
srcDir an existing directory to copy, must not be null
param
destDir the new directory, must not be null
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs during copying
since
Commons IO 1.1

        copyDirectory(srcDir, destDir, true);
    
public static voidcopyDirectory(java.io.File srcDir, java.io.File destDir, boolean preserveFileDate)
Copies a whole directory to a new location.

This method copies the contents of the specified source directory to within the specified destination directory.

The destination directory is created if it does not exist. If the destination directory did exist, then this method merges the source with the destination, with the source taking precedence.

param
srcDir an existing directory to copy, must not be null
param
destDir the new directory, must not be null
param
preserveFileDate true if the file date of the copy should be the same as the original
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs during copying
since
Commons IO 1.1

        copyDirectory(srcDir, destDir, null, preserveFileDate);
    
public static voidcopyDirectory(java.io.File srcDir, java.io.File destDir, java.io.FileFilter filter)
Copies a filtered directory to a new location preserving the file dates.

This method copies the contents of the specified source directory to within the specified destination directory.

The destination directory is created if it does not exist. If the destination directory did exist, then this method merges the source with the destination, with the source taking precedence.

Example: Copy directories only

// only copy the directory structure
FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY);

Example: Copy directories and txt files

// Create a filter for ".txt" files
IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt");
IOFileFilter txtFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, txtSuffixFilter);

// Create a filter for either directories or ".txt" files
FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, txtFiles);

// Copy using the filter
FileUtils.copyDirectory(srcDir, destDir, filter);

param
srcDir an existing directory to copy, must not be null
param
destDir the new directory, must not be null
param
filter the filter to apply, null means copy all directories and files should be the same as the original
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs during copying
since
Commons IO 1.4

        copyDirectory(srcDir, destDir, filter, true);
    
public static voidcopyDirectory(java.io.File srcDir, java.io.File destDir, java.io.FileFilter filter, boolean preserveFileDate)
Copies a filtered directory to a new location.

This method copies the contents of the specified source directory to within the specified destination directory.

The destination directory is created if it does not exist. If the destination directory did exist, then this method merges the source with the destination, with the source taking precedence.

Example: Copy directories only

// only copy the directory structure
FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY, false);

Example: Copy directories and txt files

// Create a filter for ".txt" files
IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt");
IOFileFilter txtFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, txtSuffixFilter);

// Create a filter for either directories or ".txt" files
FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, txtFiles);

// Copy using the filter
FileUtils.copyDirectory(srcDir, destDir, filter, false);

param
srcDir an existing directory to copy, must not be null
param
destDir the new directory, must not be null
param
filter the filter to apply, null means copy all directories and files
param
preserveFileDate true if the file date of the copy should be the same as the original
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs during copying
since
Commons IO 1.4

        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 directory within the source directory (see IO-141)
        List exclusionList = null;
        if (destDir.getCanonicalPath().startsWith(srcDir.getCanonicalPath())) {
            File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter);
            if (srcFiles != null && srcFiles.length > 0) {
                exclusionList = new ArrayList(srcFiles.length);
                for (int i = 0; i < srcFiles.length; i++) {
                    File copiedFile = new File(destDir, srcFiles[i].getName());
                    exclusionList.add(copiedFile.getCanonicalPath());
                }
            }
        }
        doCopyDirectory(srcDir, destDir, filter, preserveFileDate, exclusionList);
    
public static voidcopyDirectoryToDirectory(java.io.File srcDir, java.io.File destDir)
Copies a directory to within another directory preserving the file dates.

This method copies the source directory and all its contents to a directory of the same name in the specified destination directory.

The destination directory is created if it does not exist. If the destination directory did exist, then this method merges the source with the destination, with the source taking precedence.

param
srcDir an existing directory to copy, must not be null
param
destDir the directory to place the copy in, must not be null
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs during copying
since
Commons IO 1.2

        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, new File(destDir, srcDir.getName()), true);
    
public static voidcopyFile(java.io.File srcFile, java.io.File destFile)
Copies a file to a new location preserving the file date.

This method copies the contents of the specified source file to the specified destination file. The directory holding the destination file is created if it does not exist. If the destination file exists, then this method will overwrite it.

param
srcFile an existing file to copy, must not be null
param
destFile the new file, must not be null
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs during copying
see
#copyFileToDirectory(File, File)

        copyFile(srcFile, destFile, true);
    
public static voidcopyFile(java.io.File srcFile, java.io.File destFile, boolean preserveFileDate)
Copies a file to a new location.

This method copies the contents of the specified source file to the specified destination file. The directory holding the destination file is created if it does not exist. If the destination file exists, then this method will overwrite it.

param
srcFile an existing file to copy, must not be null
param
destFile the new file, must not be null
param
preserveFileDate true if the file date of the copy should be the same as the original
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs during copying
see
#copyFileToDirectory(File, File, boolean)

        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 be created");
            }
        }
        if (destFile.exists() && destFile.canWrite() == false) {
            throw new IOException("Destination '" + destFile + "' exists but is read-only");
        }
        doCopyFile(srcFile, destFile, preserveFileDate);
    
public static voidcopyFileToDirectory(java.io.File srcFile, java.io.File destDir)
Copies a file to a directory preserving the file date.

This method copies the contents of the specified source file to a file of the same name in the specified destination directory. The destination directory is created if it does not exist. If the destination file exists, then this method will overwrite it.

param
srcFile an existing file to copy, must not be null
param
destDir the directory to place the copy in, must not be null
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs during copying
see
#copyFile(File, File, boolean)

        copyFileToDirectory(srcFile, destDir, true);
    
public static voidcopyFileToDirectory(java.io.File srcFile, java.io.File destDir, boolean preserveFileDate)
Copies a file to a directory optionally preserving the file date.

This method copies the contents of the specified source file to a file of the same name in the specified destination directory. The destination directory is created if it does not exist. If the destination file exists, then this method will overwrite it.

param
srcFile an existing file to copy, must not be null
param
destDir the directory to place the copy in, must not be null
param
preserveFileDate true if the file date of the copy should be the same as the original
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs during copying
see
#copyFile(File, File, boolean)
since
Commons IO 1.3

        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");
        }
        copyFile(srcFile, new File(destDir, srcFile.getName()), preserveFileDate);
    
public static voidcopyURLToFile(java.net.URL source, java.io.File destination)
Copies bytes from the URL source to a file destination. The directories up to destination will be created if they don't already exist. destination will be overwritten if it already exists.

param
source the URL to copy bytes from, must not be null
param
destination the non-directory File to write bytes to (possibly overwriting), must not be null
throws
IOException if source URL cannot be opened
throws
IOException if destination is a directory
throws
IOException if destination cannot be written
throws
IOException if destination needs creating but can't be
throws
IOException if an IO error occurs during copying

        InputStream input = source.openStream();
        try {
            FileOutputStream output = openOutputStream(destination);
            try {
                IOUtils.copy(input, output);
            } finally {
                IOUtils.closeQuietly(output);
            }
        } finally {
            IOUtils.closeQuietly(input);
        }
    
public static voiddeleteDirectory(java.io.File directory)
Deletes a directory recursively.

param
directory directory to delete
throws
IOException in case deletion is unsuccessful

        if (!directory.exists()) {
            return;
        }

        cleanDirectory(directory);
        if (!directory.delete()) {
            String message =
                "Unable to delete directory " + directory + ".";
            throw new IOException(message);
        }
    
private static voiddeleteDirectoryOnExit(java.io.File directory)
Schedules a directory recursively for deletion on JVM exit.

param
directory directory to delete, must not be null
throws
NullPointerException if the directory is null
throws
IOException in case deletion is unsuccessful

        if (!directory.exists()) {
            return;
        }

        cleanDirectoryOnExit(directory);
        directory.deleteOnExit();
    
public static booleandeleteQuietly(java.io.File file)
Deletes a file, never throwing an exception. If file is a directory, delete it and all sub-directories.

The difference between File.delete() and this method are:

  • A directory to be deleted does not have to be empty.
  • No exceptions are thrown when a file or directory cannot be deleted.

param
file file or directory to delete, can be null
return
true if the file or directory was deleted, otherwise false
since
Commons IO 1.4

        if (file == null) {
            return false;
        }
        try {
            if (file.isDirectory()) {
                cleanDirectory(file);
            }
        } catch (Exception e) {
        }

        try {
            return file.delete();
        } catch (Exception e) {
            return false;
        }
    
private static voiddoCopyDirectory(java.io.File srcDir, java.io.File destDir, java.io.FileFilter filter, boolean preserveFileDate, java.util.List exclusionList)
Internal copy directory method.

param
srcDir the validated source directory, must not be null
param
destDir the validated destination directory, must not be null
param
filter the filter to apply, null means copy all directories and files
param
preserveFileDate whether to preserve the file date
param
exclusionList List of files and directories to exclude from the copy, may be null
throws
IOException if an error occurs
since
Commons IO 1.1

        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 (preserveFileDate) {
                destDir.setLastModified(srcDir.lastModified());
            }
        }
        if (destDir.canWrite() == false) {
            throw new IOException("Destination '" + destDir + "' cannot be written to");
        }
        // 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);
        }
        for (int i = 0; i < files.length; i++) {
            File copiedFile = new File(destDir, files[i].getName());
            if (exclusionList == null || !exclusionList.contains(files[i].getCanonicalPath())) {
                if (files[i].isDirectory()) {
                    doCopyDirectory(files[i], copiedFile, filter, preserveFileDate, exclusionList);
                } else {
                    doCopyFile(files[i], copiedFile, preserveFileDate);
                }
            }
        }
    
private static voiddoCopyFile(java.io.File srcFile, java.io.File destFile, boolean preserveFileDate)
Internal copy file method.

param
srcFile the validated source file, must not be null
param
destFile the validated destination file, must not be null
param
preserveFileDate whether to preserve the file date
throws
IOException if an error occurs

        if (destFile.exists() && destFile.isDirectory()) {
            throw new IOException("Destination '" + destFile + "' exists but is a directory");
        }

        FileInputStream input = new FileInputStream(srcFile);
        try {
            FileOutputStream output = new FileOutputStream(destFile);
            try {
                IOUtils.copy(input, output);
            } finally {
                IOUtils.closeQuietly(output);
            }
        } finally {
            IOUtils.closeQuietly(input);
        }

        if (srcFile.length() != destFile.length()) {
            throw new IOException("Failed to copy full contents from '" +
                    srcFile + "' to '" + destFile + "'");
        }
        if (preserveFileDate) {
            destFile.setLastModified(srcFile.lastModified());
        }
    
public static voidforceDelete(java.io.File file)
Deletes a file. If file is a directory, delete it and all sub-directories.

The difference between File.delete() and this method are:

  • A directory to be deleted does not have to be empty.
  • You get exceptions when a file or directory cannot be deleted. (java.io.File methods returns a boolean)

param
file file or directory to delete, must not be null
throws
NullPointerException if the directory is null
throws
FileNotFoundException if the file was not found
throws
IOException in case deletion is unsuccessful

        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 delete file: " + file;
                throw new IOException(message);
            }
        }
    
public static voidforceDeleteOnExit(java.io.File file)
Schedules a file to be deleted when JVM exits. If file is directory delete it and all sub-directories.

param
file file or directory to delete, must not be null
throws
NullPointerException if the file is null
throws
IOException in case deletion is unsuccessful

        if (file.isDirectory()) {
            deleteDirectoryOnExit(file);
        } else {
            file.deleteOnExit();
        }
    
public static voidforceMkdir(java.io.File directory)
Makes a directory, including any necessary but nonexistent parent directories. If there already exists a file with specified name or the directory cannot be created then an exception is thrown.

param
directory directory to create, must not be null
throws
NullPointerException if the directory is null
throws
IOException if the directory cannot be created

        if (directory.exists()) {
            if (directory.isFile()) {
                String message =
                    "File "
                        + directory
                        + " exists and is "
                        + "not a directory. Unable to create directory.";
                throw new IOException(message);
            }
        } else {
            if (!directory.mkdirs()) {
                String message =
                    "Unable to create directory " + directory;
                throw new IOException(message);
            }
        }
    
private static voidinnerListFiles(java.util.Collection files, java.io.File directory, org.apache.commons.io.filefilter.IOFileFilter filter)
Finds files within a given directory (and optionally its subdirectories). All files found are filtered by an IOFileFilter.

param
files the collection of files found.
param
directory the directory to search in.
param
filter the filter to apply to files and directories.

        File[] found = directory.listFiles((FileFilter) filter);
        if (found != null) {
            for (int i = 0; i < found.length; i++) {
                if (found[i].isDirectory()) {
                    innerListFiles(files, found[i], filter);
                } else {
                    files.add(found[i]);
                }
            }
        }
    
public static booleanisFileNewer(java.io.File file, java.io.File reference)
Tests if the specified File is newer than the reference File.

param
file the File of which the modification date must be compared, must not be null
param
reference the File of which the modification date is used, must not be null
return
true if the File exists and has been modified more recently than the reference File
throws
IllegalArgumentException if the file is null
throws
IllegalArgumentException if the reference file is null or doesn't exist

        if (reference == null) {
            throw new IllegalArgumentException("No specified reference file");
        }
        if (!reference.exists()) {
            throw new IllegalArgumentException("The reference file '"
                    + file + "' doesn't exist");
        }
        return isFileNewer(file, reference.lastModified());
    
public static booleanisFileNewer(java.io.File file, java.util.Date date)
Tests if the specified File is newer than the specified Date.

param
file the File of which the modification date must be compared, must not be null
param
date the date reference, must not be null
return
true if the File exists and has been modified after the given Date.
throws
IllegalArgumentException if the file is null
throws
IllegalArgumentException if the date is null

        if (date == null) {
            throw new IllegalArgumentException("No specified date");
        }
        return isFileNewer(file, date.getTime());
    
public static booleanisFileNewer(java.io.File file, long timeMillis)
Tests if the specified File is newer than the specified time reference.

param
file the File of which the modification date must be compared, must not be null
param
timeMillis the time reference measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970)
return
true if the File exists and has been modified after the given time reference.
throws
IllegalArgumentException if the file is null

        if (file == null) {
            throw new IllegalArgumentException("No specified file");
        }
        if (!file.exists()) {
            return false;
        }
        return file.lastModified() > timeMillis;
    
public static booleanisFileOlder(java.io.File file, java.io.File reference)
Tests if the specified File is older than the reference File.

param
file the File of which the modification date must be compared, must not be null
param
reference the File of which the modification date is used, must not be null
return
true if the File exists and has been modified before the reference File
throws
IllegalArgumentException if the file is null
throws
IllegalArgumentException if the reference file is null or doesn't exist

        if (reference == null) {
            throw new IllegalArgumentException("No specified reference file");
        }
        if (!reference.exists()) {
            throw new IllegalArgumentException("The reference file '"
                    + file + "' doesn't exist");
        }
        return isFileOlder(file, reference.lastModified());
    
public static booleanisFileOlder(java.io.File file, java.util.Date date)
Tests if the specified File is older than the specified Date.

param
file the File of which the modification date must be compared, must not be null
param
date the date reference, must not be null
return
true if the File exists and has been modified before the given Date.
throws
IllegalArgumentException if the file is null
throws
IllegalArgumentException if the date is null

        if (date == null) {
            throw new IllegalArgumentException("No specified date");
        }
        return isFileOlder(file, date.getTime());
    
public static booleanisFileOlder(java.io.File file, long timeMillis)
Tests if the specified File is older than the specified time reference.

param
file the File of which the modification date must be compared, must not be null
param
timeMillis the time reference measured in milliseconds since the epoch (00:00:00 GMT, January 1, 1970)
return
true if the File exists and has been modified before the given time reference.
throws
IllegalArgumentException if the file is null

        if (file == null) {
            throw new IllegalArgumentException("No specified file");
        }
        if (!file.exists()) {
            return false;
        }
        return file.lastModified() < timeMillis;
    
public static java.util.IteratoriterateFiles(java.io.File directory, java.lang.String[] extensions, boolean recursive)
Allows iteration over the files in a given directory (and optionally its subdirectories) which match an array of extensions. This method is based on {@link #listFiles(File, String[], boolean)}.

param
directory the directory to search in
param
extensions an array of extensions, ex. {"java","xml"}. If this parameter is null, all files are returned.
param
recursive if true all subdirectories are searched as well
return
an iterator of java.io.File with the matching files
since
Commons IO 1.2

        return listFiles(directory, extensions, recursive).iterator();
    
public static java.util.IteratoriterateFiles(java.io.File directory, org.apache.commons.io.filefilter.IOFileFilter fileFilter, org.apache.commons.io.filefilter.IOFileFilter dirFilter)
Allows iteration over the files in given directory (and optionally its subdirectories).

All files found are filtered by an IOFileFilter. This method is based on {@link #listFiles(File, IOFileFilter, IOFileFilter)}.

param
directory the directory to search in
param
fileFilter filter to apply when finding files.
param
dirFilter optional filter to apply when finding subdirectories. If this parameter is null, subdirectories will not be included in the search. Use TrueFileFilter.INSTANCE to match all directories.
return
an iterator of java.io.File for the matching files
see
org.apache.commons.io.filefilter.FileFilterUtils
see
org.apache.commons.io.filefilter.NameFileFilter
since
Commons IO 1.2

        return listFiles(directory, fileFilter, dirFilter).iterator();
    
public static org.apache.commons.io.LineIteratorlineIterator(java.io.File file, java.lang.String encoding)
Returns an Iterator for the lines in a File.

This method opens an InputStream for the file. When you have finished with the iterator you should close the stream to free internal resources. This can be done by calling the {@link LineIterator#close()} or {@link LineIterator#closeQuietly(LineIterator)} method.

The recommended usage pattern is:

LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try {
while (it.hasNext()) {
String line = it.nextLine();
/// do something with line
}
} finally {
LineIterator.closeQuietly(iterator);
}

If an exception occurs during the creation of the iterator, the underlying stream is closed.

param
file the file to open for input, must not be null
param
encoding the encoding to use, null means platform default
return
an Iterator of the lines in the file, never null
throws
IOException in case of an I/O error (file closed)
since
Commons IO 1.2

        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;
        }
    
public static org.apache.commons.io.LineIteratorlineIterator(java.io.File file)
Returns an Iterator for the lines in a File using the default encoding for the VM.

param
file the file to open for input, must not be null
return
an Iterator of the lines in the file, never null
throws
IOException in case of an I/O error (file closed)
since
Commons IO 1.3
see
#lineIterator(File, String)

        return lineIterator(file, null);
    
public static java.util.CollectionlistFiles(java.io.File directory, java.lang.String[] extensions, boolean recursive)
Finds files within a given directory (and optionally its subdirectories) which match an array of extensions.

param
directory the directory to search in
param
extensions an array of extensions, ex. {"java","xml"}. If this parameter is null, all files are returned.
param
recursive if true all subdirectories are searched as well
return
an collection of java.io.File with the matching files

        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));
    
public static java.util.CollectionlistFiles(java.io.File directory, org.apache.commons.io.filefilter.IOFileFilter fileFilter, org.apache.commons.io.filefilter.IOFileFilter dirFilter)
Finds files within a given directory (and optionally its subdirectories). All files found are filtered by an IOFileFilter.

If your search should recurse into subdirectories you can pass in an IOFileFilter for directories. You don't need to bind a DirectoryFileFilter (via logical AND) to this filter. This method does that for you.

An example: If you want to search through all directories called "temp" you pass in FileFilterUtils.NameFileFilter("temp")

Another common usage of this method is find files in a directory tree but ignoring the directories generated CVS. You can simply pass in FileFilterUtils.makeCVSAware(null).

param
directory the directory to search in
param
fileFilter filter to apply when finding files.
param
dirFilter optional filter to apply when finding subdirectories. If this parameter is null, subdirectories will not be included in the search. Use TrueFileFilter.INSTANCE to match all directories.
return
an collection of java.io.File with the matching files
see
org.apache.commons.io.filefilter.FileFilterUtils
see
org.apache.commons.io.filefilter.NameFileFilter

        if (!directory.isDirectory()) {
            throw new IllegalArgumentException(
                    "Parameter 'directory' is not a directory");
        }
        if (fileFilter == null) {
            throw new NullPointerException("Parameter 'fileFilter' is null");
        }

        //Setup effective file filter
        IOFileFilter effFileFilter = FileFilterUtils.andFileFilter(fileFilter,
            FileFilterUtils.notFileFilter(DirectoryFileFilter.INSTANCE));

        //Setup effective directory filter
        IOFileFilter effDirFilter;
        if (dirFilter == null) {
            effDirFilter = FalseFileFilter.INSTANCE;
        } else {
            effDirFilter = FileFilterUtils.andFileFilter(dirFilter,
                DirectoryFileFilter.INSTANCE);
        }

        //Find files
        Collection files = new java.util.LinkedList();
        innerListFiles(files, directory,
            FileFilterUtils.orFileFilter(effFileFilter, effDirFilter));
        return files;
    
public static voidmoveDirectory(java.io.File srcDir, java.io.File destDir)
Moves a directory.

When the destination directory is on another file system, do a "copy and delete".

param
srcDir the directory to be moved
param
destDir the destination directory
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs moving the file
since
Commons IO 1.4

        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 IOException("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 copy to '" + destDir + "'");
            }
        }
    
public static voidmoveDirectoryToDirectory(java.io.File src, java.io.File destDir, boolean createDestDir)
Moves a directory to another directory.

param
src the file to be moved
param
destDir the destination file
param
createDestDir If true create the destination directory, otherwise if false throw an IOException
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs moving the file
since
Commons IO 1.4

        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, new File(destDir, src.getName()));
    
    
public static voidmoveFile(java.io.File srcFile, java.io.File destFile)
Moves a file.

When the destination file is on another file system, do a "copy and delete".

param
srcFile the file to be moved
param
destFile the destination file
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs moving the file
since
Commons IO 1.4

        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 IOException("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 + "'");
            }
        }
    
public static voidmoveFileToDirectory(java.io.File srcFile, java.io.File destDir, boolean createDestDir)
Moves a file to a directory.

param
srcFile the file to be moved
param
destDir the destination file
param
createDestDir If true create the destination directory, otherwise if false throw an IOException
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs moving the file
since
Commons IO 1.4

        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()));
    
public static voidmoveToDirectory(java.io.File src, java.io.File destDir, boolean createDestDir)
Moves a file or directory to the destination directory.

When the destination is on another file system, do a "copy and delete".

param
src the file or directory to be moved
param
destDir the destination directory
param
createDestDir If true create the destination directory, otherwise if false throw an IOException
throws
NullPointerException if source or destination is null
throws
IOException if source or destination is invalid
throws
IOException if an IO error occurs moving the file
since
Commons IO 1.4

        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 not exist");
        }
        if (src.isDirectory()) {
            moveDirectoryToDirectory(src, destDir, createDestDir);
        } else {
            moveFileToDirectory(src, destDir, createDestDir);
        }
    
public static java.io.FileInputStreamopenInputStream(java.io.File file)
Opens a {@link FileInputStream} for the specified file, providing better error messages than simply calling new FileInputStream(file).

At the end of the method either the stream will be successfully opened, or an exception will have been thrown.

An exception is thrown if the file does not exist. An exception is thrown if the file object exists but is a directory. An exception is thrown if the file exists but cannot be read.

param
file the file to open for input, must not be null
return
a new {@link FileInputStream} for the specified file
throws
FileNotFoundException if the file does not exist
throws
IOException if the file object is a directory
throws
IOException if the file cannot be read
since
Commons IO 1.3


    //-----------------------------------------------------------------------
                                                                                                                                       
           
        if (file.exists()) {
            if (file.isDirectory()) {
                throw new IOException("File '" + file + "' exists but is a directory");
            }
            if (file.canRead() == false) {
                throw new IOException("File '" + file + "' cannot be read");
            }
        } else {
            throw new FileNotFoundException("File '" + file + "' does not exist");
        }
        return new FileInputStream(file);
    
public static java.io.FileOutputStreamopenOutputStream(java.io.File file)
Opens a {@link FileOutputStream} for the specified file, checking and creating the parent directory if it does not exist.

At the end of the method either the stream will be successfully opened, or an exception will have been thrown.

The parent directory will be created if it does not exist. The file will be created if it does not exist. An exception is thrown if the file object exists but is a directory. An exception is thrown if the file exists but cannot be written to. An exception is thrown if the parent directory cannot be created.

param
file the file to open for output, must not be null
return
a new {@link FileOutputStream} for the specified file
throws
IOException if the file object is a directory
throws
IOException if the file cannot be written to
throws
IOException if a parent directory needs creating but that fails
since
Commons IO 1.3

        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);
    
public static byte[]readFileToByteArray(java.io.File file)
Reads the contents of a file into a byte array. The file is always closed.

param
file the file to read, must not be null
return
the file contents, never null
throws
IOException in case of an I/O error
since
Commons IO 1.1

        InputStream in = null;
        try {
            in = openInputStream(file);
            return IOUtils.toByteArray(in);
        } finally {
            IOUtils.closeQuietly(in);
        }
    
public static java.lang.StringreadFileToString(java.io.File file, java.lang.String encoding)
Reads the contents of a file into a String. The file is always closed.

param
file the file to read, must not be null
param
encoding the encoding to use, null means platform default
return
the file contents, never null
throws
IOException in case of an I/O error
throws
java.io.UnsupportedEncodingException if the encoding is not supported by the VM

        InputStream in = null;
        try {
            in = openInputStream(file);
            return IOUtils.toString(in, encoding);
        } finally {
            IOUtils.closeQuietly(in);
        }
    
public static java.lang.StringreadFileToString(java.io.File file)
Reads the contents of a file into a String using the default encoding for the VM. The file is always closed.

param
file the file to read, must not be null
return
the file contents, never null
throws
IOException in case of an I/O error
since
Commons IO 1.3.1

        return readFileToString(file, null);
    
public static java.util.ListreadLines(java.io.File file, java.lang.String encoding)
Reads the contents of a file line by line to a List of Strings. The file is always closed.

param
file the file to read, must not be null
param
encoding the encoding to use, null means platform default
return
the list of Strings representing each line in the file, never null
throws
IOException in case of an I/O error
throws
java.io.UnsupportedEncodingException if the encoding is not supported by the VM
since
Commons IO 1.1

        InputStream in = null;
        try {
            in = openInputStream(file);
            return IOUtils.readLines(in, encoding);
        } finally {
            IOUtils.closeQuietly(in);
        }
    
public static java.util.ListreadLines(java.io.File file)
Reads the contents of a file line by line to a List of Strings using the default encoding for the VM. The file is always closed.

param
file the file to read, must not be null
return
the list of Strings representing each line in the file, never null
throws
IOException in case of an I/O error
since
Commons IO 1.3

        return readLines(file, null);
    
public static longsizeOfDirectory(java.io.File directory)
Counts the size of a directory recursively (sum of the length of all files).

param
directory directory to inspect, must not be null
return
size of directory in bytes, 0 if directory is security restricted
throws
NullPointerException if the directory is null

        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 (int i = 0; i < files.length; i++) {
            File file = files[i];

            if (file.isDirectory()) {
                size += sizeOfDirectory(file);
            } else {
                size += file.length();
            }
        }

        return size;
    
public static java.io.FiletoFile(java.net.URL url)
Convert from a URL to a File.

From version 1.1 this method will decode the URL. Syntax such as file:///my%20docs/file.txt will be correctly decoded to /my docs/file.txt.

param
url the file URL to convert, null returns null
return
the equivalent File object, or null if the URL's protocol is not file
throws
IllegalArgumentException if the file is incorrectly encoded

        if (url == null || !url.getProtocol().equals("file")) {
            return null;
        } else {
            String filename = url.getFile().replace('/", File.separatorChar);
            int pos =0;
            while ((pos = filename.indexOf('%", pos)) >= 0) {
                if (pos + 2 < filename.length()) {
                    String hexStr = filename.substring(pos + 1, pos + 3);
                    char ch = (char) Integer.parseInt(hexStr, 16);
                    filename = filename.substring(0, pos) + ch + filename.substring(pos + 3);
                }
            }
            return new File(filename);
        }
    
public static java.io.File[]toFiles(java.net.URL[] urls)
Converts each of an array of URL to a File.

Returns an array of the same size as the input. If the input is null, an empty array is returned. If the input contains null, the output array contains null at the same index.

This method will decode the URL. Syntax such as file:///my%20docs/file.txt will be correctly decoded to /my docs/file.txt.

param
urls the file URLs to convert, null returns empty array
return
a non-null array of Files matching the input, with a null item if there was a null at that index in the input array
throws
IllegalArgumentException if any file is not a URL file
throws
IllegalArgumentException if any file is incorrectly encoded
since
Commons IO 1.1

        if (urls == null || urls.length == 0) {
            return EMPTY_FILE_ARRAY;
        }
        File[] files = new File[urls.length];
        for (int i = 0; i < urls.length; i++) {
            URL url = urls[i];
            if (url != null) {
                if (url.getProtocol().equals("file") == false) {
                    throw new IllegalArgumentException(
                            "URL could not be converted to a File: " + url);
                }
                files[i] = toFile(url);
            }
        }
        return files;
    
private static java.lang.String[]toSuffixes(java.lang.String[] extensions)
Converts an array of file extensions to suffixes for use with IOFileFilters.

param
extensions an array of extensions. Format: {"java", "xml"}
return
an array of suffixes. Format: {".java", ".xml"}

        String[] suffixes = new String[extensions.length];
        for (int i = 0; i < extensions.length; i++) {
            suffixes[i] = "." + extensions[i];
        }
        return suffixes;
    
public static java.net.URL[]toURLs(java.io.File[] files)
Converts each of an array of File to a URL.

Returns an array of the same size as the input.

param
files the files to convert
return
an array of URLs matching the input
throws
IOException if a file cannot be converted

        URL[] urls = new URL[files.length];

        for (int i = 0; i < urls.length; i++) {
            urls[i] = files[i].toURL();
        }

        return urls;
    
public static voidtouch(java.io.File file)
Implements the same behaviour as the "touch" utility on Unix. It creates a new file with size 0 or, if the file exists already, it is opened and closed without modifying it, but updating the file date and time.

NOTE: As from v1.3, this method throws an IOException if the last modified date of the file cannot be set. Also, as from v1.3 this method creates parent directories if they do not exist.

param
file the File to touch
throws
IOException If an I/O problem occurs

        if (!file.exists()) {
            OutputStream out = openOutputStream(file);
            IOUtils.closeQuietly(out);
        }
        boolean success = file.setLastModified(System.currentTimeMillis());
        if (!success) {
            throw new IOException("Unable to set the last modification time for " + file);
        }
    
public static booleanwaitFor(java.io.File file, int seconds)
Waits for NFS to propagate a file creation, imposing a timeout.

This method repeatedly tests {@link File#exists()} until it returns true up to the maximum time specified in seconds.

param
file the file to check, must not be null
param
seconds the maximum time in seconds to wait
return
true if file exists
throws
NullPointerException if the file is null

        int timeout = 0;
        int tick = 0;
        while (!file.exists()) {
            if (tick++ >= 10) {
                tick = 0;
                if (timeout++ > seconds) {
                    return false;
                }
            }
            try {
                Thread.sleep(100);
            } catch (InterruptedException ignore) {
                // ignore exception
            } catch (Exception ex) {
                break;
            }
        }
        return true;
    
public static voidwriteByteArrayToFile(java.io.File file, byte[] data)
Writes a byte array to a file creating the file if it does not exist.

NOTE: As from v1.3, the parent directories of the file will be created if they do not exist.

param
file the file to write to
param
data the content to write to the file
throws
IOException in case of an I/O error
since
Commons IO 1.1

        OutputStream out = null;
        try {
            out = openOutputStream(file);
            out.write(data);
        } finally {
            IOUtils.closeQuietly(out);
        }
    
public static voidwriteLines(java.io.File file, java.lang.String encoding, java.util.Collection lines)
Writes the toString() value of each item in a collection to the specified File line by line. The specified character encoding and the default line ending will be used.

NOTE: As from v1.3, the parent directories of the file will be created if they do not exist.

param
file the file to write to
param
encoding the encoding to use, null means platform default
param
lines the lines to write, null entries produce blank lines
throws
IOException in case of an I/O error
throws
java.io.UnsupportedEncodingException if the encoding is not supported by the VM
since
Commons IO 1.1

        writeLines(file, encoding, lines, null);
    
public static voidwriteLines(java.io.File file, java.util.Collection lines)
Writes the toString() value of each item in a collection to the specified File line by line. The default VM encoding and the default line ending will be used.

param
file the file to write to
param
lines the lines to write, null entries produce blank lines
throws
IOException in case of an I/O error
since
Commons IO 1.3

        writeLines(file, null, lines, null);
    
public static voidwriteLines(java.io.File file, java.lang.String encoding, java.util.Collection lines, java.lang.String lineEnding)
Writes the toString() value of each item in a collection to the specified File line by line. The specified character encoding and the line ending will be used.

NOTE: As from v1.3, the parent directories of the file will be created if they do not exist.

param
file the file to write to
param
encoding the encoding to use, null means platform default
param
lines the lines to write, null entries produce blank lines
param
lineEnding the line separator to use, null is system default
throws
IOException in case of an I/O error
throws
java.io.UnsupportedEncodingException if the encoding is not supported by the VM
since
Commons IO 1.1

        OutputStream out = null;
        try {
            out = openOutputStream(file);
            IOUtils.writeLines(lines, lineEnding, out, encoding);
        } finally {
            IOUtils.closeQuietly(out);
        }
    
public static voidwriteLines(java.io.File file, java.util.Collection lines, java.lang.String lineEnding)
Writes the toString() value of each item in a collection to the specified File line by line. The default VM encoding and the specified line ending will be used.

param
file the file to write to
param
lines the lines to write, null entries produce blank lines
param
lineEnding the line separator to use, null is system default
throws
IOException in case of an I/O error
since
Commons IO 1.3

        writeLines(file, null, lines, lineEnding);
    
public static voidwriteStringToFile(java.io.File file, java.lang.String data, java.lang.String encoding)
Writes a String to a file creating the file if it does not exist. NOTE: As from v1.3, the parent directories of the file will be created if they do not exist.

param
file the file to write
param
data the content to write to the file
param
encoding the encoding to use, null means platform default
throws
IOException in case of an I/O error
throws
java.io.UnsupportedEncodingException if the encoding is not supported by the VM

        OutputStream out = null;
        try {
            out = openOutputStream(file);
            IOUtils.write(data, out, encoding);
        } finally {
            IOUtils.closeQuietly(out);
        }
    
public static voidwriteStringToFile(java.io.File file, java.lang.String data)
Writes a String to a file creating the file if it does not exist using the default encoding for the VM.

param
file the file to write
param
data the content to write to the file
throws
IOException in case of an I/O error

        writeStringToFile(file, data, null);