Apache Commons logo Commons IO

Release Notes

Release History

Version Date Description
2.5 2015-12-DD New features and bug fixes.
2.4 2012-06-12 New features and bug fixes.
2.3 2012-April-10 New features and bug fixes.
2.2 2012-March-26 New features and bug fixes.
2.1 2011-Sep-28 New features and bug fixes.
2.0.1 2010-Dec-26  
2.0 2010-Oct-18  
1.4 2008-Jan-21  
1.3.2 2007-Jul-02 Bug fixes.

Release 2.5 – 2015-12-DD

Type Changes By
Fix Typo: In an IOUtils.java comment it says "focussed" instead of "focused". Fixes IO-492. Thanks to Santiago Castro. ggregory
Update Converted all testcases to JUnit 4 Fixes IO-433. krosenvold
Add Add ValidatingObjectInputStream for controlled deserialization Fixes IO-487. bdelacretaz
Fix adds an endOfFileReached method to the TailerListener Fixes IO-446. Thanks to Jeffrey Barrus. krosenvold
Fix FilenameUtils should handle embedded null bytes Fixes IO-484. Thanks to Philippe Arteau. krosenvold
Fix Changed/Corrected algorithm for waitFor Fixes IO-481. krosenvold
Add Support for additional encodings in ReversedLinesFileReader Fixes IO-471. Thanks to Leandro Reis. krosenvold
Fix BOMInputStream.skip returns wrong count if stream contains no BOM Fixes IO-428. Thanks to Stefan Gmeiner. krosenvold
Add Setter method for threshold on ThresholdingOutputStream Fixes IO-425. Thanks to Craig Swank. krosenvold
Fix FileUtils.waitFor(...) swallows thread interrupted status Fixes IO-488. Thanks to Björn Buchner. krosenvold
Fix Support for symlinks with missing target. Added support for JDK7 symlink features when present Fixes IO-452. Thanks to David Standish. krosenvold
Update Added testcase to show this was fixed with IO-423 Fixes IO-466. krosenvold
Update Correct exception message in FileUtils.getFile(File, String...) Fixes IO-479. Thanks to Zhouce Chen. sebb
Add Introduce new class AppendableOutputStream Fixes IO-406. Thanks to Niall Pemberton. britter
Update Update to JUnit 4.12 Fixes IO-465. Thanks to based2. britter
Update IOExceptionWithCause no longer needed Fixes IO-462. sebb
Add Add WindowsLineEndingInputStream and UnixLineEndingInputStream. Fixes IO-459. Thanks to Kristian Rosenvold. olamy
Add Add a BoundedReader, a wrapper that can be used to constrain access to an underlying stream when used with mark/reset - to avoid overflowing the mark limit of the underlying buffer. Fixes IO-457. Thanks to Kristian Rosenvold. olamy
Fix Regression in FileUtils.readFileToString from 2.0.1 Fixes IO-453. Thanks to Steven Christou. sebb
Fix ant test fails - resources missing from test classpath Fixes IO-451. Thanks to David Standish. sebb
Fix Document that FileUtils.deleteDirectory, directoryContains and cleanDirectory may throw an IllegalArgumentException in case the passed directory does not exist or is not a directory. Fixes IO-435. Thanks to Dominik Stadler. tn
Add Add API IOUtils.closeQuietly(Closeable...) Fixes IO-426. ggregory
Fix Javadoc fixes, mostly to appease 1.8.0 Fixes IO-424. Thanks to Ville Skyttä. ggregory
Update Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets Fixes IO-422. ggregory
Add Readfully() That Returns A Byte Array Fixes IO-410. Thanks to Beluga Behr. sebb
Add Overload IOUtils buffer methods to accept buffer size Fixes IO-395. Thanks to Beluga Behr. brentworden
Fix FileUtils.sizeOfDirectory can throw IllegalArgumentException Fixes IO-389. Thanks to Austin Doupnik. sebb
Fix FileUtils.sizeOfDirectoryAsBigInteger can overflow. Ensure that recursive calls all use BigInteger Fixes IO-390. sebb
Add Chunked IO for large arrays. Added writeChunked(byte[], OutputStream) and writeChunked(char[] Writer) Added ChunkedOutputStream, ChunkedWriter Fixes IO-382. sebb
Fix FileUtils.doCopyFile can potentially loop for ever Exit loop if no data to copy Fixes IO-385. sebb
Fix FileUtils.doCopyFile caches the file size; needs to be documented Added Javadoc; show file lengths in exception message Fixes IO-383. sebb
Update Convert IOCase to a Java 1.5+ Enumeration [N.B. this is binary compatible] Fixes IO-239. sebb
Add Add Methods for Buffering Streams/Writers To IOUtils Added overloaded buffer() methods - see also IO-330 Fixes IO-233. sebb
Add IOUtils#toBufferedOutputStream/toBufferedWriter to conditionally wrap the output Added overloaded buffer() methods - see also IO-233 Fixes IO-330. sebb
Add Add FileUtils.copyInputStreamToFile API with option to leave the source open. See copyInputStreamToFile(final InputStream source, final File destination, boolean closeSource) Fixes IO-381. ggregory
Fix FileUtils.copyInputStreamToFile should document it closes the input source Fixes IO-380. Thanks to claudio_ch. sebb
Fix Tailer erroneously considers file as new. Fix to use file.lastModified() rather than System.currentTimeMillis() Fixes IO-279. sebb
Fix CharSequenceInputStream#reset() behaves incorrectly in case when buffer size is not dividable by data size. Fix code so skip relates to the encoded bytes; reset now re-encodes the data up to the point of the mark Fixes IO-356. sebb
Add CharSequenceInputStream - add tests for available() Fix code so it really does reflect a minimum available. Fixes IO-379. sebb
Update getPrefixLength returns null if filename has leading slashes Javadoc: add examples to show correct behaviour; add unit tests Fixes IO-328. sebb
Update FileUtils.listFilesAndDirs includes original dir in results even when it doesn't match filter Javadoc: clarify that original dir is included in the results Fixes IO-299. sebb
Add Add ByteArrayOutputStream.toInputStream() Fixes IO-346. sebb
Fix ClassLoaderObjectInputStream does not handle primitive typed members Fixes IO-368. sebb
Add A constant for holding the BOM character (U+FEFF) Fixes IO-341. sebb
Fix Deprecate all methods that use the default encoding Fixes IO-314. sebb
Fix When a file is rotated, finish reading previous file prior to starting new one Fixes IO-338. sebb
Fix Commons IO Tailer does not respect UTF-8 Charset. Fixes IO-354. sebb
Fix What should happen in FileUtils.sizeOf[Directory] when an overflow takes place? Added Javadoc. Fixes IO-323. sebb
Fix FileUtils.moveDirectory can produce misleading error message on failiure Fixes IO-372. sebb
Update FilenameUtils.splitOnTokens(String text) check for '**' could be simplified Fixes IO-375. sebb
Update WildcardFileFilter ctors should not use null to mean IOCase.SENSITIVE when delegating to other ctors Fixes IO-374. sebb
Fix IOUtils.contentEquals* methods returns false if input1 == input2, should return true. Fixes IO-362. Thanks to mmadson, ggregory. ggregory
Add Add API FileUtils.forceMkdirsParent(). Fixes IO-361. ggregory
Add Add API Charsets.requiredCharsets(). Fixes IO-360. ggregory
Add Add IOUtils.skip and skipFully(ReadableByteChannel, long). Fixes IO-359. Thanks to yukoba. ggregory
Add Add IOUtils.read and readFully(ReadableByteChannel, ByteBuffer buffer). Fixes IO-358. Thanks to yukoba. ggregory
Fix [Tailer] InterruptedException while the thread is sleeping is silently ignored Fixes IO-357. Thanks to mortenh. ggregory
Add Add API IOUtils.copy(InputStream, OutputStream, int) Fixes IO-353. Thanks to ggregory. ggregory
Add Add API with array offset and length argument to FileUtils.writeByteArrayToFile. Fixes IO-349. Thanks to scop. ggregory
Fix Spelling fixes. Fixes IO-352. Thanks to scop. ggregory
Add Missing information in IllegalArgumentException thrown by org.apache.commons.io.FileUtils#validateListFilesParameters. Fixes IO-348. Thanks to plcstpierre. ggregory
Add Supply a hook method allowing Tailer actively determining stop condition. Fixes IO-345. Thanks to mkresse. ggregory
Fix Improper JavaDoc comment for FilenameUtils.indexOfExtension. Fixes IO-436. Thanks to christoph.schneegans. ggregory
Add Make IOUtils.EOF public and reuse it in various classes. Fixes IO-437. ggregory

Release 2.4 – 2012-06-12

Type Changes By
Fix org.apache.commons.io.comparator Javadoc is inconsistent with real code. Fixes IO-343. Thanks to igorlash. ggregory
Fix Yottabyte (YB) incorrectly defined in FileUtils. Fixes IO-336. Thanks to rleavelle. ggregory
Add Tailer locks file from deletion/rename on Windows. Fixes IO-269. Thanks to sebb. ggregory
Fix Tailer erroneously considers file as new. Fixes IO-279. Thanks to Sergio Bossa, Chris Baron. sebb
Fix Tailer#readLines - incorrect CR handling. Fixes IO-335. sebb
Fix FileUtils.toURLs throws NPE for null parameter; document the behavior. Fixes IO-334. sebb
Add Export OSGi packages at version 1.x in addition to 2.x. Fixes IO-333. Thanks to fmeschbe. ggregory
Add Add XmlStreamReader support for UTF-32. Fixes IO-320. Thanks to ggregory. ggregory
Add BOMInputStream wrongly detects UTF-32LE_BOM files as UTF-16LE_BOM files in method getBOM(). Fixes IO-331. Thanks to ggregory. ggregory
Fix Improve tailer's reading performance. Fixes IO-332. Thanks to liangly. ggregory
Fix Improve Tailer performance with buffered reads (see IO-332). Fixes IO-279. ggregory
Fix FileUtils.writeLines uses unbuffered IO. Fixes IO-329. Thanks to tivv. ggregory
Add Add byteCountToDisplaySize(BigInteger). Fixes IO-327. Thanks to ggregory. ggregory
Add Add new FileUtils.sizeOf[Directory] APIs to return BigInteger. Fixes IO-326. Thanks to ggregory, kinow. ggregory
Add Add IOUtils.toByteArray methods to work with URL and URI. Fixes IO-325. Thanks to raviprak. ggregory
Add Add missing Charset sister APIs to method that take a String charset name. Fixes IO-324. Thanks to raviprak. ggregory
Fix FileUtils.sizeOfDirectory follows symbolic links. Fixes IO-319. Thanks to raviprak. ggregory

Release 2.3 – 2012-April-10

Type Changes By
Add Add and use class Charsets. Fixes IO-322. Thanks to ggregory. ggregory
Add ByteOrderMark UTF_32LE is incorrect. Fixes IO-321. Thanks to ggregory. ggregory
Add Add Charset sister APIs to method that take a String charset name. Fixes IO-318. Thanks to ggregory. ggregory

Release 2.2 – 2012-March-26

Type Changes By
Add Add IOUTils.toBufferedReader(Reader) Fixes IO-313. Thanks to ggregory. ggregory
Add Allow applications to provide buffer (or size) for copyLarge methods. Fixes IO-308. Thanks to Manoj Mokashi. sebb
Fix IOUtils.read(InputStream/Reader) ignores the offset parameter Fixes IO-311. Thanks to Robert Muir. sebb
Fix CharSequenceInputStream(CharSequence s, Charset charset, int bufferSize) ignores bufferSize Fixes IO-312. sebb
Add New copyLarge() method in IOUtils that takes additional offset, length arguments Fixes IO-305. Thanks to Manoj Mokashi. sebb
Fix FileUtils.moveDirectoryToDirectory removes source directory if destination is a sub-directory Fixes IO-300. sebb
Fix ReaderInputStream#read(byte[] b, int off, int len) should check for valid parameters Fixes IO-307. sebb
Add Use terabyte (TB), petabyte (PB) and exabyte (EB) in FileUtils.byteCountToDisplaySize(long size) Fixes IO-287. Thanks to Ron Kuris, Gary Gregory. bayard
Fix ReaderInputStream#read(byte[] b, int off, int len) should always return 0 for length == 0 Fixes IO-306. sebb
Add FileUtils.listFiles() doesn't return directories Fixes IO-173. Thanks to Marcos Vinícius da Silva. sebb
Fix "FileUtils#deleteDirectoryOnExit(File)" does not work Fixes IO-276. Thanks to nkami. sebb
Fix BoundedInputStream.read() treats max differently from BoundedInputStream.read(byte[]...) Fixes IO-273. Thanks to sebb. sebb
Add CharSequenceInputStream to efficiently stream content of a CharSequence Fixes IO-297. Thanks to Oleg Kalnichevski. sebb
Update ReaderInputStream optimization: more efficient reading of small chunks of data Fixes IO-296. Thanks to Oleg Kalnichevski. sebb
Fix Various methods of class 'org.apache.commons.io.FileUtils' incorrectly suppress 'java.io.IOException' Fixes IO-298. Thanks to Christian Schulte. sebb
Add The second constructor of Tailer class does not pass 'delay' to the third one Fixes IO-304. Thanks to liangly. ggregory
Add TeeOutputStream does not call branch.close() when main.close() throws an exception Fixes IO-303. Thanks to fabian.barney. ggregory
Add ArrayIndexOutOfBoundsException in BOMInputStream when reading a file without BOM multiple times Fixes IO-302. Thanks to jsteuerwald, detinho. ggregory
Add Add IOUtils.closeQuietly(Selector) necessary Fixes IO-301. Thanks to kaykay.unique. ggregory
Add IOUtils.closeQuietly() should take a ServerSocket as a parameter Fixes IO-292. Thanks to sebb. sebb
Add Add read/readFully methods to IOUtils Fixes IO-290. Thanks to sebb. sebb
Add Supply a ReversedLinesFileReader Fixes IO-288. Thanks to Georg Henzler. sebb
Add Add new function FileUtils.directoryContains. Fixes IO-291. Thanks to ggregory. ggregory
Add FileUtils.contentEquals and IOUtils.contentEquals - Add option to ignore "line endings" Added contentEqualsIgnoreEOL methods to both classes Fixes IO-275. Thanks to CJ Aspromgos. sebb

Release 2.1 – 2011-Sep-28

Type Changes By
Add Use standard Maven directory layout Fixes IO-285. Thanks to ggregory. ggregory
Add Add IOUtils API toString for URL and URI to get contents Fixes IO-284. Thanks to ggregory. ggregory
Add Add API FileUtils.copyFile(File input, OutputStream output) Fixes IO-282. Thanks to ggregory. ggregory
Fix Dubious use of mkdirs() return code Fixes IO-280. Thanks to sebb. sebb
Fix ReaderInputStream enters infinite loop when it encounters an unmappable character Fixes IO-277.
Fix FileUtils.moveFile() JavaDoc should specify FileExistsException thrown Fixes IO-264.
Add FileAlterationObserver has no getter for FileFilter Fixes IO-262.
Add Add FileUtils.getFile API with varargs parameter Fixes IO-261.
Fix ClassLoaderObjectInputStream does not handle Proxy classes Fixes IO-260.
Update FileAlterationMonitor.stop(boolean allowIntervalToFinish) Fixes IO-259.
Add Add new APPEND parameter for writing string into files Fixes IO-182.
Fix Tailer returning partial lines when reaching EOF before EOL Fixes IO-274. Thanks to Frank Grimes. sebb
Fix FileUtils.copyFile() throws IOException when copying large files to a shared directory (on Windows) Fixes IO-266. Thanks to Igor Smereka. sebb
Fix FileSystemUtils.freeSpaceKb throws exception for Windows volumes with no visible files. Improve coverage by also looking for hidden files. Fixes IO-263. Thanks to Gil Adam. sebb
Add Add new read method "toByteArray" to handle InputStream with known size. Fixes IO-251. Thanks to Marco Albini. sebb

Release 2.0.1 – 2010-Dec-26

Type Changes By
Update TODO: Convert RELEASE-NOTES.txt from 2.0.1?

Release 2.0 – 2010-Oct-18

Type Changes By
Update TODO: Convert RELEASE-NOTES.txt from 2.0?

Release 1.4 – 2008-Jan-21

Type Changes By
Update TODO: Convert RELEASE-NOTES.txt from 1.4?

Release 1.3.2 – 2007-Jul-02

Type Changes By
Fix Some tests, which are implicitly assuming a Unix-like file system, are now skipped on Windows. Fixes IO-115. jochen
Fix Created the FileCleaningTracker, basically a non-static version of the FileCleaner, which can be controlled by the user. Fixes IO-116. jochen
Fix EndianUtils - both readSwappedUnsignedInteger(...) methods could return negative numbers due to int/long casting. Fixes IO-117. Thanks to Hiroshi Ikeda. bayard