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