net.i2p.util
Class FileUtil

java.lang.Object
  extended by net.i2p.util.FileUtil

public class FileUtil
extends Object

General helper methods for messing with files These are static methods that do NOT convert arguments to absolute paths for a particular context and directory. Callers should ALWAYS provide absolute paths as arguments, and should NEVER assume files are in the current working directory.


Constructor Summary
FileUtil()
           
 
Method Summary
static boolean copy(File src, File dst, boolean overwriteExisting, boolean quiet)
           
static boolean copy(String source, String dest, boolean overwriteExisting)
           
static boolean copy(String source, String dest, boolean overwriteExisting, boolean quiet)
           
static boolean extractZip(File zipfile, File targetDir)
          As of release 0.7.12, any files inside the zip that have a .jar.pack or .war.pack suffix are transparently unpacked to a .jar or .war file using unpack200.
static boolean extractZip(File zipfile, File targetDir, int logLevel)
           
static boolean isPack200Supported()
          Public since 0.8.3
static void main(String[] args)
          Usage: FileUtil (delete path | copy source dest | rename from to | unzip path.zip)
static void readFile(String path, String root, OutputStream out)
          Dump the contents of the given path (relative to the root) to the output stream.
static String readTextFile(String filename, int maxNumLines, boolean startAtBeginning)
          Read in the last few lines of a (newline delimited) textfile, or null if the file doesn't exist.
static boolean rename(File from, File to)
          Try to rename, if it doesn't work then copy and delete the old.
static boolean rmdir(File target, boolean failIfNotEmpty)
          Delete the path as well as any files or directories underneath it.
static boolean rmdir(String path, boolean failIfNotEmpty)
          Delete the path as well as any files or directories underneath it.
static boolean verifyZip(File zipfile)
          Verify the integrity of a zipfile.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FileUtil

public FileUtil()
Method Detail

rmdir

public static final boolean rmdir(String path,
                                  boolean failIfNotEmpty)
Delete the path as well as any files or directories underneath it.

Parameters:
path - path to the directory being deleted
failIfNotEmpty - if true, do not delete anything if the directory is not empty (and return false)
Returns:
true if the path no longer exists (aka was removed), false if it remains

rmdir

public static final boolean rmdir(File target,
                                  boolean failIfNotEmpty)
Delete the path as well as any files or directories underneath it.

Parameters:
target - the file or directory being deleted
failIfNotEmpty - if true, do not delete anything if the directory is not empty (and return false)
Returns:
true if the path no longer exists (aka was removed), false if it remains

extractZip

public static boolean extractZip(File zipfile,
                                 File targetDir)
As of release 0.7.12, any files inside the zip that have a .jar.pack or .war.pack suffix are transparently unpacked to a .jar or .war file using unpack200. Logs at WARN level to wrapper.log


extractZip

public static boolean extractZip(File zipfile,
                                 File targetDir,
                                 int logLevel)
Parameters:
logLevel - Log.WARN, etc.
Returns:
true if it was copied successfully
Since:
0.9.7

verifyZip

public static boolean verifyZip(File zipfile)
Verify the integrity of a zipfile. There doesn't seem to be any library function to do this, so we basically go through all the motions of extractZip() above, unzipping everything but throwing away the data. Todo: verify zip header? Although this would break the undocumented practice of renaming the i2pupdate.sud file to i2pupdate.zip and letting the unzip method skip over the leading 56 bytes of "junk" (sig and version)

Returns:
true if ok

isPack200Supported

public static boolean isPack200Supported()
Public since 0.8.3

Since:
0.8.1

readTextFile

public static String readTextFile(String filename,
                                  int maxNumLines,
                                  boolean startAtBeginning)
Read in the last few lines of a (newline delimited) textfile, or null if the file doesn't exist. Warning - this inefficiently allocates a StringBuilder of size maxNumLines*80, so don't make it too big. Warning - converts \r\n to \n

Parameters:
startAtBeginning - if true, read the first maxNumLines, otherwise read the last maxNumLines
maxNumLines - max number of lines (or -1 for unlimited)
Returns:
string or null; does not throw IOException.

readFile

public static void readFile(String path,
                            String root,
                            OutputStream out)
                     throws IOException
Dump the contents of the given path (relative to the root) to the output stream. The path must not go above the root, either - if it does, it will throw a FileNotFoundException Closes the OutputStream out on successful completion but leaves it open when throwing IOE.

Throws:
IOException

copy

public static boolean copy(String source,
                           String dest,
                           boolean overwriteExisting)
Returns:
true if it was copied successfully

copy

public static boolean copy(String source,
                           String dest,
                           boolean overwriteExisting,
                           boolean quiet)
Parameters:
quiet - don't log fails to wrapper log if true
Returns:
true if it was copied successfully

copy

public static boolean copy(File src,
                           File dst,
                           boolean overwriteExisting,
                           boolean quiet)
Parameters:
quiet - don't log fails to wrapper log if true
Returns:
true if it was copied successfully
Since:
0.8.8

rename

public static boolean rename(File from,
                             File to)
Try to rename, if it doesn't work then copy and delete the old. Always overwrites any existing "to" file. Method moved from SingleFileNamingService.

Returns:
true if it was renamed / copied successfully
Since:
0.8.8

main

public static void main(String[] args)
Usage: FileUtil (delete path | copy source dest | rename from to | unzip path.zip)