Hello Gary, > Am 02.10.2017 um 19:00 schrieb Gary Gregory <garydgreg...@gmail.com>: > > 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. Cheers, Benedikt > > 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 >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org