Commons-io--user Guide

Source: Internet
Author: User

Commons-io containsUtility Classes, Endian classes, Line iterator, File filters, File comparators andStream implementations.

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

Utility classesioutils

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

As an example, consider the task of reading bytes from a URL, and printing them. This would typically do like this:


InputStream in = new URL ("http://commons.apache.org"). OpenStream (); try {   InputStreamReader InR = new InputStreamReader (in);   BufferedReader buf = new BufferedReader (InR);   String Line;   while (line = Buf.readline ())! = null) {     System.out.println (line);   }} finally {   in.close ();}

  

With the Ioutils class, that could is done with:


InputStream in = new URL ("http://commons.apache.org"). OpenStream (); try {   System.out.println (ioutils.tostring (in)),} finally {   ioutils.closequietly (in);}

  

In certain application domains, such IO operations is 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, the flexibility and speed is of primary importance. However 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 a entire file line by line you could use:


File File = new file ("/commons/io/project.properties"); List lines = fileutils.readlines (file, "UTF-8");

  

Filenameutils

The Filenameutils class contains utility methods for working with filenames without using File objects. The class aims to being consistent between Unix and Windows, to aid transitions between these environments (such as moving fr Om Development to production).

For example to normalize a filename removing double dot segments:


String filename = "c:/commons/io/." /lang/project.xml "; String normalized = filenameutils.normalize (filename); Result is "C:/commons/lang/project.xml"

  

Filesystemutils

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

For example to find the free space on a drive:


Long freeSpace = Filesystemutils.freespace ("c:/");

  

Endian classes

Different computer Architectures adopt Different conventions for byte ordering. In so-called "Little Endian" architectures (eg Intel), the low-order byte are stored in memory at the lowest address, and S Ubsequent bytes at higher addresses. For "Big Endian" architectures (eg Motorola), the situation is reversed.

There is classes in the 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 the data from the files of Non-native endian-ness.

For more information, see http://www.cs.umass.edu/~verts/cs32/endian.html

Line iterator

The Org.apache.commons.io.LineIterator class provides a flexible to working with a line-based file. An instance can is created directly, or via factory methods onFileUtils or ioutils. 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);}

  

File Filters

The Org.apache.commons.io.filefilter package defines a interface (Iofilefilter) that combines both java.io . FileFilter and java.io.FilenameFilter. Besides that the package offers 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 the 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:

    • Null output Stream-that silently absorbs all data sent to it
    • Tee output Stream-that sends output data to 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.

Commons-io--user Guide

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.