Hi Benedikt,

First, thank you for being the RM here.

Granted, I might have documented this new class better (and made the ctor
private.)

That said, while it is a new class for 2.6, we cannot RERO and change the
class name later.

I do believe that in this case, the narrow class name of "Factory" is
better but I will not -1 the release. Maybe ByteOrderParser would be even
better.

If other operations are needed in the future, like some conversion gadgets,
then a good class name should be created for that, and not dumped in a Util
class. But, hey, that's just me, YMMV. I just like clear names that
demonstrate intent.

Cheers,
Gary


Gary




On Mon, Oct 2, 2017 at 10:42 AM, Benedikt Ritter <brit...@apache.org> wrote:

> Hey Gary,
>
> > Am 02.10.2017 um 16:15 schrieb Gary Gregory <garydgreg...@gmail.com>:
> >
> > 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? ;-)
>
> Thank you for your feedback! To be honest I was confused when I came along
> that class. My observations were:
>
> - Only static methods, but instantiable
> - It is really a parser but it was called factory (okay, „utils" isn’t
> better…)
> - strange special handling of Strings „Little“ and „Big“ with no
> explanation
>
> So I tried to change it in a way, that it makes more sense to me, but that
> doesn’t seem to make sense for everybody :-)
>
> I have no problem with RERO, if this class need more polishing.
>
> Regards,
> Benedikt
>
> >
> > 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
> >>
> >>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

Reply via email to