Sie sind auf Seite 1von 5

Commons IO - User guide

http://commons.apache.org/proper/commons-io/description.html

Apache Commons IO
Last Published: 17 February 2014 | Version: 2.5-SNAPSHOT
ApacheCon

Apache

Commons

Overview

User guide

Download

Commons-IO contains utility classes, endian classes, line

User guide

iterator, file filters, file comparators and stream

Best practices

implementations.

COMMONS IO

Javadoc 2.4
Javadoc 2.2
Javadoc 1.4
DEVELOPMENT

Building
Mailing lists
Issue Tracking
Team
Tasks

For a more detailed descriptions, take a look at the javadocs.

Utility classes
IOUtils
IOUtils contains utility methods dealing with reading, writing
and copying. The methods work on InputStream,
OutputStream, Reader and Writer.

Proposal
SVN repository
Javadoc (latest SVN)

As an example, consider the task of reading bytes from a URL,


and printing them. This would typically done like this:

PROJECT DOCUMENTATION

Project Information
Project Reports
COMMONS

Home
License
Components

IInnppuuttSSttrreeaamm iinn = nneeww URL( "http://commons.ap


ache.org" ).openStream();
ttrryy {
IInnppuuttSSttrreeaammRReeaaddeerr inR = nneeww IInnppuuttSSttrreeaammRRee
aaddeerr( iinn );
BBuuffffeerreeddRReeaaddeerr buf = nneeww BBuuffffeerreeddRReeaaddeerr(
inR );
SSttrriinngg line;

Sandbox
Dormant
GENERAL INFORMATION

1 of 5

wwhhiillee ( ( line = buf.readLine() ) != nnuullll )


{
SSyysstteemm.oouutt.println( line );
}

02/12/14 4:20 pm

Commons IO - User guide

Volunteering

http://commons.apache.org/proper/commons-io/description.html

} ffiinnaallllyy {
iinn.close();

Contributing Patches
Building Components
Releasing Components
Wiki
ASF

How the ASF works


Get Involved

With the IOUtils class, that could be done with:

IInnppuuttSSttrreeaamm iinn = nneeww URL( "http://commons.ap


ache.org" ).openStream();
ttrryy {

Developer Resources
Sponsorship
Thanks

SSyysstteemm.oouutt.println( IIOOUUttiillss.ttooSSttrriinngg( iinn


) );
} ffiinnaallllyy {
IIOOUUttiillss.closeQuietly(iinn);
}

In certain application domains, such IO operations are


common, and this class can save a great deal of time. And you
can rely on well-tested code.
For utility code such as this, flexibility and speed are of
primary importance. However you should also understand the
limitations of this approach. Using the above technique to read
a 1GB file would result in an attempt to create a 1GB String
object!

FileUtils
The FileUtils class contains utility methods for working with
File objects. These include reading, writing, copying and
comparing files.
For example to read an entire file line by line you could use:

FFiillee file = nneeww FFiillee("/commons/io/project.pr


operties");
LLiisstt lines = FFiilleeUUttiillss.readLines(file, "UTF8");

FilenameUtils
The FilenameUtils class contains utility methods for working
with filenames without using File objects. The class aims to be
consistent between Unix and Windows, to aid transitions
between these environments (such as moving from

2 of 5

02/12/14 4:20 pm

Commons IO - User guide

http://commons.apache.org/proper/commons-io/description.html

development to production).
For example to normalize a filename removing double dot
segments:

SSttrriinngg filename = "C:/commons/io/../lang/proj


ect.xml";
SSttrriinngg normalized = FFiilleennaammeeUUttiillss.normalize(
filename);

// result is "C:/commons/lang/project.xml"

FileSystemUtils
The FileSystemUtils class contains utility methods for working
with the file system to access functionality not supported by
the JDK. Currently, the only method is to get the free space on
a drive. Note that this uses the command line, not native code.
For example to find the free space on a drive:

lloonngg freeSpace = FFiilleeSSyysstteemmUUttiillss.freeSpace("


C:/");

Endian classes
Dierent computer architectures adopt dierent conventions
for byte ordering. In so-called "Little Endian" architectures (eg
Intel), the low-order byte is stored in memory at the lowest
address, and subsequent bytes at higher addresses. For "Big
Endian" architectures (eg Motorola), the situation is reversed.
There are two classes in this package of relevance:
The EndianUtils class contains static methods for
swapping the Endian-ness of Java primitives and
streams.
The SwappedDataInputStream class is an implementation
of the DataInput interface. With this, one can read
data from files of non-native Endian-ness.
For more information, see http://www.cs.umass.edu/~verts
/cs32/endian.html

Line iterator
3 of 5

02/12/14 4:20 pm

Commons IO - User guide

http://commons.apache.org/proper/commons-io/description.html

The org.apache.commons.io.LineIterator class


provides a flexible way for working with a line-based file. An
instance can be created directly, or via factory methods on
FileUtils or IOUtils . The recommended usage
pattern is:

LLiinneeIItteerraattoorr it = FFiilleeUUttiillss.lineIterator(fil
e, "UTF-8");
ttrryy {
wwhhiillee (it.hasNext()) {
SSttrriinngg line = it.nextLine();

/// do something with line


}
} ffiinnaallllyy {
LLiinneeIItteerraattoorr.closeQuietly(iterator);
}

File filters
The org.apache.commons.io.filefilter package
defines an interface (IOFileFilter) that combines both
java.io.FileFilter and
java.io.FilenameFilter . Besides that the package
oers a series of ready-to-use implementations of the
IOFileFilter interface including implementation that
allow you to combine other such filters. These filters can be
used to list files or in FileDialog, for example.
See the filefilter package javadoc for more details.

File comparators
The org.apache.commons.io.comparator package
provides a number of java.util.Comparator
implementations for java.io.File . These comparators
can be used to sort lists and arrays of files, for example.
See the comparator package javadoc for more details.

Streams
The org.apache.commons.io.input and
org.apache.commons.io.output packages contain
various useful implementations of streams. These include:

4 of 5

02/12/14 4:20 pm

Commons IO - User guide

http://commons.apache.org/proper/commons-io/description.html

Null output stream - that silently absorbs all data sent to it


Tee output stream - that sends output data to two
streams instead of one
Byte array output stream - that is a faster version of the
JDK class
Counting streams - that count the number of bytes
passed
Proxy streams - that delegate to the correct method in the
proxy
Lockable writer - that provides synchronization of writes
using a lock file
See the input or output package javadoc for more details.

Copyright 2002-2014 The Apache Software Foundation. All Rights Reserved.


Apache Commons, Apache Commons IO, Apache, the Apache feather logo, and the Apache Commons project
logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or
registered trademarks of their respective owners.

5 of 5

02/12/14 4:20 pm

Das könnte Ihnen auch gefallen