Hello Gary, > Am 03.10.2017 um 15:07 schrieb Gary Gregory <[email protected]>: > > On Oct 3, 2017 03:47, "Benedikt Ritter" <[email protected]> wrote: > > Hello Gary, > >> Am 02.10.2017 um 19:00 schrieb Gary Gregory <[email protected]>: >> >> 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. > > Sorry I meant I can roll out another RC to polish this API. > >> >> 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. > > I have been to fast changing this class without giving others the chance to > review and comment my changes. For this reason I canceled the release of IO > 2.6. Let’s find a class design that everybody is happy with. > > > Thank you Benedikt. I created the class based on code I had at work. So it > is based on a real life use case. > > IMO, the most narrow name for the class would be (1) ByteOrderParser, based > on the current code. The widest name would be (2) ByteOrderUtil. The in > between name I picked was (3) ByteOrderFactory. These are the three options > IMO. I like (3) but could live with (1). (2) is a code smell IMO for the > reasons stated previously.
I see your point here and I agree. Utils tend to become a dumping ground for everything. I’m not to fond of the name Factory, because factories are objects which help with complicated object constructions. This class creates a ByteOrder instance from a string so I’d say it’s a parser. If you can live with this name, lets take it. Can you please elaborate some more on the use case you have in your application? I don’t understand why we need the handling of „Little“ and „Big“ Strings. This feels kind of random/specific to a single application to me. Regards, Benedikt > > Gary > > > Cheers, > Benedikt > >> >> Cheers, >> Gary >> >> >> Gary >> >> >> >> >> On Mon, Oct 2, 2017 at 10:42 AM, Benedikt Ritter <[email protected]> > wrote: >> >>> Hey Gary, >>> >>>> Am 02.10.2017 um 16:15 schrieb Gary Gregory <[email protected]>: >>>> >>>> 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, <[email protected]> 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: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
