nl.knowledgeplaza.util
Class FileUtil

java.lang.Object
  extended by nl.knowledgeplaza.util.FileUtil

public class FileUtil
extends java.lang.Object

This class provides basic facilities for manipulating files and file paths.

Path-related methods

Methods exist to retrieve the components of a typical file path. For example /www/hosted/mysite/index.html, can be broken into:

There are also methods to concatenate two paths, resolve a path relative to a File and normalize(java.lang.String) a path.

File-related methods

There are methods to create a File from a URL, copy a File to a directory, copy a File to another File, copy a URL's contents to a File, as well as methods to delete and clean a directory.

Version:
$Revision: 1.3 $
Author:
$Author: toeukpap $

Method Summary
static void appendFile(java.io.File source, java.io.File destination)
          conveniance
static void appendToFile(java.io.File file, java.lang.String text)
          Append text to file
static void appendToFile(java.lang.String filename, java.lang.String text)
          Append text to file
static java.lang.String catPath(java.lang.String lookupPath, java.lang.String path)
          Will concatenate 2 paths.
static void cleanDirectory(java.io.File directory)
          Clean a directory without deleting it.
static void cleanDirectory(java.lang.String directory)
          Clean a directory without deleting it.
static boolean contentEquals(java.io.File file1, java.io.File file2)
          Compare the contents of two files to determine if they are equal or not.
static void copyFile(java.io.File source, java.io.File destination)
          conveniance
static void copyFile(java.io.File source, java.io.File destination, boolean append)
          Copy file from source to destination.
static void copyFileToDirectory(java.io.File source, java.io.File destinationDirectory)
          Copy file from source to destination.
static void copyFileToDirectory(java.lang.String source, java.lang.String destinationDirectory)
          Copy file from source to destination.
static void copyURLToFile(java.net.URL source, java.io.File destination)
          Copies bytes from the URL source to a file destination.
static java.io.File createTempDir()
          Create temp dir at the default location
static java.io.File createTempDir(java.lang.String prefix, java.lang.String suffix)
          Create a temp dir
static void deleteDirectory(java.io.File directory)
          Recursively delete a directory.
static void deleteDirectory(java.lang.String directory)
          Recursively delete a directory.
static void forceDelete(java.io.File file)
          Delete a file.
static void forceDelete(java.lang.String file)
          Delete a file.
static void forceDeleteOnExit(java.io.File file)
          Schedule a file to be deleted when JVM exits.
static void forceMkdir(java.io.File file)
          Make a directory.
static java.lang.String getExtension(java.lang.String filename)
          Get extension from filename.
static java.lang.String getPath(java.lang.String filepath)
          Get path from filename.
static java.lang.String getPath(java.lang.String filepath, char fileSeparatorChar)
          Get path from filename.
static java.lang.String normalize(java.lang.String path)
          Normalize a path.
static java.lang.String readIntoString(java.io.File file)
          Read a whole stream into a string
static java.lang.String readIntoString(java.io.Reader reader)
          Read a whole stream into a string
static java.lang.String removeExtension(java.lang.String filename)
          Remove extension from filename.
static java.lang.String removePath(java.lang.String filepath)
          Remove path from filename.
static java.lang.String removePath(java.lang.String filepath, char fileSeparatorChar)
          Remove path from filename.
static java.io.File resolveFile(java.io.File baseFile, java.lang.String filename)
          Resolve a file filename to it's canonical form.
static java.lang.String sanatizeFilename(java.lang.String filename)
           
static long sizeOfDirectory(java.io.File directory)
          Recursively count size of a directory.
static long sizeOfDirectory(java.lang.String directory)
          Recursively count size of a directory.
static java.io.File toFile(java.net.URL url)
          Convert from a URL to a File.
static java.net.URL[] toURLs(java.io.File[] files)
          Convert the array of Files into a list of URLs.
static void writeToFile(java.io.File file, boolean append, java.lang.String text)
          Write text to file
static void writeToFile(java.lang.String filename, boolean append, java.lang.String text)
          Write text to file
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

readIntoString

public static java.lang.String readIntoString(java.io.File file)
                                       throws java.io.IOException,
                                              java.io.FileNotFoundException
Read a whole stream into a string

Parameters:
file -
Returns:
Throws:
java.io.IOException
java.io.FileNotFoundException

readIntoString

public static java.lang.String readIntoString(java.io.Reader reader)
                                       throws java.io.IOException
Read a whole stream into a string

Parameters:
reader -
Returns:
Throws:
java.io.IOException

contentEquals

public static boolean contentEquals(java.io.File file1,
                                    java.io.File file2)
                             throws java.io.IOException
Compare the contents of two files to determine if they are equal or not.

Parameters:
file1 - the first file
file2 - the second file
Returns:
true if the content of the files are equal or they both don't exist, false otherwise
Throws:
java.io.IOException

toFile

public static java.io.File toFile(java.net.URL url)
Convert from a URL to a File.

Parameters:
url - File URL.
Returns:
The equivalent File object, or null if the URL's protocol is not file

toURLs

public static java.net.URL[] toURLs(java.io.File[] files)
                             throws java.io.IOException
Convert the array of Files into a list of URLs.

Parameters:
files - the array of files
Returns:
the array of URLs
Throws:
java.io.IOException - if an error occurs

removeExtension

public static java.lang.String removeExtension(java.lang.String filename)
Remove extension from filename. ie
 foo.txt    --> foo
 a\b\c.jpg --> a\b\c
 a\b\c     --> a\b\c
 

Parameters:
filename - the filename
Returns:
the filename minus extension

getExtension

public static java.lang.String getExtension(java.lang.String filename)
Get extension from filename. ie
 foo.txt    --> "txt"
 a\b\c.jpg --> "jpg"
 a\b\c     --> ""
 

Parameters:
filename - the filename
Returns:
the extension of filename or "" if none

removePath

public static java.lang.String removePath(java.lang.String filepath)
Remove path from filename. Equivalent to the unix command basename ie.
 a/b/c.txt --> c.txt
 a.txt     --> a.txt
 

Parameters:
filepath - the filepath
Returns:
the filename minus path

removePath

public static java.lang.String removePath(java.lang.String filepath,
                                          char fileSeparatorChar)
Remove path from filename. ie.
 a/b/c.txt --> c.txt
 a.txt     --> a.txt
 

Parameters:
filepath - the filepath
Returns:
the filename minus path

getPath

public static java.lang.String getPath(java.lang.String filepath)
Get path from filename. Roughly equivalent to the unix command dirname. ie.
 a/b/c.txt --> a/b
 a.txt     --> ""
 

Parameters:
filepath - the filepath
Returns:
the filename minus path

getPath

public static java.lang.String getPath(java.lang.String filepath,
                                       char fileSeparatorChar)
Get path from filename. ie.
 a/b/c.txt --> a/b
 a.txt     --> ""
 

Parameters:
filepath - the filepath
Returns:
the filename minus path

copyFileToDirectory

public static void copyFileToDirectory(java.lang.String source,
                                       java.lang.String destinationDirectory)
                                throws java.io.IOException
Copy file from source to destination. If destinationDirectory does not exist, it (and any parent directories) will be created. If a file source in destinationDirectory exists, it will be overwritten.

Parameters:
source - An existing File to copy.
destinationDirectory - A directory to copy source into.
Throws:
java.io.FileNotFoundException - if source isn't a normal file.
java.lang.IllegalArgumentException - if destinationDirectory isn't a directory.
java.io.IOException - if source does not exist, the file in destinationDirectory cannot be written to, or an IO error occurs during copying.

copyFileToDirectory

public static void copyFileToDirectory(java.io.File source,
                                       java.io.File destinationDirectory)
                                throws java.io.IOException
Copy file from source to destination. If destinationDirectory does not exist, it (and any parent directories) will be created. If a file source in destinationDirectory exists, it will be overwritten.

Parameters:
source - An existing File to copy.
destinationDirectory - A directory to copy source into.
Throws:
java.io.FileNotFoundException - if source isn't a normal file.
java.lang.IllegalArgumentException - if destinationDirectory isn't a directory.
java.io.IOException - if source does not exist, the file in destinationDirectory cannot be written to, or an IO error occurs during copying.

copyFile

public static void copyFile(java.io.File source,
                            java.io.File destination)
                     throws java.io.IOException
conveniance

Parameters:
source -
destination -
Throws:
java.io.IOException

appendFile

public static void appendFile(java.io.File source,
                              java.io.File destination)
                       throws java.io.IOException
conveniance

Parameters:
source -
destination -
Throws:
java.io.IOException

copyFile

public static void copyFile(java.io.File source,
                            java.io.File destination,
                            boolean append)
                     throws java.io.IOException
Copy file from source to destination. The directories up to destination will be created if they don't already exist. destination will be overwritten if it already exists.

Parameters:
source - An existing non-directory File to copy bytes from.
destination - A non-directory File to write bytes to (possibly overwriting).
Throws:
java.io.IOException - if source does not exist, destination cannot be written to, or an IO error occurs during copying.
java.io.FileNotFoundException - if destination is a directory (use copyFileToDirectory(java.lang.String, java.lang.String)).

copyURLToFile

public static void copyURLToFile(java.net.URL source,
                                 java.io.File destination)
                          throws java.io.IOException
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.

Parameters:
source - A URL to copy bytes from.
destination - A non-directory File to write bytes to (possibly overwriting).
Throws:
java.io.IOException - if
  • source URL cannot be opened
  • destination cannot be written to
  • an IO error occurs during copying

normalize

public static final java.lang.String normalize(java.lang.String path)
Normalize a path. That means:

Note: note that this method has been tested with unix and windows only.

Eg:

 /foo//               -->     /foo/
 /foo/./              -->     /foo/
 /foo/../bar          -->     /bar
 /foo/../bar/         -->     /bar/
 /foo/../bar/../baz   -->     /baz
 //foo//./bar         -->     /foo/bar
 /../                 -->     null
 

Parameters:
path - the path to be normalized.
Returns:
the normalized path or null.
Throws:
java.lang.NullPointerException - if path is null.

catPath

public static java.lang.String catPath(java.lang.String lookupPath,
                                       java.lang.String path)
Will concatenate 2 paths. Paths with .. will be properly handled.

Eg.,
/a/b/c + d = /a/b/d
/a/b/c + ../d = /a/d

Note: this method handles java/unix style path only (separator is '/').

Returns:
The concatenated paths, or null if error occurs
Throws:
java.lang.NullPointerException - if any parameter is null.
See Also:
normalize(java.lang.String)

resolveFile

public static java.io.File resolveFile(java.io.File baseFile,
                                       java.lang.String filename)
Resolve a file filename to it's canonical form. If filename is relative (doesn't start with /), it will be resolved relative to baseFile, otherwise it is treated as a normal root-relative path.

Parameters:
baseFile - Where to resolve filename from, if filename is relative.
filename - Absolute or relative file path to resolve.
Returns:
The canonical File of filename.

forceDelete

public static void forceDelete(java.lang.String file)
                        throws java.io.IOException
Delete a file. If file is directory delete it and all sub-directories.

Throws:
java.io.IOException

forceDelete

public static void forceDelete(java.io.File file)
                        throws java.io.IOException
Delete a file. If file is directory delete it and all sub-directories.

Throws:
java.io.IOException

forceDeleteOnExit

public static void forceDeleteOnExit(java.io.File file)
                              throws java.io.IOException
Schedule a file to be deleted when JVM exits. If file is directory delete it and all sub-directories.

Throws:
java.io.IOException

forceMkdir

public static void forceMkdir(java.io.File file)
                       throws java.io.IOException
Make a directory. If there already exists a file with specified name or the directory is unable to be created then an exception is thrown.

Throws:
java.io.IOException

deleteDirectory

public static void deleteDirectory(java.lang.String directory)
                            throws java.io.IOException
Recursively delete a directory.

Throws:
java.io.IOException

deleteDirectory

public static void deleteDirectory(java.io.File directory)
                            throws java.io.IOException
Recursively delete a directory.

Throws:
java.io.IOException

cleanDirectory

public static void cleanDirectory(java.lang.String directory)
                           throws java.io.IOException
Clean a directory without deleting it.

Throws:
java.io.IOException

cleanDirectory

public static void cleanDirectory(java.io.File directory)
                           throws java.io.IOException
Clean a directory without deleting it.

Throws:
java.io.IOException

sizeOfDirectory

public static long sizeOfDirectory(java.lang.String directory)
Recursively count size of a directory.

Returns:
size of directory in bytes.

sizeOfDirectory

public static long sizeOfDirectory(java.io.File directory)
Recursively count size of a directory.

Returns:
size of directory in bytes.

appendToFile

public static void appendToFile(java.lang.String filename,
                                java.lang.String text)
Append text to file

Parameters:
filename -
text -

appendToFile

public static void appendToFile(java.io.File file,
                                java.lang.String text)
Append text to file

Parameters:
file -
text -

writeToFile

public static void writeToFile(java.lang.String filename,
                               boolean append,
                               java.lang.String text)
Write text to file

Parameters:
file -
text -
append -

writeToFile

public static void writeToFile(java.io.File file,
                               boolean append,
                               java.lang.String text)
Write text to file

Parameters:
file -
text -
append -

createTempDir

public static java.io.File createTempDir(java.lang.String prefix,
                                         java.lang.String suffix)
                                  throws java.io.IOException
Create a temp dir

Parameters:
prefix -
suffix -
Returns:
File of directory
Throws:
java.io.IOException

createTempDir

public static java.io.File createTempDir()
                                  throws java.io.IOException
Create temp dir at the default location

Returns:
File of directory
Throws:
java.io.IOException

sanatizeFilename

public static java.lang.String sanatizeFilename(java.lang.String filename)
Parameters:
filename -
Returns:


Copyright © 2010. All Rights Reserved.