I am not happy about the change of class name from ByteOrderFactory to ByteOrderUtils. I am also did a knee jerk -1 when I saw the commit go by but I have in the middle of moving.
- A ByteOrderFactory creates ByteOrder objects and that's it. The intent is clear and focused. - The use of ByteOrder "Utils" does not have any use ATM, there are no other "util" methods. - The use of ByteOrder "Utils" leads to the same problems we have seen with [lang]'s StringUtils: An endless, unorganized, dumping ground. - Granted there is less room for expansion with ByteOrder than with Strings. But, having dealt with byte order code in the past, I can tell you from experience it can grow a plenty to deal with all sorts of funky cases. Ever heard of middle-endian? ;-) Gary On Fri, Mar 16, 2012 at 6:28 PM, <s...@apache.org> wrote: > Author: sebb > Date: Sat Mar 17 00:28:40 2012 > New Revision: 1301835 > > URL: http://svn.apache.org/viewvc?rev=1301835&view=rev > Log: > Move changes.xml to location expected by CP24 > Add previous release notes to end of .vm file so we keep history when > regenerating > > Added: > commons/proper/io/trunk/src/changes/ > - copied from r1178270, commons/proper/io/trunk/src/changes/ > commons/proper/io/trunk/src/changes/changes.xml > - copied unchanged from r1300447, commons/proper/io/trunk/src/ > changes/changes.xml > commons/proper/io/trunk/src/changes/release-notes.vm (with props) > Modified: > commons/proper/io/trunk/RELEASE-NOTES.txt > > Modified: commons/proper/io/trunk/RELEASE-NOTES.txt > URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/ > RELEASE-NOTES.txt?rev=1301835&r1=1301834&r2=1301835&view=diff > ============================================================ > ================== > --- commons/proper/io/trunk/RELEASE-NOTES.txt (original) > +++ commons/proper/io/trunk/RELEASE-NOTES.txt Sat Mar 17 00:28:40 2012 > @@ -1,8 +1,7 @@ > -$Id$ > > - Commons IO Package > - Version 2.1 > - Release Notes > + Commons IO Package > + Version 2.2 > + Release Notes > > INTRODUCTION: > > @@ -17,31 +16,39 @@ file comparators and endian transformati > Commons IO Package Version 2.2 > ============================================================ > ================== > > +The Commons IO library contains utility classes, stream implementations, > file filters, file comparators and endian classes. > + > +$release.description.replaceAll(" ", " > +") > + > +Changes in this version include: > + > New features: > -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. > +o IO-287: Use terabyte (TB) , petabyte (PB) and exabyte (EB) in > FileUtils.byteCountToDisplaySize(long size) Thanks to Ron Kuris, Gary > Gregory. > +o IO-173: FileUtils.listFiles() doesn't return directories Thanks to > Marcos VinÃcius da Silva. > +o IO-297: CharSequenceInputStream to efficiently stream content of a > CharSequence Thanks to Oleg Kalnichevski. > +o IO-304: The second constructor of Tailer class does not pass 'delay' > to the third one Thanks to liangly. > +o IO-303: TeeOutputStream does not call branch.close() when main.close() > throws an exception Thanks to fabian.barney. > +o IO-302: ArrayIndexOutOfBoundsException in BOMInputStream when reading > a file without BOM multiple times Thanks to jsteuerwald, detinho. > +o IO-301: Add IOUtils.closeQuietly(Selector) necessary Thanks to > kaykay.unique. > +o IO-292: IOUtils.closeQuietly() should take a ServerSocket as a > parameter Thanks to sebb. > +o IO-290: Add read/readFully methods to IOUtils Thanks to sebb. > +o IO-288: Supply a ReversedLinesFileReader Thanks to Georg Henzler. > +o IO-291: Add new function FileUtils.directoryContains. Thanks to > ggregory. > +o IO-275: FileUtils.contentEquals and IOUtils.contentEquals - Add option > to ignore "line endings" > + Added contentEqualsIgnoreEOL methods to both classes Thanks to CJ > Aspromgos. > > Fixed Bugs: > -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. > +o IO-300: FileUtils.moveDirectoryToDirectory removes source directory > if destination is a subdirectory > +o IO-307: ReaderInputStream#read(byte[] b, int off, int len) should > check for valid parameters > +o IO-306: ReaderInputStream#read(byte[] b, int off, int len) should > always return 0 for length == 0 > +o IO-276: "FileUtils#deleteDirectoryOnExit(File)" does not work Thanks > to nkami. > +o IO-273: BoundedInputStream.read() treats max differently from > BoundedInputStream.read(byte[]...) Thanks to sebb. > +o IO-298: Various methods of class 'org.apache.commons.io.FileUtils' > incorrectly suppress 'java.io.IOException' Thanks to Christian Schulte. > > Changes: > -o ReaderInputStream optimization: more efficient reading of small chunks > of data Issue: IO-296. Thanks to Oleg Kalnichevski. > +o IO-296: ReaderInputStream optimization: more efficient reading of > small chunks of data Thanks to Oleg Kalnichevski. > + > > ============================================================ > ================== > Commons IO Package Version 2.1 > > Added: commons/proper/io/trunk/src/changes/release-notes.vm > URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/ > changes/release-notes.vm?rev=1301835&view=auto > ============================================================ > ================== > --- commons/proper/io/trunk/src/changes/release-notes.vm (added) > +++ commons/proper/io/trunk/src/changes/release-notes.vm Sat Mar 17 > 00:28:40 2012 > @@ -0,0 +1,897 @@ > +## Licensed to the Apache Software Foundation (ASF) under one > +## or more contributor license agreements. See the NOTICE file > +## distributed with this work for additional information > +## regarding copyright ownership. The ASF licenses this file > +## to you under the Apache License, Version 2.0 (the > +## "License"); you may not use this file except in compliance > +## with the License. You may obtain a copy of the License at > +## > +## http://www.apache.org/licenses/LICENSE-2.0 > +## > +## Unless required by applicable law or agreed to in writing, > +## software distributed under the License is distributed on an > +## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > +## KIND, either express or implied. See the License for the > +## specific language governing permissions and limitations > +## under the License. > + > + Commons IO Package > + Version ${version} > + Release Notes > + > +INTRODUCTION: > + > +Commons IO is a package of Java utility classes for java.io's hierarchy. > +Classes in this package are considered to be so standard and of such high > +reuse as to justify existence in java.io. > + > +Commons IO contains utility classes, stream implementations, file filters, > +file comparators and endian transformation classes. > + > +=========================================================== > =================== > +Commons IO Package Version ${version} > +=========================================================== > =================== > + > +$introduction.replaceAll("(?<!\015)\012", " > +") > + > +## N.B. the available variables are described here: > +## http://maven.apache.org/plugins/maven-changes-plugin/ > examples/using-a-custom-announcement-template.html > +## > +## Hack to improve layout: replace all pairs of spaces with a single > new-line > +$release.description.replaceAll(" ", " > +") > + > +#if ($release.getActions().size() == 0) > +No changes defined in this version. > +#else > +Changes in this version include: > + > +## indent to be used if there is no issue attribute. > +## should be the same as the indent in the changes.xml file > +## less 2 spaces for the 'o' and trailing space > +#set($indent=' ') > +#if ($release.getActions('add').size() !=0) > +New features: > +#foreach($actionItem in $release.getActions('add')) > +## Use replaceAll to fix up LF-only line ends on Windows. > +#set($action=$actionItem.getAction().replaceAll("\n"," > +")) > +#if ($actionItem.getIssue()) > +#set($issue=$actionItem.getIssue()) > +#else > +#set($issue="") > +#end > +#if ($actionItem.getDueTo()) > +#set($dueto=$actionItem.getDueTo()) > +#else > +#set($dueto="") > +#end > +o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto != > "")Thanks to $dueto. #end > + > +#set($issue="") > +#set($dueto="") > +#end > +#end > + > +#if ($release.getActions('fix').size() !=0) > +Fixed Bugs: > +#foreach($actionItem in $release.getActions('fix')) > +## Use replaceAll to fix up LF-only line ends on Windows. > +#set($action=$actionItem.getAction().replaceAll("\n"," > +")) > +#if ($actionItem.getIssue()) > +#set($issue=$actionItem.getIssue()) > +#else > +#set($issue="") > +#end > +#if ($actionItem.getDueTo()) > +#set($dueto=$actionItem.getDueTo()) > +#else > +#set($dueto="") > +#end > +o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto != > "")Thanks to $dueto. #end > + > +#set($issue="") > +#set($dueto="") > +#end > +#end > + > +#if ($release.getActions('update').size() !=0) > +Changes: > +#foreach($actionItem in $release.getActions('update')) > +## Use replaceAll to fix up LF-only line ends on Windows. > +#set($action=$actionItem.getAction().replaceAll("\n"," > +")) > +#if ($actionItem.getIssue()) > +#set($issue=$actionItem.getIssue()) > +#else > +#set($issue="") > +#end > +#if ($actionItem.getDueTo()) > +#set($dueto=$actionItem.getDueTo()) > +#else > +#set($dueto="") > +#end > +o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto != > "")Thanks to $dueto. #end > + > +#set($issue="") > +#set($dueto="") > +#end > +#end > + > +#if ($release.getActions('remove').size() !=0) > +Removed: > +#foreach($actionItem in $release.getActions('remove')) > +## Use replaceAll to fix up LF-only line ends on Windows. > +#set($action=$actionItem.getAction().replaceAll("\n"," > +")) > +#if ($actionItem.getIssue()) > +#set($issue=$actionItem.getIssue()) > +#else > +#set($issue="") > +#end > +#if ($actionItem.getDueTo()) > +#set($dueto=$actionItem.getDueTo()) > +#else > +#set($dueto="") > +#end > +o#if($!issue != "") $issue: #else$indent#end ${action} #if($!dueto != > "")Thanks to $dueto. #end > + > +#set($issue="") > +#set($dueto="") > +#end > +#end > +## End of main loop > +#end > + > +=========================================================== > =================== > +Commons IO Package 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. > + > +=========================================================== > =================== > +Commons IO Package Version 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 > + > +=========================================================== > =================== > +Commons IO Package Version 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 > + > +=========================================================== > =================== > +Commons IO Package 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. > + > +=========================================================== > =================== > +Commons IO Package 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] > + > +=========================================================== > =================== > +Commons IO Package 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] > + > +=========================================================== > =================== > +Commons IO Package 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 > + > +=========================================================== > =================== > +Commons IO Package 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] > + > +=========================================================== > =================== > +Commons IO Package 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 unecessary 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/ > + > +Please direct all bug reports to JIRA > +http://issues.apache.org/jira/browse/IO > + > +Or subscribe to the commons-user mailing list (prefix emails by [io]) > +http://commons.apache.org/mail-lists.html > + > +The Commons-IO Team > > Propchange: commons/proper/io/trunk/src/changes/release-notes.vm > ------------------------------------------------------------ > ------------------ > svn:eol-style = native > > >