You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bi...@apache.org on 2016/04/22 02:29:32 UTC

svn commit: r13344 - /release/commons/io/RELEASE-NOTES.txt

Author: bimargulies
Date: Fri Apr 22 00:29:31 2016
New Revision: 13344

Log:
Update release notes.

Modified:
    release/commons/io/RELEASE-NOTES.txt

Modified: release/commons/io/RELEASE-NOTES.txt
==============================================================================
--- release/commons/io/RELEASE-NOTES.txt (original)
+++ release/commons/io/RELEASE-NOTES.txt Fri Apr 22 00:29:31 2016
@@ -1,873 +1,86 @@
 
-Apache Commons IO 
-Version 2.4
-Release Notes
-
-INTRODUCTION:
-
-Commons IO is a package of Java utility classes like java.io.  
-Classes in this package are considered to be so standard and of such high 
-reuse as to justify existence in java.io.
-
-The Commons IO library contains utility classes, stream implementations, file filters, 
-file comparators, endian transformation classes, and much more.
-
-==============================================================================
-Apache Commons IO Version 2.4
-==============================================================================
-New features and bug fixes.
-
-Changes in this version include:
-
-New features:
-o IO-269:  Tailer locks file from deletion/rename on Windows. Thanks to sebb. 
-o IO-333:  Export OSGi packages at version 1.x in addition to 2.x. Thanks to fmeschbe. 
-o IO-320:  Add XmlStreamReader support for UTF-32. Thanks to ggregory. 
-o IO-331:  BOMInputStream wrongly detects UTF-32LE_BOM files as UTF-16LE_BOM files in method getBOM(). Thanks to ggregory. 
-o IO-327:  Add byteCountToDisplaySize(BigInteger). Thanks to ggregory. 
-o IO-326:  Add new FileUtils.sizeOf[Directory] APIs to return BigInteger. Thanks to ggregory, kinow. 
-o IO-325:  Add IOUtils.toByteArray methods to work with URL and URI. Thanks to raviprak. 
-o IO-324:  Add missing Charset sister APIs to method that take a String charset name. Thanks to raviprak. 
-
-Fixed Bugs:
-o IO-336:  Yottabyte (YB) incorrectly defined in FileUtils. Thanks to rleavelle. 
-o IO-279:  Tailer erroneously considers file as new. Thanks to Sergio Bossa, Chris Baron. 
-o IO-335:  Tailer#readLines - incorrect CR handling. 
-o IO-334:  FileUtils.toURLs throws NPE for null parameter; document the behavior. 
-o IO-332:  Improve tailer's reading performance. Thanks to liangly. 
-o IO-279:  Improve Tailer performance with buffered reads (see IO-332). 
-o IO-329:  FileUtils.writeLines uses unbuffered IO. Thanks to tivv. 
-o IO-319:  FileUtils.sizeOfDirectory follows symbolic links. Thanks to raviprak. 
-
-
-Compatibility with 2.3:
-Binary compatible: Yes.
-Source compatible: Yes.
-Semantic compatible: Yes.
-
-Compatibility with 2.2 and 1.4:
-Binary compatible: Yes.
-Source compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318.
-Semantic compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318.
-
-Commons IO 2.4 requires JDK 1.6 or later.
-Commons IO 2.3 requires JDK 1.6 or later.
-Commons IO 2.2 requires JDK 1.5 or later.
-Commons IO 1.4 requires JDK 1.3 or later.
-
-==============================================================================
-Apache Commons IO Version 2.3
-==============================================================================
-
-Changes in this version include:
-
-New features:
-o IO-322:  Add and use class Charsets. Thanks to ggregory. 
-o IO-321:  ByteOrderMark UTF_32LE is incorrect. Thanks to ggregory. 
-o IO-318:  Add Charset sister APIs to method that take a String charset name. Thanks to ggregory. 
-
-Compatibility with 2.2 and 1.4:
-Binary compatible: Yes.
-Source compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318.
-Semantic compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318.
-
-Commons IO 2.3 requires JDK 1.6 or later.
-Commons IO 2.2 requires JDK 1.5 or later.
-Commons IO 1.4 requires JDK 1.3 or later.
-
-==============================================================================
-Apache Commons IO Version 2.2
-==============================================================================
-
-Changes in this version include:
-
-New features:
-o Add IOUTils.toBufferedReader(Reader)  Issue: IO-313. Thanks to ggregory. 
-o Allow applications to provide buffer (or size) for copyLarge methods.  Issue: IO-308. Thanks to Manoj Mokashi. 
-o New copyLarge() method in IOUtils that takes additional offset, length arguments  Issue: IO-305. Thanks to Manoj Mokashi. 
-o Use terabyte (TB), petabyte (PB) and exabyte (EB) in FileUtils.byteCountToDisplaySize(long size)  Issue: IO-287. Thanks to Ron Kuris, Gary Gregory. 
-o FileUtils.listFiles() doesn't return directories  Issue: IO-173. Thanks to Marcos Vinícius da Silva. 
-o CharSequenceInputStream to efficiently stream content of a CharSequence  Issue: IO-297. Thanks to Oleg Kalnichevski. 
-o The second constructor of Tailer class does not pass 'delay' to the third one  Issue: IO-304. Thanks to liangly. 
-o TeeOutputStream does not call branch.close() when main.close() throws an exception  Issue: IO-303. Thanks to fabian.barney. 
-o ArrayIndexOutOfBoundsException in BOMInputStream when reading a file without BOM multiple times  Issue: IO-302. Thanks to jsteuerwald, detinho. 
-o Add IOUtils.closeQuietly(Selector) necessary  Issue: IO-301. Thanks to kaykay.unique. 
-o IOUtils.closeQuietly() should take a ServerSocket as a parameter  Issue: IO-292. Thanks to sebb. 
-o Add read/readFully methods to IOUtils  Issue: IO-290. Thanks to sebb. 
-o Supply a ReversedLinesFileReader  Issue: IO-288. Thanks to Georg Henzler. 
-o Add new function FileUtils.directoryContains.  Issue: IO-291. Thanks to ggregory. 
-o FileUtils.contentEquals and IOUtils.contentEquals - Add option to ignore "line endings"
-        Added contentEqualsIgnoreEOL methods to both classes  Issue: IO-275. Thanks to CJ Aspromgos. 
-
-Fixed Bugs:
-o IOUtils.read(InputStream/Reader) ignores the offset parameter  Issue: IO-311. Thanks to Robert Muir. 
-o CharSequenceInputStream(CharSequence s, Charset charset, int bufferSize) ignores bufferSize  Issue: IO-312. 
-o FileUtils.moveDirectoryToDirectory removes source directory if destination is a subdirectory  Issue: IO-300. 
-o ReaderInputStream#read(byte[] b, int off, int len) should check for valid parameters  Issue: IO-307. 
-o ReaderInputStream#read(byte[] b, int off, int len) should always return 0 for length == 0  Issue: IO-306. 
-o "FileUtils#deleteDirectoryOnExit(File)" does not work  Issue: IO-276. Thanks to nkami. 
-o BoundedInputStream.read() treats max differently from BoundedInputStream.read(byte[]...)  Issue: IO-273. Thanks to sebb. 
-o Various methods of class 'org.apache.commons.io.FileUtils' incorrectly suppress 'java.io.IOException'  Issue: IO-298. Thanks to Christian Schulte. 
-
-Changes:
-o ReaderInputStream optimization: more efficient reading of small chunks of data  Issue: IO-296. Thanks to Oleg Kalnichevski. 
-
-
-Compatibility with 2.1 and 1.4:
-Binary compatible: Yes
-Source compatible: Yes
-Semantic compatible: Yes. Check the bug fixes section for semantic bug fixes
-
-Commons IO 2.2 requires a minimum of JDK 1.5. 
-Commons IO 1.4 requires a minimum of JDK 1.3. 
-
-==============================================================================
-Apache Commons IO Version 2.1
-==============================================================================
-
-New features:
-o Use standard Maven directory layout  Issue: IO-285. Thanks to ggregory. 
-o Add IOUtils API toString for URL and URI to get contents  Issue: IO-284. Thanks to ggregory. 
-o Add API FileUtils.copyFile(File input, OutputStream output)  Issue: IO-282. Thanks to ggregory. 
-o FileAlterationObserver has no getter for FileFilter  Issue: IO-262. 
-o Add FileUtils.getFile API with varargs parameter  Issue: IO-261. 
-o Add new APPEND parameter for writing string into files  Issue: IO-182. 
-o Add new read method "toByteArray" to handle InputStream with known size.  Issue: IO-251. Thanks to Marco Albini. 
-
-Fixed Bugs:
-o Dubious use of mkdirs() return code  Issue: IO-280. Thanks to sebb. 
-o ReaderInputStream enters infinite loop when it encounters an unmappable character  Issue: IO-277. 
-o FileUtils.moveFile() JavaDoc should specify FileExistsException thrown  Issue: IO-264. 
-o ClassLoaderObjectInputStream does not handle Proxy classes  Issue: IO-260. 
-o Tailer returning partial lines when reaching EOF before EOL  Issue: IO-274. Thanks to Frank Grimes. 
-o FileUtils.copyFile() throws IOException when copying large files to a shared directory (on Windows)  Issue: IO-266. Thanks to Igor Smereka. 
-o FileSystemUtils.freeSpaceKb throws exception for Windows volumes with no visible files.
-        Improve coverage by also looking for hidden files.  Issue: IO-263. Thanks to Gil Adam. 
-
-Changes:
-o FileAlterationMonitor.stop(boolean allowIntervalToFinish)  Issue: IO-259. 
-
-==============================================================================
-Apache Commons IO Package 2.0.1
-==============================================================================
-
-Compatibility with 2.0 and 1.4
-------------------------------
-Binary compatible - Yes
-
-Source compatible - Yes
-
-Semantic compatible - Yes
-  Check the bug fixes section for semantic bug fixes
-
-Commons IO 2.0.1 requires a minimum of JDK 1.5
- (Commons IO 1.4 had a minimum of JDK 1.3) 
-
-Enhancements from 2.0
----------------------
-
-   * [IO-256] - Provide thread factory for FileAlternationMonitor
-
-Bug fixes from 2.0
-------------------
-
-   * [IO-257] - BOMInputStream.read(byte[]) can return 0 which it should not
-   * [IO-258] - XmlStreamReader consumes the stream during encoding detection
-
-==============================================================================
-Apache Commons IO Package 2.0
-==============================================================================
-
-Compatibility with 1.4
-----------------------
-Binary compatible - Yes
-
-Source compatible - Yes
-
-Semantic compatible - Yes
-  Check the bug fixes section for semantic bug fixes
-
-Commons IO 2.0 requires a minimum of JDK 1.5
- (Commons IO 1.4 had a minimum of JDK 1.3) 
-
-Deprecations from 1.4
----------------------
-
-- IOUtils
-  - write(StringBuffer, Writer) in favour of write(CharSequence, Writer)
-  - write(StringBuffer, OutputStream)  in favour of write(CharSequence, OutputStream)
-  - write(StringBuffer, OutputStream, String) in favour of write(CharSequence, OutputStream, String)
-
-- FileFilterUtils
-  - andFileFilter(IOFileFilter, IOFileFilter) in favour of and(IOFileFilter...) 
-  - orFileFilter(IOFileFilter, IOFileFilter)  in favour of or(IOFileFilter...)
-
-Enhancements from 1.4
----------------------
-
-  * [IO-140] Move minimum Java requirement from JDK 1.3 to JDK 1.5
-             - use Generics
-             - add new CharSequence write() flavour methods to IOUtils and FileUtils
-             - replace StringBuffer with StringBuilder, where appropriate
-             - add new Reader/Writer methods to ProxyReader and ProxyWriter
-             - Annotate with @Override and @Deprecated
-
-  * [IO-178] New BOMInputStream and ByteOrderMark implementations - to detect and optionally exclude an initial Byte Order mark (BOM)
-  * [IO-197] New BoundedInputStream (copied from from Apache JackRabbit)
-  * [IO-193] New Broken Input and Output streams
-  * [IO-132] New File Listener/Monitor facility
-  * [IO-158] New ReaderInputStream and WriterOutputStream implementations
-  * [IO-139] New StringBuilder Writer implementation
-  * [IO-192] New Tagged Input and Output streams
-  * [IO-177] New Tailer class - simple implementation of the Unix "tail -f" functionality
-  * [IO-162] New XML Stream Reader/Writer implementations (from ROME via plexus-utils)
-
-  * [IO-142] Comparators - add facility to sort file lists/arrays
-  * [IO-186] Comparators - new Composite and Directory File Comparator implementations
-  * [IO-176] DirectoryWalker - add filterDirectoryContents() callback method for filtering directory contents
-  * [IO-210] FileFilter - new Magic Number FileFilter
-  * [IO-221] FileFilterUtils - add methods for suffix and prefix filters which take an IOCase object
-  * [IO-232] FileFilterUtils - add method for name filters which take an IOCase object
-  * [IO-229] FileFilterUtils - add varargs and() and or() methods
-  * [IO-198] FileFilterUtils - add ability to apply file filters to collections and arrays
-  * [IO-156] FilenameUtils - add normalize() and normalizeNoEndSeparator() methods which allow the separator character to be specified
-  * [IO-194] FileSystemUtils - add freeSpaceKb() method with no input arguments
-  * [IO-185] FileSystemUtils - add freeSpaceKb() methods that take a timeout parameter - fixes freeSpaceWindows() blocks
-  * [IO-155] FileUtils - use NIO to copy files
-  * [IO-168] FileUtils - add new isSymlink() method
-  * [IO-219] FileUtils - throw FileExistsException when moving a file or directory if the destination already exists
-  * [IO-234] FileUtils - add Methods for retrieving System User/Temp directories/paths
-  * [IO-208] FileUtils - add timeout (connection and read) support for copyURLToFile() method 
-  * [IO-238] FileUtils - add sizeOf(File) method
-  * [IO-181] LineIterator now implements Iterable
-  * [IO-224] IOUtils - add closeQuietly(Closeable) and closeQuietly(Socket) methods
-  * [IO-203] IOUtils - add skipFully() method for InputStreams
-  * [IO-137] IOUtils and ByteArrayOutputStream - add toBufferedInputStream() method to avoid unnecessary array allocation/copy
-  * [IO-195] Proxy streams/Reader/Writer - provide exception handling methods
-  * [IO-211] Proxy Input/Output streams - add pre/post processing support
-  * [IO-242] Proxy Reader/Writer - add pre/post processing support
-
-Bug fixes from 1.4
-------------------
-  * [IO-214] ByteArrayOutputStream - fix inconsistent synchronization of fields
-  * [IO-201] Counting Input/Output streams - fix inconsistent synchronization
-  * [IO-159] FileCleaningTracker - fix remove() never returns null
-  * [IO-220] FileCleaningTracker - fix Vector performs badly under load
-  * [IO-167] FilenameUtils - fix case-insensitive string handling in FilenameUtils and FilesystemUtils
-  * [IO-179] FilenameUtils - fix StringIndexOutOfBounds exception in getPathNoEndSeparator()
-  * [IO-248] FilenameUtils - fix getFullPathNoEndSeparator() returns empty while path is a one level directory
-  * [IO-246] FilenameUtils - fix wildcardMatch gives incorrect results 
-  * [IO-187] FileSystemUtils - fix freeSpaceKb() doesn't work with relative paths on Linux
-  * [IO-160] FileSystemUtils - fix freeSpace() fails on solaris
-  * [IO-209] FileSystemUtils - fix freeSpaceKb() fails to return correct size for a windows mount point
-  * [IO-163] FileUtils - fix toURLs() using deprecated method of conversion to URL
-  * [IO-168] FileUtils - fix Symbolic links followed when deleting directory
-  * [IO-231] FileUtils - fix wrong exception message generated in isFileNewer() method
-  * [IO-207] FileUtils - fix race condition in forceMkdir() method
-  * [IO-217] FileUtils - fix copyDirectoryToDirectory() makes infinite loops
-  * [IO-166] FileUtils - fix URL decoding in toFile(URL)
-  * [IO-190] FileUtils - fix copyDirectory not preserving lastmodified date on sub-directories
-  * [IO-240] FileFilterUtils - ensure cvsFilter and svnFilter are only created once.
-  * [IO-175] IOUtils - fix copyFile() issues with very large files
-  * [IO-191] Improvements from static analysis
-  * [IO-216] LockableFileWriter - delete files quietly when an exception is thrown during initialization
-  * [IO-243] SwappedDataInputStream - fix readBoolean is inverted
-  * [IO-235] Tests - remove unused YellOnFlushAndCloseOutputStream from CopyUtilsTest
-  * [IO-161] Tests - fix FileCleaningTrackerTestCase hanging
-
-Documentation changes from 1.4
-------------------------------
-  * [IO-183 FilenameUtils.getExtension() method documentation improvements
-  * [IO-226 FileUtils.byteCountToDisplaySize() documentation corrections
-  * [IO-205 FileUtils.forceMkdir() documentation improvements
-  * [IO-215 FileUtils copy file/directory improve documentation regarding preserving the last modified date
-  * [IO-189 HexDump.dump() method documentation improvements
-  * [IO-171 IOCase document that it assumes there are only two OSes: Windows and Unix
-  * [IO-223 IOUtils.copy() documentation corrections
-  * [IO-247 IOUtils.closeQuietly() improve documentation with examples
-  * [IO-202 NotFileFilter documentation corrections
-  * [IO-206 ProxyInputStream - fix misleading parameter names
-  * [IO-212 ProxyInputStream.skip() documentation corrections
-
-==============================================================================
-Apache Commons IO Version 1.4
-==============================================================================
-
-Compatibility with 1.3.2
-------------------------
-Binary compatible - Yes
-
-Source compatible - Yes
-
-Semantic compatible - Yes
-  Check the bug fixes section for semantic bug fixes
-
-Commons IO 1.4 introduces four new implementations which depend on JDK 1.4 features
-(CharSequenceReader, FileWriterWithEncoding, IOExceptionWithCause and RegexFileFilter).
-It has been built with the JDK source and target options set to JDK 1.3 and, except for
-those implementations, can be used with JDK 1.3 (see IO IO-127).
-
-Deprecations from 1.3.2
------------------------
-- FileCleaner deprecated in favour of FileCleaningTracker [see IO-116]
-
-Bug fixes from 1.3.2
---------------------
-- FileUtils
-  - forceDelete of orphaned Softlinks does not work [IO-147]
-  - Infinite loop on FileUtils.copyDirectory when the destination directory is within
-    the source directory [IO-141]
-  - Add a copyDirectory() method that makes use of FileFilter [IO-105]
-  - Add moveDirectory() and moveFile() methods [IO-77]
-
-- HexDump
-  - HexDump's use of static StringBuffers isn't thread-safe [IO-136]
-
-Enhancements from 1.3.2
------------------------
-- FileUtils
-  - Add a deleteQuietly method [IO-135]
-
-- FilenameUtils
-  - Add file name extension separator constants[IO-149]
-
-- IOExceptionWithCause [IO-148]
-  - Add a new IOException implementation with constructors which take a cause
-
-- TeeInputStream [IO-129]
-  - Add new Tee input stream implementation
-
-- FileWriterWithEncoding [IO-153]
-  - Add new File Writer implementation that accepts an encoding
-
-- CharSequenceReader [IO-138]
-  - Add new Reader implementation that handles any CharSequence (String,
-    StringBuffer, StringBuilder or CharBuffer) 
-
-- ThesholdingOuputStream [IO-121]
-  - Add a reset() method which sets the count of the bytes written back to zero.
-
-- DeferredFileOutputStream [IO-130]
-  - Add support for temporary files
-
-- ByteArrayOutputStream
-  - Add a new write(InputStream) method [IO-152]
-
-- New Closed Input/Output stream implementations [IO-122]
-  - AutoCloseInputStream - automatically closes and discards the underlying input stream
-  - ClosedInputStream - returns -1 for any read attempts
-  - ClosedOutputStream - throws an IOException for any write attempts
-  - CloseShieldInputStream - prevents the underlying input stream from being closed.
-  - CloseShieldOutputStream - prevents the underlying output stream from being closed.
-
-- Add Singleton Constants to several stream classes [IO-143]
-
-- PrefixFileFilter [IO-126]
-  - Add faciltiy to specify case sensitivity on prefix matching
-
-- SuffixFileFilter [IO-126]
-  - Add faciltiy to specify case sensitivity on suffix matching
-
-- RegexFileFilter [IO-74]
-  - Add new regular expression file filter implementation
-
-- Make IOFileFilter implementations Serializable [IO-131]
-
-- Improve IOFileFilter toString() methods [IO-120]
-
-- Make fields final so classes are immutable/threadsafe [IO-133]
-  - changes to Age, Delegate, Name, Not, Prefix, Regex, Size, Suffix and Wildcard IOFileFilter
-    implementations.
-
-- IOCase
-  - Add a compare method to IOCase [IO-144]
-
-- Add a package of java.util.Comparator implementations for files [IO-145]
-  - DefaultFileComparator - compare files using the default File.compareTo(File) method.
-  - ExtensionFileComparator - compares files using file name extensions.
-  - LastModifiedFileComparator - compares files using the last modified date/time.
-  - NameFileComparator - compares files using file names.
-  - PathFileComparator - compares files using file paths.
-  - SizeFileComparator - compares files using file sizes.
-  
-==============================================================================
-Apache Commons IO Version 1.3.2
-==============================================================================
-
-Compatibility with 1.3.1
-----------------------
-Binary compatible - Yes
-
-Source compatible - Yes
-
-Semantic compatible - Yes
-
-Compatibility with 1.3
-----------------------
-Binary compatible - No
-  See [IO-113]
-
-Source compatible - No
-  See [IO-113]
-
-Semantic compatible - Yes
-
-Enhancements since 1.3.1
-------------------------
-
-- Created the FileCleaningTracker, basically a non-static version of the
-  FileCleaner, which can be controlled by the user. [IO-116]
-- The FileCleaner is deprecated.
-
-Bug fixes from 1.3.1
---------------------
-
-- Some tests, which are implicitly assuming a Unix-like file system, are
-  now skipped on Windows. [IO-115]
-- EndianUtils
-  - Both readSwappedUnsignedInteger(...) methods could return negative 
-    numbers due to int/long casting. [IO-117]
-
-Bug fixes from 1.3
-------------------
-
-- FileUtils
-  - NPE in openOutputStream(File) when file has no parent in path [IO-112]
-  - readFileToString(File) is not static [IO-113]
-
-==============================================================================
-Apache Commons IO Version 1.3.1
-==============================================================================
-
-Compatibility with 1.3
-----------------------
-Binary compatible - No
-  See [IO-113]
-
-Source compatible - No
-  See [IO-113]
-
-Semantic compatible - Yes
-
-Bug fixes from 1.3
-------------------
-
-- FileUtils
-  - NPE in openOutputStream(File) when file has no parent in path [IO-112]
-  - readFileToString(File) is not static [IO-113]
-  
-==============================================================================
-Apache Commons IO Version 1.3
-==============================================================================
-
-Compatibility with 1.2
-----------------------
-Binary compatible - Yes
-
-Source compatible - Yes
-
-Semantic compatible - Yes
-  Check the bug fixes section for semantic bug fixes
-
-Deprecations from 1.2
----------------------
-- WildcardFilter deprecated, replaced by WildcardFileFilter
-  - old class only accepted files, thus had a confusing dual purpose
-
-- FileSystemUtils.freeSpace deprecated, replaced by freeSpaceKb
-  - freeSpace returns a result that varies by operating system and
-    thus isn't that useful
-  - freeSpaceKb returns much better and more consistent results
-  - freeSpaceKb existed in v1.2, so this is a gentle cutover
-
-Bug fixes from 1.2
-------------------
-- LineIterator now implements Iterator
-  - It was always supposed to...
-
-- FileSystemUtils.freeSpace/freeSpaceKb [IO-83]
-  - These should now work on AIX and HP-UX
-
-- FileSystemUtils.freeSpace/freeSpaceKb [IO-90]
-  - Avoid infinite looping in Windows
-  - Catch more errors with nice messages
-
-- FileSystemUtils.freeSpace [IO-91]
-  - This is now documented not to work on SunOS 5
-
-- FileSystemUtils [IO-93]
-  - Fixed resource leak leading to 'Too many open files' error
-  - Previously did not destroy Process instances (as JDK Javadoc is so poor)
-  - http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4801027
-
-- FileUtils.touch [IO-100]
-  - The touch method previously gave no indication when the file could not
-    be touched successfully (such as due to access restrictions) - it now
-    throws an IOException if the last modified date cannot be changed
-
-- FileCleaner
-  - This now handles the situation where an error occurs when deleting the file
-
-- IOUtils.copy [IO-84]
-  - Copy methods could return inaccurate byte/char count for large streams
-  - The copy(InputStream, OutputStream) method now returns -1 if the count is greater than an int
-  - The copy(Reader, Writer) method now throws now returns -1 if the count is greater than an int
-  - Added a new copyLarge(InputStream, OutputStream) method that returns a long
-  - Added a new copyLarge(Reader, Writer) method that returns a long
-
-- CountingInputStream/CountingOutputStream [IO-84]
-  - Methods were declared as int thus the count was innacurate for large streams
-  - new long based methods getByteCount()/resetByteCount() added
-  - existing methods changed to throw an exception if the count is greater than an int
-
-- FileBasedTestCase
-  - Fixed bug in compare content methods identified by GNU classpath
-
-- EndianUtils.writeSwappedLong(byte[], int) [IO-101]
-  - An int overrun in the bit shifting when it should have been a long
-
-- EndianUtils.writeSwappedLong(InputStream) [IO-102]
-  - The return of input.read(byte[]) was not being checked to ensure all 8 bytes were read
-
-Enhancements from 1.2
----------------------
-- DirectoryWalker [IO-86]
-  - New class designed for subclassing to walk through a set of files.
-    DirectoryWalker provides the walk of the directories, filtering of
-    directories and files, and cancellation support. The subclass must provide
-    the specific behaviour, such as text searching or image processing.
-
-- IOCase
-  - New class/enumeration for case-sensitivity control
-
-- FilenameUtils
-  - New methods to handle case-sensitivity
-  - wildcardMatch - new method that has IOCase as a parameter
-  - equals - new method that has IOCase as a parameter
-
-- FileUtils [IO-108] - new default encoding methods for:
-  - readFileToString(File)
-  - readLines(File)
-  - lineIterator(File)
-  - writeStringToFile(File, String)
-  - writeLines(File, Collection)
-  - writeLines(File, Collection, String)
-
-- FileUtils.openOutputStream  [IO-107]
-  - new method to open a FileOutputStream, creating parent directories if required
-- FileUtils.touch
-- FileUtils.copyURLToFile
-- FileUtils.writeStringToFile
-- FileUtils.writeByteArrayToFile
-- FileUtils.writeLines
-  - enhanced to create parent directories if required
-- FileUtils.openInputStream  [IO-107]
-  - new method to open a FileInputStream, providing better error messages than the JDK
-
-- FileUtils.isFileOlder
-  - new methods to check if a file is older (i.e. isFileOlder()) - counterparts
-    to the existing isFileNewer() methods.
-
-- FileUtils.checksum, FileUtils.checksumCRC32
-  - new methods to create a checksum of a file
-
-- FileUtils.copyFileToDirectory  [IO-104]
-  - new variant that optionally retains the file date
-
-- FileDeleteStrategy
-- FileCleaner    [IO-56,IO-70]
-  - FileDeleteStrategy is a strategy for handling file deletion
-  - This can be used as a calback in FileCleaner
-  - Together these allow FileCleaner to do a forceDelete to kill directories
-
-- FileCleaner.exitWhenFinished [IO-99]
-  - A new method that allows the internal cleaner thread to be cleanly terminated
-
-- WildcardFileFilter
-  - Replacement for WildcardFilter
-  - Accepts both files and directories
-  - Ability to control case-sensitivity
-
-- NameFileFilter
-  - Ability to control case-sensitivity
-
-- FileFileFilter
-  - New IOFileFilter implementation
-  - Accepts files where File.isFile() is true
-  - In other words it filters out directories
-  - Singleton instance provided (FILE)
-
-- CanReadFileFilter
-  - New IOFileFilter implementation
-  - Accepts files where File.canRead() is true
-  - Singleton instances provided (CAN_READ/CANNOT_READ/READ_ONLY)
-
-- CanWriteFileFilter
-  - New IOFileFilter implementation
-  - Accepts files where File.canWrite() is true
-  - Singleton instances provided (CAN_WRITE/CANNOT_WRITE)
-
-- HiddenFileFilter
-  - New IOFileFilter implementation
-  - Accepts files where File.isHidden() is true
-  - Singleton instances provided (HIDDEN/VISIBLE)
-
-- EmptyFileFilter
-  - New IOFileFilter implementation
-  - Accepts files or directories that are empty
-  - Singleton instances provided (EMPTY/NOT_EMPTY)
-
-- TrueFileFilter/FalseFileFilter/DirectoryFileFilter
-  - New singleton instance constants (TRUE/FALSE/DIRECTORY)
-  - The new constants are more JDK 1.5 friendly with regards to static imports
-    (whereas if everything uses INSTANCE, then they just clash)
-  - The old INSTANCE constants are still present and have not been deprecated
-
-- FileFilterUtils.sizeRangeFileFilter
-  - new sizeRangeFileFilter(long minimumSize, long maximumSize) method which 
-    creates a filter that accepts files within the specified size range.
-
-- FileFilterUtils.makeDirectoryOnly/makeFileOnly
-  - two new methods that decorate a file filter to make it apply to
-    directories only or files only
-
-- NullWriter
-  - New writer that acts as a sink for all data, as per /dev/null
-
-- NullInputStream
-  - New input stream that emulates a stream of a specified size
-
-- NullReader
-  - New reader that emulates a reader of a specified size
-
-- ByteArrayOutputStream  [IO-97]
-  - Performance enhancements
-
-==============================================================================
-Apache Commons IO Version 1.2
-==============================================================================
-
-Compatibility with 1.1
-----------------------
-Binary compatible - Yes
-
-Source compatible - Yes
-
-Semantic compatible - Yes
-
-Deprecations from 1.1
----------------------
-
-Bug fixes from 1.1
-------------------
-- FileSystemUtils.freeSpace(drive)
-  Fix to allow Windows based command to function in French locale
-
-- FileUtils.read*
-  Increase certainty that files are closed in case of error
-
-- LockableFileWriter
-  Locking mechanism was broken and only provided limited protection [38942]
-  File deletion and locking in case of constructor error was broken
-
-Enhancements from 1.1
----------------------
-- AgeFileFilter/SizeFileFilter
-  New file filters that compares against the age and size of the file
-
-- FileSystemUtils.freeSpaceKb(drive)
-  New method that unifies result to be in kilobytes [38574]
-
-- FileUtils.contentEquals(File,File)
-  Performance improved by adding length and file location checking
-
-- FileUtils.iterateFiles
-  Two new method to provide direct access to iterators over files
-
-- FileUtils.lineIterator
-  IOUtils.lineIterator
-  New methods to provide an iterator over the lines in a file [38083]
-
-- FileUtils.copyDirectoryToDirectory
-  New method to copy a directory to within another directory [36315]
-  
-==============================================================================
-Apache Commons IO Version 1.1
-==============================================================================
-
-Incompatible changes from 1.0
------------------------------
-Binary compatible - Yes
-
-Source compatible - Yes
-
-Semantic compatible - Yes, except:
-- FileUtils.writeStringToFile()
-    A null encoding previously used 'ISO-8859-1', now it uses the platform default
-    Generally this will make no difference
-
-- LockableFileWriter
-    Improved validation and now create directories if necesssary
-
-plus these bug fixes may affect you semantically:
-- FileUtils.touch()  (Bug fix 29821)
-    Now creates the file if it did not previously exist
-
-- FileUtils.toFile(URL) (Bug fix 32575)
-    Now handles escape syntax such as %20
-
-- FileUtils.sizeOfDirectory()  (Bug fix 36801)
-    May now return a size of 0 if the directory is security restricted
-
-Deprecations from 1.0
----------------------
-- CopyUtils has been deprecated.
-    Its methods have been moved to IOUtils.
-    The new IOUtils methods handle nulls better, and have clearer names.
-
-- IOUtils.toByteArray(String) - Use {@link String#getBytes()}
-- IOUtils.toString(byte[]) - Use {@link String#String(byte[])}
-- IOUtils.toString(byte[],String) - Use {@link String#String(byte[],String)}
-
-Bug fixes from 1.0
-------------------
-- FileUtils - touch()  [29821]
-    Now creates the file if it did not previously exist
-
-- FileUtils - toFile(URL)  [32575]
-    Now handles escape syntax such as %20
-
-- FileFilterUtils - makeCVSAware(IOFileFilter)  [33023]
-    Fixed bug that caused method to be completely broken
-
-- CountingInputStream  [33336]
-    Fixed bug that caused the count to reduce by one at the end of the stream
-
-- CountingInputStream - skip(long)  [34311]
-    Bytes from calls to this method were not previously counted
-
-- NullOutputStream  [33481]
-    Remove unnecessary synchronization
-
-- AbstractFileFilter - accept(File, String)  [30992]
-    Fixed broken implementation
-
-- FileUtils  [36801]
-    Previously threw NPE when listing files in a security restricted directory
-    Now throw IOException with a better message
-
-- FileUtils - writeStringToFile()
-    Null encoding now correctly uses the platform default
-
-Enhancements from 1.0
----------------------
-- FilenameUtils - new class  [33303,29351]
-    A static utility class for working with filenames
-    Seeks to ease the pain of developing on Windows and deploying on Unix
-
-- FileSystemUtils - new class  [32982,36325]
-    A static utility class for working with file systems
-    Provides one method at present, to get the free space on the filing system
-
-- IOUtils - new public constants
-    Constants for directory and line separators on Windows and Unix
-
-- IOUtils - toByteArray(Reader,encoding)
-    Handles encodings when reading to a byte array
-
-- IOUtils - toCharArray(InputStream)  [28979]
-          - toCharArray(InputStream,encoding)
-          - toCharArray(Reader)
-    Reads a stream/reader into a charatcter array
-
-- IOUtils - readLines(InputStream)  [36214]
-          - readLines(InputStream,encoding)
-          - readLines(Reader)
-    Reads a stream/reader line by line into a List of Strings
-
-- IOUtils - toInputStream(String)  [32958]
-          - toInputStream(String,encoding)
-    Creates an input stream that uses the string as a source of data
-
-- IOUtils - writeLines(Collection,lineEnding,OutputStream)  [36214]
-          - writeLines(Collection,lineEnding,OutputStream,encoding)
-          - writeLines(Collection,lineEnding,Writer)
-    Writes a collection to a stream/writer line by line
-
-- IOUtils - write(...)
-    Write data to a stream/writer (moved from CopyUtils with better null handling)
-
-- IOUtils - copy(...)
-    Copy data between streams (moved from CopyUtils with better null handling)
-
-- IOUtils - contentEquals(Reader,Reader)
-    Method to compare the contents of two readers
-
-- FileUtils - toFiles(URL[])
-    Converts an array of URLs to an array of Files
-
-- FileUtils - copyDirectory()  [32944]
-    New methods to copy a directory
-
-- FileUtils - readFileToByteArray(File)
-    Reads an entire file into a byte array
-
-- FileUtils - writeByteArrayToFile(File,byte[])
-    Writes a byte array to a file
-
-- FileUtils - readLines(File,encoding)  [36214]
-    Reads a file line by line into a List of Strings
-
-- FileUtils - writeLines(File,encoding,List)
-              writeLines(File,encoding,List,lineEnding)
-    Writes a collection to a file line by line
-
-- FileUtils - EMPTY_FILE_ARRAY
-    Constant for an empty array of File objects
-
-- ConditionalFileFilter - new interface  [30705]
-    Defines the behaviour of list based filters
-
-- AndFileFilter, OrFileFilter  [30705]
-    Now support a list of filters to and/or
-
-- WildcardFilter  [31115]
-    New filter that can match using wildcard file names
-
-- FileFilterUtils - makeSVNAware(IOFileFilter)
-    New method, like makeCVSAware, that ignores Subversion source control directories
-
-- ClassLoaderObjectInputStream
-    An ObjectInputStream that supports a ClassLoader
-
-- CountingInputStream,CountingOutputStream - resetCount()  [28976]
-    Adds the ability to reset the count part way through reading/writing the stream
-
-- DeferredFileOutputStream - writeTo(OutputStream)  [34173]
-    New method to allow current contents to be written to a stream
-
-- DeferredFileOutputStream  [34142]
-    Performance optimizations avoiding double buffering
-
-- LockableFileWriter - encoding support [36825]
-    Add support for character encodings to LockableFileWriter
-    Improve the validation
-    Create directories if necesssary
-
-- IOUtils and EndianUtils are no longer final  [28978]
-    Allows developers to have subclasses if desired   
-
-==============================================================================
-Feedback
-==============================================================================
-
-Open source works best when you give feedback:
-http://commons.apache.org/io/
+Release Notes - Commons IO - Version 2.5
 
-Please direct all bug reports to JIRA
-http://issues.apache.org/jira/browse/IO
+** Bug
+    * [IO-299] - getPrefixLength returns null if filename has leading slashes
+    * [IO-323] - What should happen in FileUtils.sizeOf[Directory] when an overflow takes place?
+    * [IO-328] - FileUtils.listFilesAndDirs includes original dir in results even when it doesn't match filter
+    * [IO-343] - org.apache.commons.io.comparator Javadoc is inconsistent with real code
+    * [IO-354] - Commons IO Tailer does not respect UTF-8 Charset
+    * [IO-355] - IOUtils copyLarge() and skip() methods are performance hogs
+    * [IO-356] - CharSequenceInputStream#reset() behaves incorrectly in case when buffer size is not dividable by data size
+    * [IO-357] - [Tailer] InterruptedException while the thead is sleeping is silently ignored
+    * [IO-361] - Add API FileUtils.forceMkdirsParent()
+    * [IO-362] - IOUtils.contentEquals* methods returns false if input1 == input2, should return true
+    * [IO-368] - ClassLoaderObjectInputStream does not handle primitive typed members
+    * [IO-372] - FileUtils.moveDirectory can produce misleading error message on failiure
+    * [IO-374] - WildcardFileFilter ctors should not use null to mean IOCase.SENSITIVE when delegating to other ctors
+    * [IO-379] - CharSequenceInputStream - add tests for available()
+    * [IO-383] - FileUtils.doCopyFile caches the file size; needs to be documented
+    * [IO-389] - FileUtils.sizeOfDirectory can throw IllegalArgumentException
+    * [IO-390] - FileUtils.sizeOfDirectoryAsBigInteger can overflow
+    * [IO-395] - [IO] Configurable Buffered Size
+    * [IO-401] - [IO] copyFileToDirectory - Over-Write File
+    * [IO-428] - BOMInputStream.skip returns wrong count if stream contains no BOM
+    * [IO-436] - Improper JavaDoc comment for FilenameUtils.indexOfExtension
+    * [IO-448] - FileUtils.waitFor(...) swallows thread interrupted status
+    * [IO-451] - ant test fails - resources missing from test classpath
+    * [IO-453] - Regression in FileUtils.readFileToString from 2.0.1
+    * [IO-462] - IOExceptionWithCause no longer needed
+    * [IO-479] - Correct exception message in FileUtils.getFile(File, String...)
+    * [IO-481] - org.apache.commons.io.FileUtils#waitFor waits too long
+    * [IO-484] - FilenameUtils should handle embedded null bytes
+    * [IO-492] - Typo: In an IOUtils.java comment it says "focussed" instead of "focused"
+    * [IO-494] - Mismatch return type in api docs of class DirectoryWalker.
+
+
+** Improvement
+    * [IO-233] - Add Methods for Buffering Streams/Writers To IOUtils
+    * [IO-239] - Convert IOCase to a Java 1.5+ Enumeration
+    * [IO-314] - Deprecate all methods that use the default encoding
+    * [IO-338] - When a file is rotated, finish reading previous file prior to starting new one
+    * [IO-341] - A constant for holding the BOM character (U+FEFF) 
+    * [IO-345] - Supply a hook method allowing Tailer actively determining stop condition
+    * [IO-346] - Add ByteArrayOutputStream.toInputStream()
+    * [IO-348] - Missing information in IllegalArgumentException thrown by org.apache.commons.io.FileUtils#validateListFilesParameters
+    * [IO-349] - Add API with array offset and length argument to FileUtils.writeByteArrayToFile
+    * [IO-352] - Spelling fixes
+    * [IO-353] - Add API IOUtils.copy(InputStream, OutputStream, int)
+    * [IO-375] - FilenameUtils.splitOnTokens(String text) check for '**' could be simplified
+    * [IO-380] - FileUtils.copyInputStreamToFile should document it closes the input source
+    * [IO-433] - Upgrade To Use JUnit @Annotations
+    * [IO-435] - Javadoc of methods in FileUtils does not mention thrown IllegalArgumentException
+    * [IO-437] - Make IOUtils.EOF public and reuse it in various classes
+    * [IO-452] - FileUtils.isSymlink returns false for broken symlinks.
+    * [IO-471] - Support for additional encodings needed in ReversedLinesFileReader
+    * [IO-487] - ValidatingObjectInputStream contribution - restrict which classes can be deserialized
+
+
+
+** New Feature
+    * [IO-330] - IOUtils#toBufferedOutputStream/toBufferedWriter to conditionally wrap the output
+    * [IO-358] - Add IOUtils.read and readFully(ReadableByteChannel, ByteBuffer buffer)
+    * [IO-359] - Add IOUtils.skip and skipFully(ReadableByteChannel, long)
+    * [IO-360] - Add API Charsets.requiredCharsets()
+    * [IO-381] - Add FileUtils.copyInputStreamToFile API with option to leave the source open
+    * [IO-382] - Chunked IO for large arrays
+    * [IO-385] - FileUtils.doCopyFile can potentially loop for ever
+    * [IO-400] - IOUtils: add support for copying from large byte buffers
+    * [IO-425] - Setter method for ThresholdingOutputStream
+    * [IO-426] - Add API IOUtils.closeQuietly(Closeable...)
+    * [IO-446] - adds an endOfFileReached method to the TailerListener
+    * [IO-457] - Add BoundedReader
+    * [IO-459] - Add WindowsLineEndingInputStream and UnixLineEndingInputStream
+
+
+** Task
+    * [IO-406] - Introduce new class AppendableOutputStream
+    * [IO-422] - Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets
+    * [IO-465] - Update to JUnit 4.12
+
+
+** Wish
+    * [IO-403] - [IO] copyFileToDirectory - Over-Write File
+    * [IO-410] - [IO] Readfully() That Returns A Byte Array
 
-Or subscribe to the commons-user mailing list (prefix emails by [io])
-http://commons.apache.org/mail-lists.html
 
-The Commons-IO Team