org.apache.commons.io
Class FileSystemUtils

java.lang.Object
  extended by org.apache.commons.io.FileSystemUtils

public class FileSystemUtils
extends java.lang.Object

General File System utilities.

This class provides static utility methods for general file system functions not provided via the JDK File class.

The current functions provided are:

Since:
Commons IO 1.1
Version:
$Id: FileSystemUtils.java 453889 2006-10-07 11:56:25Z scolebourne $
Author:
Frank W. Zammetti, Stephen Colebourne, Thomas Ledoux, James Urie, Magnus Grimsell, Thomas Ledoux

Field Summary
private static int INIT_PROBLEM
          Operating system state flag for error.
private static FileSystemUtils INSTANCE
          Singleton instance, used mainly for testing.
private static int OS
          The operating system flag.
private static int OTHER
          Operating system state flag for neither Unix nor Windows.
private static int POSIX_UNIX
          Operating system state flag for Posix flavour Unix.
private static int UNIX
          Operating system state flag for Unix.
private static int WINDOWS
          Operating system state flag for Windows.
 
Constructor Summary
FileSystemUtils()
          Instances should NOT be constructed in standard programming.
 
Method Summary
static long freeSpace(java.lang.String path)
          Deprecated. Use freeSpaceKb(String) Deprecated from 1.3, may be removed in 2.0
static long freeSpaceKb(java.lang.String path)
          Returns the free space on a drive or volume in kilobytes by invoking the command line.
(package private)  long freeSpaceOS(java.lang.String path, int os, boolean kb)
          Returns the free space on a drive or volume in a cross-platform manner.
(package private)  long freeSpaceUnix(java.lang.String path, boolean kb, boolean posix)
          Find free space on the *nix platform using the 'df' command.
(package private)  long freeSpaceWindows(java.lang.String path)
          Find free space on the Windows platform using the 'dir' command.
(package private)  java.lang.Process openProcess(java.lang.String[] cmdAttribs)
          Opens the process to the operating system.
(package private)  long parseBytes(java.lang.String freeSpace, java.lang.String path)
          Parses the bytes from a string.
(package private)  long parseDir(java.lang.String line, java.lang.String path)
          Parses the Windows dir response last line
(package private)  java.util.List performCommand(java.lang.String[] cmdAttribs, int max)
          Performs the os command.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

INSTANCE

private static final FileSystemUtils INSTANCE
Singleton instance, used mainly for testing.


INIT_PROBLEM

private static final int INIT_PROBLEM
Operating system state flag for error.

See Also:
Constant Field Values

OTHER

private static final int OTHER
Operating system state flag for neither Unix nor Windows.

See Also:
Constant Field Values

WINDOWS

private static final int WINDOWS
Operating system state flag for Windows.

See Also:
Constant Field Values

UNIX

private static final int UNIX
Operating system state flag for Unix.

See Also:
Constant Field Values

POSIX_UNIX

private static final int POSIX_UNIX
Operating system state flag for Posix flavour Unix.

See Also:
Constant Field Values

OS

private static final int OS
The operating system flag.

Constructor Detail

FileSystemUtils

public FileSystemUtils()
Instances should NOT be constructed in standard programming.

Method Detail

freeSpace

public static long freeSpace(java.lang.String path)
                      throws java.io.IOException
Deprecated. Use freeSpaceKb(String) Deprecated from 1.3, may be removed in 2.0

Returns the free space on a drive or volume by invoking the command line. This method does not normalize the result, and typically returns bytes on Windows, 512 byte units on OS X and kilobytes on Unix. As this is not very useful, this method is deprecated in favour of freeSpaceKb(String) which returns a result in kilobytes.

Note that some OS's are NOT currently supported, including OS/390, OpenVMS and and SunOS 5. (SunOS is supported by freeSpaceKb.)

 FileSystemUtils.freeSpace("C:");       // Windows
 FileSystemUtils.freeSpace("/volume");  // *nix
 
The free space is calculated via the command line. It uses 'dir /-c' on Windows and 'df' on *nix.

Parameters:
path - the path to get free space for, not null, not empty on Unix
Returns:
the amount of free drive space on the drive or volume
Throws:
java.lang.IllegalArgumentException - if the path is invalid
java.lang.IllegalStateException - if an error occurred in initialisation
java.io.IOException - if an error occurs when finding the free space
Since:
Commons IO 1.1, enhanced OS support in 1.2 and 1.3

freeSpaceKb

public static long freeSpaceKb(java.lang.String path)
                        throws java.io.IOException
Returns the free space on a drive or volume in kilobytes by invoking the command line.
 FileSystemUtils.freeSpaceKb("C:");       // Windows
 FileSystemUtils.freeSpaceKb("/volume");  // *nix
 
The free space is calculated via the command line. It uses 'dir /-c' on Windows, 'df -kP' on AIX/HP-UX and 'df -k' on other Unix.

In order to work, you must be running Windows, or have a implementation of Unix df that supports GNU format when passed -k (or -kP). If you are going to rely on this code, please check that it works on your OS by running some simple tests to compare the command line with the output from this class. If your operating system isn't supported, please raise a JIRA call detailing the exact result from df -k and as much other detail as possible, thanks.

Parameters:
path - the path to get free space for, not null, not empty on Unix
Returns:
the amount of free drive space on the drive or volume in kilobytes
Throws:
java.lang.IllegalArgumentException - if the path is invalid
java.lang.IllegalStateException - if an error occurred in initialisation
java.io.IOException - if an error occurs when finding the free space
Since:
Commons IO 1.2, enhanced OS support in 1.3

freeSpaceOS

long freeSpaceOS(java.lang.String path,
                 int os,
                 boolean kb)
           throws java.io.IOException
Returns the free space on a drive or volume in a cross-platform manner. Note that some OS's are NOT currently supported, including OS/390.
 FileSystemUtils.freeSpace("C:");  // Windows
 FileSystemUtils.freeSpace("/volume");  // *nix
 
The free space is calculated via the command line. It uses 'dir /-c' on Windows and 'df' on *nix.

Parameters:
path - the path to get free space for, not null, not empty on Unix
os - the operating system code
kb - whether to normalize to kilobytes
Returns:
the amount of free drive space on the drive or volume
Throws:
java.lang.IllegalArgumentException - if the path is invalid
java.lang.IllegalStateException - if an error occurred in initialisation
java.io.IOException - if an error occurs when finding the free space

freeSpaceWindows

long freeSpaceWindows(java.lang.String path)
                throws java.io.IOException
Find free space on the Windows platform using the 'dir' command.

Parameters:
path - the path to get free space for, including the colon
Returns:
the amount of free drive space on the drive
Throws:
java.io.IOException - if an error occurs

parseDir

long parseDir(java.lang.String line,
              java.lang.String path)
        throws java.io.IOException
Parses the Windows dir response last line

Parameters:
line - the line to parse
path - the path that was sent
Returns:
the number of bytes
Throws:
java.io.IOException - if an error occurs

freeSpaceUnix

long freeSpaceUnix(java.lang.String path,
                   boolean kb,
                   boolean posix)
             throws java.io.IOException
Find free space on the *nix platform using the 'df' command.

Parameters:
path - the path to get free space for
kb - whether to normalize to kilobytes
posix - whether to use the posix standard format flag
Returns:
the amount of free drive space on the volume
Throws:
java.io.IOException - if an error occurs

parseBytes

long parseBytes(java.lang.String freeSpace,
                java.lang.String path)
          throws java.io.IOException
Parses the bytes from a string.

Parameters:
freeSpace - the free space string
path - the path
Returns:
the number of bytes
Throws:
java.io.IOException - if an error occurs

performCommand

java.util.List performCommand(java.lang.String[] cmdAttribs,
                              int max)
                        throws java.io.IOException
Performs the os command.

Parameters:
cmdAttribs - the command line parameters
max - The maximum limit for the lines returned
Returns:
the parsed data
Throws:
java.io.IOException - if an error occurs

openProcess

java.lang.Process openProcess(java.lang.String[] cmdAttribs)
                        throws java.io.IOException
Opens the process to the operating system.

Parameters:
cmdAttribs - the command line parameters
Returns:
the process
Throws:
java.io.IOException - if an error occurs


Copyright (c) 2002-2010 Apache Software Foundation