Apache Commons logo Commons IO

Apache Commons IO Release Notes

Release History

Version Date Description
2.8.0 2020-09-05 Java 8 required.
2.7 2020-05-24 Java 8 required.
2.6 2017-10-15 Java 7 required, Java 9 supported.
2.5 2016-04-22 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.8.0 – 2020-09-05

Type Changes By
Add Add org.apache.commons.io.input.CircularInputStream. Thanks to Gary Gregory. ggregory
Add Add org.apache.commons.io.file.PathUtils.cleanDirectory(Path, FileVisitOption...). Thanks to Gary Gregory. ggregory
Add Add org.apache.commons.io.file.PathUtils.deleteDirectory(Path, FileVisitOption...). Thanks to Gary Gregory. ggregory
Add Add NullAppendable. Thanks to Gary Gregory. ggregory
Fix CharSequenceReader.skip should return 0 instead of EOF on stream end #123. Thanks to Rob Spoor, Jochen Wiedmann. ggregory
Fix Implement CharSequenceReader.ready() #122. Thanks to Rob Spoor. ggregory
Fix Fix code smells; fix typos #115. Fixes IO-669. Thanks to XenoAmess, Gary Gregory. ggregory
Fix Add caching for required charsets #120. Thanks to Jerome Wolff, Gary Gregory. ggregory
Fix Make some simplifications #121. Fixes IO-673. Thanks to Jerome Wolff. ggregory
Fix InfiniteCircularInputStream is not infinite if its input buffer contains -1. Fixes IO-674. Thanks to Gary Gregory. ggregory
Fix InfiniteCircularInputStream throws a divide-by-zero exception when reading if its input buffer is size 0. Fixes IO-675. Thanks to Gary Gregory. ggregory
Fix FileSystem.getCurrent() does not return the correct enum. Fixes IO-677. Thanks to Gary Gregory. ggregory
Fix input.AbstractCharacterFilterReader passes count of chars read #132. Fixes IO-679. Thanks to proneel. ggregory
Add Add PathUtils.getAclEntryList(Path). Thanks to Gary Gregory. ggregory
Add Null-guard IOUtils.close(Closeable, IOConsumer). Thanks to Gary Gregory. ggregory
Add Add ReversedLinesFileReader.readLines(int). Thanks to Gary Gregory. ggregory
Add Add ReversedLinesFileReader.toString(int). Thanks to Gary Gregory. ggregory
Add Add PathUtils.delete(Path, DeleteOption...). Add PathUtils.deleteDirectory(Path, DeleteOption...). Add PathUtils.deleteFile(Path, DeleteOption...). Add PathUtils.setReadOnly(Path, boolean, LinkOption...). Add CleaningPathVisitor.CleaningPathVisitor(PathCounters, DeleteOption[], String...). Add DeletingPathVisitor.DeletingPathVisitor(PathCounters, DeleteOption[], String...). Fixes IO-684. Thanks to Gary Gregory, Robin Jansohn. ggregory
Fix CircularBufferInputStream.read() fails to convert byte to unsigned int. Fixes IO-683. sebb
Fix Fix SpotBugs issues in org.apache.commons.io.FileUtils. Thanks to Gary Gregory. ggregory
Add Add RandomAccessFileInputStream. Thanks to Gary Gregory. ggregory
Add IOUtils.close(Closeable) should allow a list of closeables. Fixes IO-681. sebb
Fix Copying a File sets last modified date to 01 January 1970. Fixes IO-672. sebb
Add Add IOUtils.consume(InputStream). Thanks to Gary Gregory. ggregory
Add Add isFileNewer() and isFileOlder() methods that support the Java 8 Date/Time API. #124. Fixes IO-676. Thanks to Isira Seneviratne, Gary Gregory. ggregory
Fix Prevent NullPointerException in ReversedLinesFileReader constructors #117. Fixes IO-676. Thanks to Michael Ernst, Gary Gregory. ggregory
Add Add a MarkShieldInputStream #119. Thanks to Adam Retter, Gary Gregory. ggregory
Add Deprecate IOUtils.LINE_SEPARATOR in favor of Java 7's System.lineSeparator(). Thanks to Gary Gregory. ggregory
Update Replace FindBugs with SpotBugs. Thanks to Gary Gregory. ggregory
Update maven-checkstyle-plugin 3.1.0 -> 3.1.1. Thanks to Gary Gregory. ggregory
Update Update tests from org.apache.commons:commons-lang3 3.10 to 3.11. Thanks to Gary Gregory. ggregory
Update Update commons-parent from 50 to 51 #129. Thanks to Gary Gregory. ggregory
Update Update actions/checkout from v1 to v2.3.1 #126. Thanks to Gary Gregory. ggregory
Update Update junit-pioneer from 0.6.0 to 0.8.0, #127, #135. Thanks to Gary Gregory. ggregory
Update Update mockito-core from 3.3.3 to 3.5.9 #128, #133, #145, #149, #151. Thanks to Gary Gregory. ggregory
Update Update spotbugs from 4.0.6 to 4.1.1 #134. Thanks to Dependabot. ggregory
Update Update junit-pioneer from 0.8.0 to 0.9.0 #138. Thanks to Dependabot. ggregory
Update Update actions/checkout from v2.3.1 to v2.3.2 #140. Thanks to Dependabot. ggregory
Update Update actions/setup-java from v1.4.0 to v1.4.2 #141, #148. Thanks to Dependabot. ggregory

Release 2.7 – 2020-05-24

Type Changes By
Fix Some tests fail if the base path contains a space. Fixes IO-589. sebb
Add Adding the CircularBufferInputStream, and the PeekableInputStream. jochen
Fix Make methods in ObservableInputStream.Obsever public. Fixes IO-582. Thanks to Bruno Palos. jochen
Fix Thread bug in FileAlterationMonitor#stop(int). Fixes IO-535. Thanks to Svetlin Zarev, Anthony Raymond. pschumacher
Add Add org.apache.commons.io.FilenameUtils.isIllegalWindowsFileName(char). Fixes IO-553. ggregory
Fix Perform locale independent upper case conversions. Fixes IO-557. Thanks to luccioman. pschumacher
Fix Missing Javadoc in FilenameUtils causing Travis-CI build to fail. Fixes IO-570. Thanks to Pranet Verma. ggregory
Fix Remove redundant isDirectory() check in org.apache.commons.io.FileUtils.listFilesAndDirs(File, IOFileFilter, IOFileFilter). Fixes IO-571. Thanks to pranet. ggregory
Update Refactor duplicate code in org.apache.commons.io.FileUtils. Fixes IO-572. Thanks to Pranet Verma. ggregory
Add Add readers to filter out given characters: CharacterSetFilterReader and CharacterFilterReader. Fixes IO-577. Thanks to Gary Gregory. ggregory
Fix FilenameUtils.normalize now verifies hostname syntax in UNC path. Fixes IO-559.
Update Update org.apache.commons.io.FilenameUtils.isExtension(String, String[]) to use var args. Fixes IO-580. ggregory
Fix FileUtils.copyToFile(InputStream source, File destination) should not close input stream. Fixes IO-554. Thanks to Michele Mariotti. ggregory
Add Add IOUtils copy methods with java.lang.Appendable as the target. Fixes IO-594. Thanks to Gary Gregory. ggregory
Fix FileUtils.doCopyFile(File, File, boolean) can throw ClosedByInterruptException. Fixes IO-604. Thanks to Gary Gregory. ggregory
Add Add class CanExecuteFileFilter. Fixes IO-605. Thanks to Gary Gregory. ggregory
Update Make array declaration in ThresholdingOutputStream consistent with other array declarations in the library #77. Fixes IO-701. Thanks to Raymond Tan. ggregory
Add Support java.nio.Path and non-default file systems for ReversedLinesFileReader (#62). Fixes IO-578. Thanks to Mark Chesney. ggregory
Add Add a convenience NullPrintStream. Fixes IO-608. Thanks to Gary Gregory. ggregory
Update Update from Java 7 to Java 8. Fixes IO-607. Thanks to Gary Gregory. ggregory
Update Remove throws IOException in method isSymlink() #80. Fixes IO-610. Thanks to Sebastian. ggregory
Add Add class TeeReader. Fixes IO-612. Thanks to Rob Spoor, Gary Gregory. ggregory
Add Add classes ClosedReader and CloseShieldReader. #84. Fixes IO-613. Thanks to Rob Spoor, Gary Gregory. ggregory
Add Add classes TaggedWriter, ClosedWriter and BrokenWriter. #86. Fixes IO-614. Thanks to Rob Spoor. ggregory
Add Add classes TeeWriter, FilterCollectionWriter, ProxyCollectionWriter, IOExceptionList, IOIndexedException. Fixes IO-615. Thanks to Gary Gregory, Rob Spoor. ggregory
Add Add class AppendableWriter. #87. Fixes IO-616. Thanks to Rob Spoor. ggregory
Add Add class CloseShieldWriter. #83. Fixes IO-617. Thanks to Rob Spoor, Gary Gregory. ggregory
Add Add classes Added TaggedReader, ClosedReader and BrokenReader. #85. Fixes IO-618. Thanks to Rob Spoor. ggregory
Add Support sub sequences in CharSequenceReader. #91. Fixes IO-619. Thanks to Rob Spoor. ggregory
Fix Corrected misleading exception message for FileUtils.copyDirectoryToDirectory. Fixes IO-625. Thanks to Mikko Maunu. ggregory
Fix A mistake in the FilenameUtils.concat()'s Javadoc about an absolute path. Fixes IO-626. Thanks to Yuji Konishi. ggregory
Update Migration to JUnit Jupiter #97. Fixes IO-628. Thanks to Allon Mureinik. ggregory
Update Deprecate org.apache.commons.io.output.NullOutputStream.NullOutputStream() in favor of org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM. Fixes IO-630. Thanks to Gary Gregory. ggregory
Add Add a CountingFileVisitor (as the basis for a forthcoming DeletingFileVisitor). Fixes IO-631. Thanks to Gary Gregory. ggregory
Add Add PathUtils for operations on NIO Path. Fixes IO-632. Thanks to Gary Gregory. ggregory
Add Add DeletingFileVisitor. Fixes IO-633. Thanks to Gary Gregory. ggregory
Update FileUtils#forceDelete should use Files#delete rather than File#delete so exception messages includes reason for failure. Fixes IO-629. Thanks to Ian Springer, Ian Springer, Gary Gregory. ggregory
Update Make getCause synchronized and use a Deque instead of a Stack #64. Fixes IO-634. Thanks to Václav Haisman, Bruno P. Kinoshita, Gary Gregory. ggregory
Add Add org.apache.commons.io.IOUtils.close(Closeable). Fixes IO-635. Thanks to Gary Gregory. ggregory
Add Add and reuse org.apache.commons.io.IOUtils.closeQuitely(Closeable, Consumer<IOException>). Add and reuse org.apache.commons.io.IOUtils.close(Closeable, IOConsumer<IOException>). Fixes IO-636. Thanks to Gary Gregory. ggregory
Fix NPE in org.apache.commons.io.IOUtils.contentEquals(InputStream, InputStream) when only one input is null. Fixes IO-640. Thanks to Gary Gregory. ggregory
Fix NPE in org.apache.commons.io.IOUtils.contentEquals(Reader, Reader) when only one input is null. Fixes IO-641. Thanks to Gary Gregory. ggregory
Fix NPE in org.apache.commons.io.IOUtils.contentEqualsIgnoreEOL(Reader, Reader) when only one input is null. Fixes IO-643. Thanks to Gary Gregory. ggregory
Fix NPE in org.apache.commons.io.FileUtils.contentEqualsIgnoreEOL(File, File) when only one input is null. Fixes IO-644. Thanks to Gary Gregory. ggregory
Add Add org.apache.commons.io.file.PathUtils.fileContentEquals(Path, Path, OpenOption...). Fixes IO-645. Thanks to Gary Gregory. ggregory
Add Add a SequenceReader similar to java.io.SequenceInputStream. Fixes IO-458. Thanks to Gary Gregory, Joshua Gitlin. ggregory
Add Implement directory content equality. 100#. Fixes IO-648. Thanks to Gary Gregory. ggregory
Update Update tests from Apache Commons Lang 3.9 to 3.10. Thanks to Gary Gregory. ggregory
Update Update tests org.junit-pioneer:junit-pioneer 0.3.0 -> 0.6.0. Thanks to Gary Gregory. ggregory
Update Update tests org.junit.jupiter:junit-jupiter 5.5.2 -> 5.6.2. Thanks to Gary Gregory. ggregory
Update Update tests org.mockito:mockito-core 3.0.0 -> 3.3.3. Thanks to Gary Gregory. ggregory
Add Refactor ByteArrayOutputStream into synchronized and unsynchronized versions #108. Fixes IO-648. Thanks to Adam Retter, Alex Herbert, Gary Gregory. ggregory
Add Refactor ByteArrayOutputStream into synchronized and unsynchronized versions #108. Fixes IO-662. Thanks to Adam Retter, Gary Gregory. ggregory
Fix org.apache.commons.io.FileUtils.copyURLToFile(*) open but do not close streams. Fixes IO-664. Thanks to Gary Gregory. ggregory
Update Normalize internal buffers to 8192 bytes. Fixes IO-666. Thanks to Gary Gregory. ggregory
Update Ensure that passing a null InputStream results in NPE with tests #112. Fixes IO-665. Thanks to Otto Fowler, Gary Gregory. ggregory
Update commons.jacoco.version 0.8.4 -> 0.8.5. Thanks to Gary Gregory. ggregory
Update com.github.siom79.japicmp:japicmp-maven-plugin 0.14.1 -> 0.14.3. Thanks to Gary Gregory. ggregory
Update Add functional interfaces IOFunction and IOSupplier #110. Fixes IO-667. Thanks to Adam Retter, Gary Gregory. ggregory
Update Support sub sequences in CharSequenceReader #91. Thanks to Rob Spoor, Gary Gregory. ggregory
Update Remove deprecated sudo setting. #113. Thanks to dengliming. ggregory

Release 2.6 – 2017-10-15

Type Changes By
Update Make code style of hasBOM() consistent with getBOMCharsetName(). Fixes IO-553. Thanks to Michael Ernst. britter
Fix ClosedOutputStream#flush should throw. Fixes IO-546. Thanks to Tomas Celaya. pschumacher
Add Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility. Fixes IO-551. britter
Fix Documentation issue, fix 404 Javadoc issues in the description page. Fixes IO-550. Thanks to Jimi Adrian. kinow
Update FileUtils#readFileToByteArray: optimize reading of files with known size. Fixes IO-542. Thanks to Ilmars Poikans. pschumacher
Update Throw a IllegalArgumentException instead of NullPointerException in FileSystemUtils.freeSpaceWindows(). Fixes IO-547. Thanks to Nikhil Shinde, Michael Ernst, Gary Greory. ggregory
Add Add convenience methods for copyToDirectory. Fixes IO-367. Thanks to James Sawle. pschumacher
Fix Javadoc contradictory for FileFilterUtils.ageFileFilter(cutoff) and the filter it constructs: AgeFileFilter(cutoff). Fixes IO-442. Thanks to Simon Robinson. pschumacher
Fix FileUtilTestCase.testForceDeleteDir() should not delete testDirectory parent. Fixes IO-534. sebb
Fix fix Tailer.run race condition runaway logging. Fixes IO-528. Thanks to Dave Moten. pschumacher
Fix getPrefixLength return -1 if unix file contains colon. Fixes IO-483. Thanks to Marko Vasic. kinow
Fix FileUtilsTestCase#testContentEqualsIgnoreEOL fails on Windows. Fixes IO-520. pschumacher
Fix .gitattributes not correctly applied. Fixes IO-516. Thanks to Jason Pyeron. pschumacher
Fix Allow Specifying Initial Buffer Size of DeferredFileOutputStream. Fixes IO-515. Thanks to Brett Lounsbury, Gary Gregory. ggregory
Fix ThresholdingOutputStream.thresholdReached() results in FileNotFoundException. Fixes IO-512. Thanks to Ralf Hauser. ggregory
Fix After a few unit tests, a few newly created directories not cleaned completely. Fixes IO-511. Thanks to Ahmet Celik. britter
Fix Exceptions are suppressed incorrectly when copying files. Fixes IO-502. Thanks to Christian Schulte. ggregory
Fix Update platform requirement to Java 7. Fixes IO-503. ggregory
Fix BOMInputStream shouldn't sort array of BOMs in-place. Fixes IO-537. Thanks to Borys Zibrov. ggregory
Update Deprecate methods FileSystemUtils.freeSpaceKb(). Fixes IO-506. Thanks to Christian Schulte. ggregory
Update Make LineIterator implement Closeable to support try-with-resources statements. Fixes IO-505. Thanks to Christian Schulte. ggregory
Update Deprecated of all IOUtils.closeQuietly() methods and use try-with-resources internally. Fixes IO-504. Thanks to Christian Schulte. ggregory
Add Add infinite circular input stream. Fixes IO-493. Thanks to Piotr Turski. pschumacher
Add Add a ByteOrderParser class. Fixes IO-507. ggregory
Add Add ObservableInputStream. Fixes IO-518. jochen
Add Add MessageDigestCalculatingInputStream. Fixes IO-519. jochen
Add Add convenience methods for reading class path resources. Fixes IO-513. Thanks to Behrang Saeedzadeh. ggregory
Remove Remove org.apache.commons.io.Java7Support. Fixes IO-514. pschumacher
Fix Implement special case handling for NTFS ADS names: FilenameUtils.getExtension(String), and FilenameUtils.indexOfExtension(String) are now throwing an IllegalArgumentException, if the file name in question appears to identify an alternate data stream (Windows only). Fixes IO-567. jochen

Release 2.5 – 2016-04-22

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 test cases 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 behavior; 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