This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-io.git
commit cacdb00f9d812d31fc8e9eb4145151fddb461822 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Fri Apr 28 17:35:30 2023 -0400 Prepare for release candidate --- RELEASE-NOTES.txt | 283 ++++++++- src/changes/release-notes.vm | 1324 ------------------------------------------ 2 files changed, 257 insertions(+), 1350 deletions(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 5337bf2a..25c16416 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,5 +1,5 @@ Apache Commons IO -Version 2.11.0 +Version 2.12.0 Release Notes INTRODUCTION: @@ -11,9 +11,246 @@ reuse as to justify existence in java.io. The Apache Commons IO library contains utility classes, stream implementations, file filters, file comparators, endian transformation classes, and much more. +Java 8 required. + +Changes in this version include: + +New features: +o IO-746: Drop unnecessary casts and conversions #267. Thanks to Davide Angelocola. +o Add GitHub coverage.yml. Thanks to Gary Gregory. +o Add BrokenReader.INSTANCE. Thanks to Gary Gregory. +o Add UncheckedBufferedReader. Thanks to Gary Gregory. +o Add UncheckedFilterReader. Thanks to Gary Gregory. +o Add UncheckedFilterWriter. Thanks to Gary Gregory. +o Add StringInputStream. Thanks to Gary Gregory. +o Add UncheckedFilterInputStream. Thanks to Gary Gregory. +o Add UncheckedFilterOutputStream. Thanks to Gary Gregory. +o Add BrokenInputStream.INSTANCE. Thanks to Gary Gregory. +o Add ClosedInputStream.INSTANCE and deprecate CLOSED_INPUT_STREAM. Thanks to Gary Gregory. +o Add ClosedReader.INSTANCE and deprecate CLOSED_READER. Thanks to Gary Gregory. +o Add BrokenWriter.INSTANCE. Thanks to Gary Gregory. +o Add ClosedOutputStream.INSTANCE and deprecate CLOSED_OUTPUT_STREAM. Thanks to Gary Gregory. +o Add ClosedWriter.INSTANCE and deprecate CLOSED_WRITER. Thanks to Gary Gregory. +o Add NullOutputStream.INSTANCE and deprecate NULL_OUTPUT_STREAM. Thanks to Gary Gregory. +o Add NullPrintStream.INSTANCE and deprecate NULL_PRINT_STREAM. Thanks to Gary Gregory. +o Add NullWriter.INSTANCE and deprecate NULL_WRITER. Thanks to Gary Gregory. +o Add NullInputStream.INSTANCE. Thanks to Gary Gregory. +o Add NullReader.INSTANCE. Thanks to Gary Gregory. +o Add PathUtils.readString(Path, Charset). Thanks to Gary Gregory. +o Add FileUtils.newOutputStream(File, boolean). Thanks to Gary Gregory. +o Add PathUtils.newOutputStream(Path, boolean). Thanks to Gary Gregory. +o Add UncheckedAppendable. Thanks to Gary Gregory. +o Add and reuse UncheckedIOExceptions. Thanks to Gary Gregory. +o Add PathUtils.getTempDirectory(). Thanks to Gary Gregory. +o Add FileSystem.getNameSeparator(). Thanks to Gary Gregory. +o Add FileSystem.normalizeSeparators(). Thanks to Gary Gregory. +o Add PathUtils.isNewer(Path, FileTime, LinkOption...). Thanks to Gary Gregory. +o Add PathUtils.isNewer(Path, Instant, LinkOption...). Thanks to Gary Gregory. +o Add AgeFileFilter.AgeFileFilter(Instant). + Add AgeFileFilter.AgeFileFilter(Instant, boolean). Thanks to Gary Gregory. +o Add FileUtils.lastModifiedFileTime(File). Thanks to Gary Gregory. +o Add FileTimes. Thanks to Gary Gregory. +o Add PathUtils.waitFor(Path, Duration, LinkOption...). Thanks to Gary Gregory. +o Add org.apache.commons.io.input.Tailer.getDelayDuration(). Thanks to Gary Gregory. +o Add FileUtils.current(). Thanks to Gary Gregory. +o Add and use PathUtils.setLastModifiedTime(Path) for more precision. + Add and use PathUtils.setLastModifiedTime(Path, Path) for more precision. Thanks to Gary Gregory. +o Add and use PathUtils.isNewer(Path, ChronoZonedDateTime, LinkOption...) for more precision. + Add and use PathUtils.isNewer(Path, Path) for more precision. + Add and use FileUtils.isNewer(File, FileTime) for more precision. Thanks to Gary Gregory. +o Add and use PathUtils.isOlder(Path, FileTime, LinkOption...). + Add and use PathUtils.isOlder(Path, Instant, LinkOption...). + Add and use PathUtils.isOlder(Path, long, LinkOption...). + Add and use PathUtils.isOlder(Path, Path). Thanks to Gary Gregory. +o Add and use PathUtils.sizeOf(Path). + Add and use PathUtils.sizeOfAsBigInteger(Path). + Add and use PathUtils.sizeOfDirectory(Path). + Add and use PathUtils.sizeOfDirectoryAsBigInteger(Path). Thanks to Gary Gregory. +o Add and use IOCase.value(IOCase, IOCase). Thanks to Gary Gregory. +o Add Tailer.Tailable interface to allow tailing of remote files for example using jCIFS. Thanks to Jon Freedman, Gary Gregory. +o Add and use RandomAccessFileMode. Thanks to Gary Gregory. +o Add PathUtils.writeString(Path, CharSequence, Charset, OpenOption...). Thanks to Gary Gregory. +o Add PathUtiFiles.getFileAttributeView() shorthands: + - PathUtils.getAclFileAttributeView(Path, LinkOption...) + - PathUtils.getDosFileAttributeView(Path, LinkOption...) + - PathUtils.getPosixFileAttributeView(Path, LinkOption...) Thanks to Gary Gregory. +o IO-747: Make commons-io a JPMS module by adding module-info.class. +o IO-753: Add IOUtils method to copy output stream to input stream #281. Thanks to SebastianDietrich, Gary Gregory. +o Add PathUtils.isPosix(Path, LinkOption...). #290 Thanks to Gary Gregory. +o Add PathUtils.readAttributes(Path, Class, LinkOption...). #290 Thanks to Gary Gregory. +o Add IOExceptionList.checkEmpty(List, Object). Thanks to Gary Gregory. +o Add IOBiConsumer, IOTriConsumer, IOComparator, IOUnaryOperator, IOBinaryOperator. Thanks to Gary Gregory. +o Add and reuse IOConsumer forAll(*), forEach(*), and forEachIndexed(*). Thanks to Gary Gregory. +o Add CharsetEncoders. Thanks to Gary Gregory. +o Add CharsetDecoders. Thanks to Gary Gregory. +o Add PathUtils.createParentDirectories(Path, LinkOption, FileAttribute...). Thanks to Gary Gregory. +o Update FileEntry to use FileTime instead of long for file time stamps. Thanks to Gary Gregory. +o IO-680: Add more tests for IOUtils.contentEqualsIgnoreEOL #137. Thanks to XenoAmess, sebbASF, Gary Gregory. +o Reduce boilerplate through new UncheckedIO class and friends in org.apache.commons.io.function. Thanks to Gary Gregory. +o Add PathUtils.touch(Path). Thanks to Gary Gregory. +o Add FileSystem.getIllegalFileNameCodePoints(). Thanks to Gary Gregory. +o Add FileUtils.isFileNewer(File, ChronoLocalDate, OffsetTime). + Add FileUtils.isFileNewer(File, OffsetDateTime). + Add FileUtils.isFileOlder(File, ChronoLocalDate, OffsetTime). + Add FileUtils.isFileOlder(File, OffsetDateTime). Thanks to Isira Seneviratne, Gary Gregory. +o Add IOBiConsumer.noop(). Thanks to Gary Gregory. +o Add IOUtils.closeQuietly(Iterable<Closeable>). + Add IOUtils.closeQuietly(Stream<Closeable>). Thanks to Gary Gregory. +o Add Charsets.toCharset(Charset, Charset). + Add Charsets.toCharset(String, Charset). Thanks to Gary Gregory. +o Add XmlStreamWriter(OutputStream, Charset). Thanks to Gary Gregory. +o Add PathUtils.getLastModifiedFileTime(*). Thanks to Gary Gregory. +o Add IOBiFunction, IOTriFunction, IOQuadFunction, IOPredicate, IOIterator, IOSpliterator, IOBaseStream, IOStream, FilesUncheck. Thanks to Gary Gregory. +o Add IOUtils.consume(Reader). Thanks to Gary Gregory. +o Add IOSupplier.asSupplier(). Thanks to Gary Gregory. +o Add IOFunction.asFunction(). Thanks to Gary Gregory. +o Add IOConsumer.asConsumer(). Thanks to Gary Gregory. +o Add TimestampedObserver.isClosed(). Thanks to Gary Gregory. +o IOExceptionList implements Iterable. Thanks to Gary Gregory. +o IO-784: Add support for Appendable to HexDump #418. Thanks to Fredrik Kjellberg, Gary Gregory. +o Add and use ThreadUtils. Thanks to DaGeRe, Gary Gregory. +o IO-786: Add UnsynchronizedFilterInputStream. Thanks to Gary Gregory. +o IO-786: Add UnsynchronizedBufferedInputStream. Thanks to Gary Gregory, Benoit Tellier. +o Add FileSystem.getBlockSize(). Thanks to Gary Gregory. +o Add builders and avoid creating more constructors for all permutations of current options. Thanks to Gary Gregory. +o Refactor using new Supplier API IOUtils.toString(IOSupplier<InputStream>, Charset[, IOSupplier<String>]). Thanks to Gary Gregory, maxxedev. +o Refactor using new Supplier API org.apache.commons.io.file.PathUtils.copy(IOSupplier<InputStream>, Path, CopyOption...). Thanks to Gary Gregory, maxxedev. + +Fixed Bugs: +o IO-697: IOUtils.toByteArray size validation does not match documentation. Thanks to otter606. +o Fix Javadoc links to the JRE Javadoc 8. Thanks to Gary Gregory. +o IO-744: FileWriterWithEncoding for an existing file no longer truncates the file. #251. Thanks to RBRi, Gary Gregory. +o A null Charset or Charset name in FileWriterWithEncoding constructors uses the default Charset. Thanks to Gary Gregory. +o Fix usage of assertNotNull #269. Thanks to Davide Angelocola. +o IO-727: FilenameUtils directoryContains() should handle files with the same prefix #217. Thanks to trungPa, Gary Gregory. +o IO-748: FileUtils.moveToDirectory() exception documentation and exception message error. Thanks to Dirk Heinrichs, Gary Gregory, Elango Ravi. +o ThreadMonitor.sleep(Duration) ignores nanoseconds. Thanks to Gary Gregory. +o Fix Javadoc in ThreadMonitor#run() method. #273. Thanks to Arturo Bernal. +o IO-749: FileUtils.listFiles() does not list matching files if File parameter is a symbolic link. Thanks to haihuiyang, Gary Gregory. +o Fix typo in Javadocs for FileUtils#convertFileCollectionToFileArray() #276. Thanks to niranjanghule, Gary Gregory. +o Avoid Code Duplication: Reuse Sleep from ThreadMonitor #66. Thanks to DaGeRe, Gary Gregory. +o IO-750: FileUtils.iterateFiles also lists directories. Thanks to Sita Ge�ner, Sebastian Peters, Gary Gregory. +o IO-721: Wrong exception message in FileUtils.setLastModified(File, File). Thanks to Dirk Heinrichs, Gary Gregory. +o IO-717: Infinite loop in ReaderInputStream instead of throwing exception for CodingErrorAction.REPORT. Thanks to Marcono1234, Gary Gregory. +o IO-716: ReaderInputStream enter infinite loop for too small buffer sizes. Thanks to Marcono1234, Gary Gregory. +o IO-638: Infinite loop in CharSequenceInputStream.read for 4-byte characters with UTF-8 and 3-byte buffer. Thanks to Thayne McCombs, Gary Gregory. +o IO-638: PathUtils.setReadOnly(Path, boolean, LinkOption...) should add READ_* file attributes when using POSIX. Thanks to Gary Gregory. +o IO-638: PathUtils.setReadOnly(Path, boolean, LinkOption...) readOnly argument is always assumed true on POSIX. Thanks to Gary Gregory. +o IO-729: Prevent IllegalArgumentExceptions in BrokenInputStream/Reader/OutputStream/Writer #278. Thanks to Rob Spoor, Gary Gregory. +o FileUtils.copyURLToFile(URL, File, int, int) leaks its URLConnection. + Called by FileUtils.copyURLToFile(URL, File). Thanks to Gary Gregory. +o IO-714: Fixed ReaderInputStream not calling CharsetEncoder.flush issue #283. Thanks to kevinwang1975, Gary Gregory. +o Minor changes #287. Thanks to Arturo Bernal. +o IO-756: Update FileWriterWithEncoding to extend ProxyWriter #296. Thanks to wodencafe, Gary Gregory, Bruno P. Kinoshita. +o Initialize the message of an IOExceptionList to a default if null. Thanks to Gary Gregory. +o IO-751: When deleting symlinks, File/PathUtils.deleteDirectory() changes file permissions of the target. Thanks to Gary Gregory, Richard Cyganiak. +o ReaderInputStream maps null Charset, Charset name, and CharsetEncoder to the platform default instead of throwing a NullPointerException. Thanks to Gary Gregory. +o CharSequenceInputStream maps null Charset and Charset name to the platform default instead of throwing a NullPointerException. Thanks to Gary Gregory. +o WriterOutputStream maps null Charset, Charset name, and CharsetEncoder name to the platform default instead of throwing a NullPointerException. Thanks to Gary Gregory. +o FileUtils.copyURLToFile should create target parent directories and overwrite target file #319. Thanks to Chad Wilson, Gary Gregory. +o IO-484: Fix incorrect FilenameUtils Javadoc for null bytes #310. Thanks to Marcono1234, Gary Gregory. +o IO-484: Change to uppercase variable constant. #323. Thanks to Arturo Bernal. +o IO-484: IOCase.isCaseSensitive(IOCase) result is backward #325. Thanks to David Huang, Gary Gregory. +o IO-758: Deprecate PathUtils.NOFOLLOW_LINK_OPTION_ARRAY in favor of noFollowLinkOptionArray(). Thanks to Marcono1234, Gary Gregory. +o Improve ReaderInputStream documentation #291. Thanks to Marcono1234, Gary Gregory. +o Fix misleading comments in FileFilterTest #334. Thanks to richarda23. +o Add missing Javadoc for exceptions thrown for invalid arguments #339. Thanks to Diego Marcilio. +o FileFilterTest minor fixes #340. Thanks to richarda23. +o IO-764: IOUtils.write() throws OutOfMemoryError/NegativeArraySizeException while writing big strings #343. Thanks to DaGeRe, Gary Gregory. +o IO-768: Add reserved Windows file names CONIN$ and CONOUT$ to FileSystem #355. Thanks to Marcono1234, Michael Osipov. +o IO-773: RegexFileFilter is no longer Serializable. Thanks to Dominik Reinarz, Gary Gregory. +o IO-763: [Javadoc] FileFilterUtils doc does not match impl: missing some file filters. Thanks to Richard Adams, Gary Gregory. +o IO-762: FileSystem.WINDOWS.isReservedFileName doesn't check for file extension. Thanks to Leonidas Chiron, Gary Gregory. +o IO-772: Confusing Javadoc on IOUtils#resourceToURL() and other resource* methods. Thanks to Dan Ziemba, Gary Gregory. +o IO-443: FileUtils.copyFile methods throw an unnecessary "Failed to copy full contents from" exception. Thanks to Dan Ziemba, Gary Gregory. +o IO-564: Pick up Javadoc from super for override write() methods in AbstractByteArrayOutputStream and ByteArrayOutputStream. Thanks to Hao Zhong, Bernd Eckenfels, Pascal Schumacher, Gary Gregory. +o Fix minor typos #367. Thanks to Marc Wrobel. +o IO-776: Fix parameters to requireNonNull call in DeferredOutputSteam #368. Thanks to Chris Povirk. +o Fix PathUtils.copyFileToDirectory(URL,Path,CopyOption[]). Thanks to Gary Gregory. +o IO-386: FileUtils.doCopyFile uses different methods to check the file sizes. Thanks to Sebb, Bernd Eckenfels, zhipengxu, Gary Gregory. +o Fix typos #375. Thanks to Michael Ernst. +o IO-611: FilenameUtils.normalize javadoc and tests #383. Thanks to Fedor Urvanov. +o IO-611: Better docs in IOUtils and IOUtils.byteArray(int size) #374. Thanks to ArdenL-Liu, Bruno P. Kinoshita, Gary Gregory. +o IO-782: SequenceReader should close readers when its close method is called #391. Thanks to Matteo Di Giovinazzo, Gary Gregory. +o IO-790: Fix symbolic link file filter #450. Thanks to Miguel Mu�oz, Gary Gregory. +o IO-790: Apply nanoseconds precision for QueueInputStream timeout duration. #453. Thanks to maxxedev, Gary Gregory, Bruno P. Kinoshita. +o IO-726: Add MemoryMappedFileInputStream #215. Thanks to shollander, Gary Gregory. + +Changes: +o Bump actions/cache from 2.1.6 to 3.0.10 #307, #337, #393. Thanks to Dependabot, Gary Gregory. +o Bump actions/checkout from 2.3.4 to 3.1.0 #286, #298, #330, #392. Thanks to Dependabot, Gary Gregory. +o Bump actions/setup-java from 2 to 3.6.0 #346, #397. Thanks to Dependabot. +o Bump github/codeql-action from 1 to 2 #353. Thanks to Dependabot. +o Bump Maven Javadoc plugin from 3.2.0 to 3.4.1. Thanks to Dependabot, Gary Gregory. +o Bump spotbugs-maven-plugin from 4.2.3 to 4.7.3.0 #250, #259, #272, #274, #285, #288, #289, #305, #315, #326, #338, #360, #366, #370, #380, #395, #403. Thanks to Dependabot. +o Bump spotbugs from 4.5.2 to 4.7.3 #313, #317, #357, #382, #398. Thanks to Gary Gregory, Dependabot. +o Bump JUnit from 5.7.2 to 5.8.2. Thanks to Gary Gregory. +o Bump maven-enforcer-plugin from 3.0.0-M3 to 3.3.0 #255, #363, #431, #446. Thanks to Dependabot. +o Bump checkstyle from 8.44 to 9.3 #256, #257, #266, #279, #292. #308. Thanks to Dependabot, Gary Gregory. +o Bump junit-bom from 5.8.0-M1 to 5.9.1 #260, #271, #275, #309, #386. Thanks to Dependabot. +o Bump mockito-inline from 3.11.2 to 4.11.0 #262, #264, #282, #306, #314, #331, #348, #359, #381, #399, #405, #414, #420. Thanks to Dependabot, Gary Gregory. +o Bump jmh.version from 1.32 to 1.36 #258, #316, #342, #404. Thanks to Dependabot. +o Bump moditect-maven-plugin from 1.0.0.RC1 to 1.0.0.RC3 #280, #439. Thanks to Dependabot. +o Bump junit-pioneer from 1.4.2 to 1.9.1 #304. #335, #362, #402, #406, #409. Thanks to Dependabot, Gary Gregory. +o Bump japicmp-maven-plugin from 0.15.3 to 0.16.0. Thanks to Gary Gregory. +o Bump commons-parent from 52 to 57 #388, #415, #421, #184. Thanks to Gary Gregory, Dependabot. +o Bump jacoco-maven-plugin from 0.8.7 to 0.8.8. Thanks to Gary Gregory. +o Bump maven-antrun-plugin from 3.0.0 to 3.1.0 #354. Thanks to Dependabot. +o Bump commons.surefire.version 3.0.0-M5 to 3.0.0-M7. Thanks to Gary Gregory. +o Bump PMD from 6.44.0 to 6.52.0. Thanks to Gary Gregory. +o Bump maven-pmd-plugin from 3.16.0 to 3.19.0. Thanks to Gary Gregory. +o Bump apache-rat from 0.13 to 0.14. Thanks to Gary Gregory. +o Bump exec-maven-plugin from 3.0.0 to 3.1.0 #369. Thanks to Dependabot. +o Bump maven-checkstyle-plugin from 3.1.2 to 3.2.0 #376. Thanks to Dependabot. +o Bump apache-rat-plugin from 0.14 to 0.15 #387. Thanks to Dependabot. +o Bump default buffer size for CharSequenceInputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory. +o Bump default buffer size for ChunkedOutputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory. +o Bump default buffer size for ChunkedWriter to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory. +o Bump default buffer size for ReaderInputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory. +o Bump default buffer size for WriterOutputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory. + +Compatibility with 2.6: +Binary compatible: Yes. +Source compatible: Yes. +Semantic compatible: Yes. + +Commons IO 2.9.0 requires Java 8. +Commons IO 2.8.0 requires Java 8. +Commons IO 2.7 requires Java 8. +Commons IO 2.6 requires Java 7. +Commons IO 2.5 requires Java 6. +Commons IO 2.4 requires Java 6. +Commons IO 2.3 requires Java 6. +Commons IO 2.2 requires Java 5. +Commons IO 1.4 requires Java 1.3. + +Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html + +For complete information on Apache Commons IO, including instructions on how to submit bug reports, +patches, or suggestions for improvement, see the Apache Commons IO website: + +https://commons.apache.org/proper/commons-io/ + +Download page: https://commons.apache.org/proper/commons-io/download_io.cgi + +Have fun! +-Apache Commons Team + ============================================================================== -Apache Commons IO Version 2.11.0 -============================================================================== + +Apache Commons IO +Version 2.11.0 +Release Notes + +INTRODUCTION: + +Commons IO is a package of Java utility classes like java.io. +Classes in this package are considered to be so standard and of such high +reuse as to justify existence in java.io. + +The Apache Commons IO library contains utility classes, stream implementations, file filters, +file comparators, endian transformation classes, and much more. + Java 8 required. Changes in this version include: @@ -75,6 +312,7 @@ Download page: https://commons.apache.org/proper/commons-io/download_io.cgi Have fun! -Apache Commons Team +============================================================================== Apache Commons IO Version 2.10.0 @@ -89,9 +327,6 @@ reuse as to justify existence in java.io. The Apache Commons IO library contains utility classes, stream implementations, file filters, file comparators, endian transformation classes, and much more. -============================================================================== -Apache Commons IO Version 2.10.0 -============================================================================== Java 8 required. Changes in this version include: @@ -139,6 +374,7 @@ Download page: https://commons.apache.org/proper/commons-io/download_io.cgi Have fun! -Apache Commons Team +============================================================================== Apache Commons IO Version 2.8.0 @@ -153,9 +389,6 @@ reuse as to justify existence in java.io. The Apache Commons IO library contains utility classes, stream implementations, file filters, file comparators, endian transformation classes, and much more. -============================================================================== -Apache Commons IO Version 2.8.0 -============================================================================== Java 8 required. Changes in this version include: @@ -250,9 +483,6 @@ reuse as to justify existence in java.io. The Apache Commons IO library contains utility classes, stream implementations, file filters, file comparators, endian transformation classes, and much more. -============================================================================== -Apache Commons IO Version 2.7 -============================================================================== Java 8 required. Changes in this version include: @@ -351,8 +581,8 @@ Have fun! -Apache Commons Team ============================================================================== + Apache Commons IO Version 2.6 -============================================================================== INTRODUCTION: @@ -482,8 +712,9 @@ Commons IO 2.2 requires Java 5 or later. Commons IO 1.4 requires Java 1.3 or later. ============================================================================== + Apache Commons IO Version 2.5 -============================================================================== + New features and bug fixes. Changes in this version include: @@ -593,8 +824,8 @@ Commons IO 2.2 requires Java 5 or later. Commons IO 1.4 requires Java 1.3 or later. ============================================================================== + Apache Commons IO Version 2.4 -============================================================================== Changes in this version include: @@ -645,8 +876,8 @@ Commons IO 2.2 requires Java 5 or later. Commons IO 1.4 requires Java 1.3 or later. ============================================================================== + Apache Commons IO Version 2.3 -============================================================================== Changes in this version include: @@ -665,8 +896,8 @@ Commons IO 2.2 requires Java 5 or later. Commons IO 1.4 requires Java 1.3 or later. ============================================================================== + Apache Commons IO Version 2.2 -============================================================================== Changes in this version include: @@ -711,8 +942,8 @@ Commons IO 2.2 requires a minimum of Java 5. Commons IO 1.4 requires a minimum of Java 1.3. ============================================================================== + Apache Commons IO Version 2.1 -============================================================================== New features: o Use standard Maven directory layout Issue: IO-285. Thanks to ggregory. @@ -737,8 +968,8 @@ Changes: o FileAlterationMonitor.stop(boolean allowIntervalToFinish) Issue: IO-259. ============================================================================== + Apache Commons IO Package 2.0.1 -============================================================================== Compatibility with 2.0 and 1.4 ------------------------------ @@ -764,8 +995,8 @@ Bug fixes from 2.0 * [IO-258] - XmlStreamReader consumes the stream during encoding detection ============================================================================== + Apache Commons IO Package 2.0 -============================================================================== Compatibility with 1.4 ---------------------- @@ -879,8 +1110,8 @@ Documentation changes from 1.4 * [IO-212 ProxyInputStream.skip() documentation corrections ============================================================================== + Apache Commons IO Version 1.4 -============================================================================== Compatibility with 1.3.2 ------------------------ @@ -980,8 +1211,8 @@ Enhancements from 1.3.2 - SizeFileComparator - compares files using file sizes. ============================================================================== + Apache Commons IO Version 1.3.2 -============================================================================== Compatibility with 1.3.1 ---------------------- @@ -1025,8 +1256,8 @@ Bug fixes from 1.3 - readFileToString(File) is not static [IO-113] ============================================================================== + Apache Commons IO Version 1.3.1 -============================================================================== Compatibility with 1.3 ---------------------- @@ -1046,8 +1277,8 @@ Bug fixes from 1.3 - readFileToString(File) is not static [IO-113] ============================================================================== + Apache Commons IO Version 1.3 -============================================================================== Compatibility with 1.2 ---------------------- @@ -1233,8 +1464,8 @@ Enhancements from 1.2 - Performance enhancements ============================================================================== + Apache Commons IO Version 1.2 -============================================================================== Compatibility with 1.1 ---------------------- @@ -1281,8 +1512,8 @@ Enhancements from 1.1 New method to copy a directory to within another directory [36315] ============================================================================== + Apache Commons IO Version 1.1 -============================================================================== Incompatible changes from 1.0 ----------------------------- diff --git a/src/changes/release-notes.vm b/src/changes/release-notes.vm index 49e8deae..5739b66f 100644 --- a/src/changes/release-notes.vm +++ b/src/changes/release-notes.vm @@ -28,9 +28,6 @@ reuse as to justify existence in java.io. $introduction.replaceAll("(?<!\015)\012", " ") -============================================================================== -Apache Commons IO Version ${version} -============================================================================== ## ## N.B. the available variables are described here: ## http://maven.apache.org/plugins/maven-changes-plugin/examples/using-a-custom-announcement-template.html @@ -169,1324 +166,3 @@ Download page: ${project.url}download_io.cgi Have fun! -Apache Commons Team - -Apache Commons IO -Version 2.8.0 -Release Notes - -INTRODUCTION: - -Commons IO is a package of Java utility classes like java.io. -Classes in this package are considered to be so standard and of such high -reuse as to justify existence in java.io. - -The Apache Commons IO library contains utility classes, stream implementations, file filters, -file comparators, endian transformation classes, and much more. - -============================================================================== -Apache Commons IO Version 2.8.0 -============================================================================== -Java 8 required. - -Changes in this version include: - -New features: -o Add org.apache.commons.io.input.CircularInputStream. Thanks to Gary Gregory. -o Add org.apache.commons.io.file.PathUtils.cleanDirectory(Path, FileVisitOption...). Thanks to Gary Gregory. -o Add org.apache.commons.io.file.PathUtils.deleteDirectory(Path, FileVisitOption...). Thanks to Gary Gregory. -o Add NullAppendable. Thanks to Gary Gregory. -o Add PathUtils.getAclEntryList(Path). Thanks to Gary Gregory. -o Null-guard IOUtils.close(Closeable, IOConsumer). Thanks to Gary Gregory. -o Add ReversedLinesFileReader.readLines(int). Thanks to Gary Gregory. -o Add ReversedLinesFileReader.toString(int). Thanks to Gary Gregory. -o IO-684: Add PathUtils.delete(Path, DeleteOption...). - Add PathUtils.deleteDirectory(Path, DeleteOption...). - Add PathUtils.deleteFile(Path, DeleteOption...). - Add PathUtils.setReadOnly(Path, boolean, LinkOption...). - Add CleaningPathVisitor.CleaningPathVisitor(PathCounters, DeleteOption[], String...). - Add DeletingPathVisitor.DeletingPathVisitor(PathCounters, DeleteOption[], String...). Thanks to Gary Gregory, Robin Jansohn. -o Add RandomAccessFileInputStream. Thanks to Gary Gregory. -o IO-681: IOUtils.close(Closeable) should allow a list of closeables. -o Add IOUtils.consume(InputStream). Thanks to Gary Gregory. -o IO-676: Add isFileNewer() and isFileOlder() methods that support the Java 8 Date/Time API. #124. Thanks to Isira Seneviratne, Gary Gregory. -o Add a MarkShieldInputStream #119. Thanks to Adam Retter, Gary Gregory. -o Deprecate IOUtils.LINE_SEPARATOR in favor of Java 7's System.lineSeparator(). Thanks to Gary Gregory. - -Fixed Bugs: -o CharSequenceReader.skip should return 0 instead of EOF on stream end #123. Thanks to Rob Spoor, Jochen Wiedmann. -o Implement CharSequenceReader.ready() #122. Thanks to Rob Spoor. -o IO-669: Fix code smells; fix typos #115. Thanks to XenoAmess, Gary Gregory. -o Add caching for required charsets #120. Thanks to Jerome Wolff, Gary Gregory. -o IO-673: Make some simplifications #121. Thanks to Jerome Wolff. -o IO-674: InfiniteCircularInputStream is not infinite if its input buffer contains -1. Thanks to Gary Gregory. -o IO-675: InfiniteCircularInputStream throws a divide-by-zero exception when reading if its input buffer is size 0. Thanks to Gary Gregory. -o IO-677: FileSystem.getCurrent() does not return the correct enum. Thanks to Gary Gregory. -o IO-679: input.AbstractCharacterFilterReader passes count of chars read #132. Thanks to proneel. -o IO-683: CircularBufferInputStream.read() fails to convert byte to unsigned int -o Fix SpotBugs issues in org.apache.commons.io.FileUtils. Thanks to Gary Gregory. -o IO-672: Copying a File sets last modified date to 01 January 1970. -o IO-676: Prevent NullPointerException in ReversedLinesFileReader constructors #117. Thanks to Michael Ernst, Gary Gregory. - -Changes: -o Replace FindBugs with SpotBugs. Thanks to Gary Gregory. -o maven-checkstyle-plugin 3.1.0 -> 3.1.1. Thanks to Gary Gregory. -o Update tests from org.apache.commons:commons-lang3 3.10 to 3.11. Thanks to Gary Gregory. -o Update commons-parent from 50 to 51 #129. Thanks to Gary Gregory. -o Update actions/checkout from v1 to v2.3.1 #126. Thanks to Gary Gregory. -o Update junit-pioneer from 0.6.0 to 0.8.0, #127, #135. Thanks to Gary Gregory. -o Update mockito-core from 3.3.3 to 3.5.9 #128, #133, #145, #149, #151. Thanks to Gary Gregory. -o Update spotbugs from 4.0.6 to 4.1.1 #134. Thanks to Dependabot. -o Update junit-pioneer from 0.8.0 to 0.9.0 #138. Thanks to Dependabot. -o Update actions/checkout from v2.3.1 to v2.3.2 #140. Thanks to Dependabot. -o Update actions/setup-java from v1.4.0 to v1.4.2 #141, #148. Thanks to Dependabot. - -Compatibility with 2.7: -Binary compatible: Yes. -Source compatible: Yes. -Semantic compatible: Yes. - -Commons IO 2.7 requires Java 8. -Commons IO 2.6 requires Java 7. -Commons IO 2.5 requires Java 6. -Commons IO 2.4 requires Java 6. -Commons IO 2.3 requires Java 6. -Commons IO 2.2 requires Java 5. -Commons IO 1.4 requires Java 1.3. - -Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html - -For complete information on Apache Commons IO, including instructions on how to submit bug reports, -patches, or suggestions for improvement, see the Apache Commons IO website: - -https://commons.apache.org/proper/commons-io/ - -Download page: https://commons.apache.org/proper/commons-io/download_io.cgi - -Have fun! --Apache Commons Team - -============================================================================== - -Apache Commons IO -Version 2.7 -Release Notes - -INTRODUCTION: - -Commons IO is a package of Java utility classes like java.io. -Classes in this package are considered to be so standard and of such high -reuse as to justify existence in java.io. - -The Apache Commons IO library contains utility classes, stream implementations, file filters, -file comparators, endian transformation classes, and much more. - -============================================================================== -Apache Commons IO Version 2.7 -============================================================================== -Java 8 required. - -Changes in this version include: - -New features: -o Adding the CircularBufferInputStream, and the PeekableInputStream. -o IO-553: Add org.apache.commons.io.FilenameUtils.isIllegalWindowsFileName(char). -o IO-577: Add readers to filter out given characters: CharacterSetFilterReader and CharacterFilterReader. Thanks to Gary Gregory. -o IO-594: Add IOUtils copy methods with java.lang.Appendable as the target. Thanks to Gary Gregory. -o IO-605: Add class CanExecuteFileFilter. Thanks to Gary Gregory. -o IO-578: Support java.nio.Path and non-default file systems for ReversedLinesFileReader (#62). Thanks to Mark Chesney. -o IO-608: Add a convenience NullPrintStream. Thanks to Gary Gregory. -o IO-612: Add class TeeReader. Thanks to Rob Spoor, Gary Gregory. -o IO-613: Add classes ClosedReader and CloseShieldReader. #84. Thanks to Rob Spoor, Gary Gregory. -o IO-614: Add classes TaggedWriter, ClosedWriter and BrokenWriter. #86. Thanks to Rob Spoor. -o IO-615: Add classes TeeWriter, FilterCollectionWriter, ProxyCollectionWriter, IOExceptionList, IOIndexedException. Thanks to Gary Gregory, Rob Spoor. -o IO-616: Add class AppendableWriter. #87. Thanks to Rob Spoor. -o IO-617: Add class CloseShieldWriter. #83. Thanks to Rob Spoor, Gary Gregory. -o IO-618: Add classes Added TaggedReader, ClosedReader and BrokenReader. #85. Thanks to Rob Spoor. -o IO-619: Support sub sequences in CharSequenceReader. #91. Thanks to Rob Spoor. -o IO-631: Add a CountingFileVisitor (as the basis for a forthcoming DeletingFileVisitor). Thanks to Gary Gregory. -o IO-632: Add PathUtils for operations on NIO Path. Thanks to Gary Gregory. -o IO-633: Add DeletingFileVisitor. Thanks to Gary Gregory. -o IO-635: Add org.apache.commons.io.IOUtils.close(Closeable). Thanks to Gary Gregory. -o IO-636: Add and reuse org.apache.commons.io.IOUtils.closeQuitely(Closeable, Consumer<IOException>). - Add and reuse org.apache.commons.io.IOUtils.close(Closeable, IOConsumer<IOException>). Thanks to Gary Gregory. -o IO-645: Add org.apache.commons.io.file.PathUtils.fileContentEquals(Path, Path, OpenOption...). Thanks to Gary Gregory. -o IO-458: Add a SequenceReader similar to java.io.SequenceInputStream. Thanks to Gary Gregory, Joshua Gitlin. -o IO-648: Implement directory content equality. 100#. Thanks to Gary Gregory. -o IO-648: Refactor ByteArrayOutputStream into synchronized and unsynchronized versions #108. Thanks to Adam Retter, Alex Herbert, Gary Gregory. -o IO-662: Refactor ByteArrayOutputStream into synchronized and unsynchronized versions #108. Thanks to Adam Retter, Gary Gregory. - -Fixed Bugs: -o IO-589: Some tests fail if the base path contains a space. -o IO-582: Make methods in ObservableInputStream.Obsever public. Thanks to Bruno Palos. -o IO-535: Thread bug in FileAlterationMonitor.stop(int). Thanks to Svetlin Zarev, Anthony Raymond. -o IO-557: Perform locale independent upper case conversions. Thanks to luccioman. -o IO-570: Missing Javadoc in FilenameUtils causing Travis-CI build to fail. Thanks to Pranet Verma. -o IO-571: Remove redundant isDirectory() check in org.apache.commons.io.FileUtils.listFilesAndDirs(File, IOFileFilter, IOFileFilter). Thanks to pranet. -o IO-559: FilenameUtils.normalize now verifies hostname syntax in UNC path. -o IO-554: FileUtils.copyToFile(InputStream source, File destination) should not close input stream. Thanks to Michele Mariotti. -o IO-604: FileUtils.doCopyFile(File, File, boolean) can throw ClosedByInterruptException. Thanks to Gary Gregory. -o IO-625: Corrected misleading exception message for FileUtils.copyDirectoryToDirectory. Thanks to Mikko Maunu. -o IO-626: A mistake in the FilenameUtils.concat()'s Javadoc about an absolute path. Thanks to Yuji Konishi. -o IO-640: NPE in org.apache.commons.io.IOUtils.contentEquals(InputStream, InputStream) when only one input is null. Thanks to Gary Gregory. -o IO-641: NPE in org.apache.commons.io.IOUtils.contentEquals(Reader, Reader) when only one input is null. Thanks to Gary Gregory. -o IO-643: NPE in org.apache.commons.io.IOUtils.contentEqualsIgnoreEOL(Reader, Reader) when only one input is null. Thanks to Gary Gregory. -o IO-644: NPE in org.apache.commons.io.FileUtils.contentEqualsIgnoreEOL(File, File) when only one input is null. Thanks to Gary Gregory. -o IO-664: org.apache.commons.io.FileUtils.copyURLToFile(*) open but do not close streams. Thanks to Gary Gregory. - -Changes: -o IO-572: Refactor duplicate code in org.apache.commons.io.FileUtils. Thanks to Pranet Verma. -o IO-580: Update org.apache.commons.io.FilenameUtils.isExtension(String, String[]) to use var args. -o IO-701: Make array declaration in ThresholdingOutputStream consistent with other array declarations in the library #77. Thanks to Raymond Tan. -o IO-607: Update from Java 7 to Java 8. Thanks to Gary Gregory. -o IO-610: Remove throws IOException in method isSymlink() #80. Thanks to Sebastian. -o IO-628: Migration to JUnit Jupiter #97. Thanks to Allon Mureinik. -o IO-630: Deprecate org.apache.commons.io.output.NullOutputStream.NullOutputStream() in favor of org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM. Thanks to Gary Gregory. -o IO-629: FileUtils#forceDelete should use Files#delete rather than File#delete so exception messages includes reason for failure. Thanks to Ian Springer, Ian Springer, Gary Gregory. -o IO-634: Make getCause synchronized and use a Deque instead of a Stack #64. Thanks to V�clav Haisman, Bruno P. Kinoshita, Gary Gregory. -o Update tests from Apache Commons Lang 3.9 to 3.10. Thanks to Gary Gregory. -o Update tests org.junit-pioneer:junit-pioneer 0.3.0 -> 0.6.0. Thanks to Gary Gregory. -o Update tests org.junit.jupiter:junit-jupiter 5.5.2 -> 5.6.2. Thanks to Gary Gregory. -o Update tests org.mockito:mockito-core 3.0.0 -> 3.3.3. Thanks to Gary Gregory. -o IO-666: Normalize internal buffers to 8192 bytes. Thanks to Gary Gregory. -o IO-665: Ensure that passing a null InputStream results in NPE with tests #112. Thanks to Otto Fowler, Gary Gregory. -o commons.jacoco.version 0.8.4 -> 0.8.5. Thanks to Gary Gregory. -o com.github.siom79.japicmp:japicmp-maven-plugin 0.14.1 -> 0.14.3. Thanks to Gary Gregory. -o IO-667: Add functional interfaces IOFunction and IOSupplier #110. Thanks to Adam Retter, Gary Gregory. -o Support sub sequences in CharSequenceReader #91. Thanks to Rob Spoor, Gary Gregory. -o Remove deprecated sudo setting. #113. Thanks to dengliming. - -Compatibility with 2.6: -Binary compatible: Yes. -Source compatible: Yes. -Semantic compatible: Yes. - -Commons IO 2.7 requires Java 8. -Commons IO 2.6 requires Java 7. -Commons IO 2.5 requires Java 6. -Commons IO 2.4 requires Java 6. -Commons IO 2.3 requires Java 6. -Commons IO 2.2 requires Java 5. -Commons IO 1.4 requires Java 1.3. - -Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html - -For complete information on Apache Commons IO, including instructions on how to submit bug reports, -patches, or suggestions for improvement, see the Apache Commons IO website: - -https://commons.apache.org/proper/commons-io/ - -Download page: https://commons.apache.org/proper/commons-io/download_io.cgi - -Have fun! --Apache Commons Team - -============================================================================== -Apache Commons IO Version 2.6 -============================================================================== - -INTRODUCTION: - -Apache Commons IO is a package of Java utility classes like java.io. -Classes in this package are considered to be so standard and of such high -reuse as to justify existence in java.io. - -The Apache Commons IO library contains utility classes, stream implementations, -file filters, file comparators, endian transformation classes, and much more. - -Apache Commons IO 2.6 requires at least Java 7 to build and run. - - -DEPRECATIONS -============ - -All closeQuietly overloads in org.apache.commons.io.IOUtils have been -deprecated. Use the try-with-resources statement or handle suppressed -exceptions manually. - -The class org.apache.commons.io.FileSystemUtils has been deprecated. -Use equivalent methods in java.nio.file.FileStore instead, e.g. -Files.getFileStore(Paths.get("/home")).getUsableSpace() or iterate over -FileSystems.getDefault().getFileStores(). - - -COMPATIBILITY WITH JAVA 9 -================== - -The MANIFEST.MF now contains an additional entry: - - Automatic-Module-Name: org.apache.commons.io - -This should make it possible to use Commons IO 2.6 as a module in the Java 9 -module system. For more information see the corresponding issue: - - https://issues.apache.org/jira/browse/IO-551 - -Building Commons IO 2.6 should work out of the box with the latest Java 9 -release. Please report any Java 9 related issues at: - - https://issues.apache.org/jira/browse/IO - - -NEW FEATURES -============ - -o IO-551: Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility. -o IO-367: Add convenience methods for copyToDirectory. Thanks to James Sawle. -o IO-493: Add infinite circular input stream. Thanks to Piotr Turski. -o IO-507: Add a ByteOrderUtils class. -o IO-518: Add ObservableInputStream. -o IO-519: Add MessageDigestCalculatingInputStream. -o IO-513: Add convenience methods for reading class path resources. - Thanks to Behrang Saeedzadeh. - -FIXED BUGS -========== - -o IO-546: ClosedOutputStream#flush should throw. Thanks to Tomas Celaya. -o IO-550: Documentation issue, fix 404 Javadoc issues in the description page. - Thanks to Jimi Adrian. -o IO-442: Javadoc contradictory for FileFilterUtils.ageFileFilter(cutoff) and - the filter it constructs: AgeFileFilter(cutoff). - Thanks to Simon Robinson. -o IO-534: FileUtilTestCase.testForceDeleteDir() should not delete testDirectory - parent. -o IO-528: Fix Tailer.run race condition runaway logging. Thanks to Dave Moten. -o IO-483: getPrefixLength return -1 if Unix file contains colon. - Thanks to Marko Vasic. -o IO-520: FileUtilsTestCase#testContentEqualsIgnoreEOL fails on Windows. -o IO-516: .gitattributes not correctly applied. Thanks to Jason Pyeron. -o IO-515: Allow Specifying Initial Buffer Size of DeferredFileOutputStream. - Thanks to Brett Lounsbury, Gary Gregory. -o IO-512: ThresholdingOutputStream.thresholdReached() results in - FileNotFoundException. Thanks to Ralf Hauser. -o IO-511: After a few unit tests, a few newly created directories not cleaned - completely. Thanks to Ahmet Celik. -o IO-502: Exceptions are suppressed incorrectly when copying files. - Thanks to Christian Schulte. -o IO-503: Update platform requirement to Java 7. -o IO-537: BOMInputStream shouldn't sort array of BOMs in-place. - Thanks to Borys Zibrov. - -CHANGES -======= - -o IO-553: Make code style of hasBOM() consistent with getBOMCharsetName(). - Thanks to Michael Ernst. -o IO-542: FileUtils#readFileToByteArray: optimize reading of files with known - size. Thanks to Ilmars Poikans. -o IO-547: Throw a IllegalArgumentException instead of NullPointerException in - FileSystemUtils.freeSpaceWindows(). Thanks to Nikhil Shinde, - Michael Ernst, Gary Greory. -o IO-506: Deprecate methods FileSystemUtils.freeSpaceKb(). - Thanks to Christian Schulte. -o IO-505: Make LineIterator implement Closeable to support try-with-resources - statements. Thanks to Christian Schulte. -o IO-504: Deprecated of all IOUtils.closeQuietly() methods and use - try-with-resources internally. Thanks to Christian Schulte. - -REMOVED -======= - -o IO-514: Remove org.apache.commons.io.Java7Support. - -COMPATIBILITY WITH OLDER VERSIONS -================================= - -Compatibility with 2.5: -Binary compatible: Yes. -Source compatible: Yes. -Semantic compatible: Yes. - -Compatibility with 2.6 and 1.4: -Binary compatible: Yes. -Source compatible: No, see the rare case in - https://issues.apache.org/jira/browse/IO-318. -Semantic compatible: No, see the rare case in - https://issues.apache.org/jira/browse/IO-318. - -Commons IO 2.6 requires Java 7 or later. -Commons IO 2.5 requires Java 6 or later. -Commons IO 2.4 requires Java 6 or later. -Commons IO 2.3 requires Java 6 or later. -Commons IO 2.2 requires Java 5 or later. -Commons IO 1.4 requires Java 1.3 or later. - -============================================================================== -Apache Commons IO Version 2.5 -============================================================================== -New features and bug fixes. - -Changes in this version include: - -New features: -o IO-487: Add ValidatingObjectInputStream for controlled deserialization -o IO-471: Support for additional encodings in ReversedLinesFileReader Thanks to Leandro Reis. -o IO-425: Setter method for threshold on ThresholdingOutputStream Thanks to Craig Swank. -o IO-406: Introduce new class AppendableOutputStream Thanks to Niall Pemberton. -o IO-459: Add WindowsLineEndingInputStream and UnixLineEndingInputStream. Thanks to Kristian Rosenvold. -o IO-457: Add a BoundedReader, a wrapper that can be used to constrain access - to an underlying stream when used with mark/reset - - to avoid overflowing the mark limit of the underlying buffer. Thanks to Kristian Rosenvold. -o IO-426: Add API IOUtils.closeQuietly(Closeable...) -o IO-410: Readfully() That Returns A Byte Array Thanks to Beluga Behr. -o IO-395: Overload IOUtils buffer methods to accept buffer size Thanks to Beluga Behr. -o IO-382: Chunked IO for large arrays. - Added writeChunked(byte[], OutputStream) and writeChunked(char[] Writer) - Added ChunkedOutputStream, ChunkedWriter -o IO-233: Add Methods for Buffering Streams/Writers To IOUtils - Added overloaded buffer() methods - see also IO-330 -o IO-330: IOUtils#toBufferedOutputStream/toBufferedWriter to conditionally wrap the output - Added overloaded buffer() methods - see also IO-233 -o IO-381: Add FileUtils.copyInputStreamToFile API with option to leave the source open. - See copyInputStreamToFile(final InputStream source, final File destination, boolean closeSource) -o IO-379: CharSequenceInputStream - add tests for available() - Fix code so it really does reflect a minimum available. -o IO-346: Add ByteArrayOutputStream.toInputStream() -o IO-341: A constant for holding the BOM character (U+FEFF) -o IO-361: Add API FileUtils.forceMkdirsParent(). -o IO-360: Add API Charsets.requiredCharsets(). -o IO-359: Add IOUtils.skip and skipFully(ReadableByteChannel, long). Thanks to yukoba. -o IO-358: Add IOUtils.read and readFully(ReadableByteChannel, ByteBuffer buffer). Thanks to yukoba. -o IO-353: Add API IOUtils.copy(InputStream, OutputStream, int) Thanks to ggregory. -o IO-349: Add API with array offset and length argument to FileUtils.writeByteArrayToFile. Thanks to scop. -o IO-348: Missing information in IllegalArgumentException thrown by org.apache.commons.io.FileUtils#validateListFilesParameters. Thanks to plcstpierre. -o IO-345: Supply a hook method allowing Tailer actively determining stop condition. Thanks to mkresse. -o IO-437: Make IOUtils.EOF public and reuse it in various classes. - -Fixed Bugs: -o IO-446: adds an endOfFileReached method to the TailerListener Thanks to Jeffrey Barrus. -o IO-484: FilenameUtils should handle embedded null bytes Thanks to Philippe Arteau. -o IO-481: Changed/Corrected algorithm for waitFor -o IO-428: BOMInputStream.skip returns wrong count if stream contains no BOM Thanks to Stefan Gmeiner. -o IO-488: FileUtils.waitFor(...) swallows thread interrupted status Thanks to Bj�rn Buchner. -o IO-452: Support for symlinks with missing target. Added support for JDK7 symlink features when present Thanks to David Standish. -o IO-453: Regression in FileUtils.readFileToString from 2.0.1 Thanks to Steven Christou. -o IO-451: ant test fails - resources missing from test classpath Thanks to David Standish. -o IO-435: Document that FileUtils.deleteDirectory, directoryContains and cleanDirectory - may throw an IllegalArgumentException in case the passed directory does not - exist or is not a directory. Thanks to Dominik Stadler. -o IO-424: Javadoc fixes, mostly to appease 1.8.0 Thanks to Ville Skytt�. -o IO-389: FileUtils.sizeOfDirectory can throw IllegalArgumentException Thanks to Austin Doupnik. -o IO-390: FileUtils.sizeOfDirectoryAsBigInteger can overflow. - Ensure that recursive calls all use BigInteger -o IO-385: FileUtils.doCopyFile can potentially loop for ever - Exit loop if no data to copy -o IO-383: FileUtils.doCopyFile caches the file size; needs to be documented - Added Javadoc; show file lengths in exception message -o IO-380: FileUtils.copyInputStreamToFile should document it closes the input source Thanks to claudio_ch. -o IO-279: Tailer erroneously considers file as new. - Fix to use file.lastModified() rather than System.currentTimeMillis() -o IO-356: CharSequenceInputStream#reset() behaves incorrectly in case when buffer size is not dividable by data size. - Fix code so skip relates to the encoded bytes; reset now re-encodes the data up to the point of the mark -o IO-368: ClassLoaderObjectInputStream does not handle primitive typed members -o IO-314: Deprecate all methods that use the default encoding -o IO-338: When a file is rotated, finish reading previous file prior to starting new one -o IO-354: Commons IO Tailer does not respect UTF-8 Charset. -o IO-323: What should happen in FileUtils.sizeOf[Directory] when an overflow takes place? - Added Javadoc. -o IO-372: FileUtils.moveDirectory can produce misleading error message on failiure -o IO-362: IOUtils.contentEquals* methods returns false if input1 == input2, should return true. Thanks to mmadson, ggregory. -o IO-357: [Tailer] InterruptedException while the thread is sleeping is silently ignored Thanks to mortenh. -o IO-352: Spelling fixes. Thanks to scop. -o IO-436: Improper Javadoc comment for FilenameUtils.indexOfExtension. Thanks to christoph.schneegans. - -Changes: -o IO-433: Converted all testcases to JUnit 4 -o IO-466: Added testcase to show this was fixed with IO-423 -o IO-479: Correct exception message in FileUtils.getFile(File, String...) Thanks to Zhouce Chen. -o IO-465: Update to JUnit 4.12 Thanks to based2. -o IO-462: IOExceptionWithCause no longer needed -o IO-422: Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets -o IO-239: Convert IOCase to a Java 1.5+ Enumeration - [N.B. this is binary compatible] -o IO-328: getPrefixLength returns null if filename has leading slashes - Javadoc: add examples to show correct behavior; add unit tests -o IO-299: FileUtils.listFilesAndDirs includes original dir in results even when it doesn't match filter - Javadoc: clarify that original dir is included in the results -o IO-375: FilenameUtils.splitOnTokens(String text) check for '**' could be simplified -o IO-374: WildcardFileFilter ctors should not use null to mean IOCase.SENSITIVE when delegating to other ctors - -Compatibility with 2.4: -Binary compatible: Yes. -Source compatible: Yes. -Semantic compatible: Yes. - -Compatibility with 2.2 and 1.4: -Binary compatible: Yes. -Source compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. -Semantic compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. - -Commons IO 2.5 requires Java 6 or later. -Commons IO 2.4 requires Java 6 or later. -Commons IO 2.3 requires Java 6 or later. -Commons IO 2.2 requires Java 5 or later. -Commons IO 1.4 requires Java 1.3 or later. - -============================================================================== -Apache Commons IO Version 2.4 -============================================================================== - -Changes in this version include: - -New features: -o IO-269: Tailer locks file from deletion/rename on Windows. Thanks to -sebb. -o IO-333: Export OSGi packages at version 1.x in addition to 2.x. Thanks -to fmeschbe. -o IO-320: Add XmlStreamReader support for UTF-32. Thanks to ggregory. -o IO-331: BOMInputStream wrongly detects UTF-32LE_BOM files as -UTF-16LE_BOM files in method getBOM(). Thanks to ggregory. -o IO-327: Add byteCountToDisplaySize(BigInteger). Thanks to ggregory. -o IO-326: Add new FileUtils.sizeOf[Directory] APIs to return BigInteger. -Thanks to ggregory. -o IO-325: Add IOUtils.toByteArray methods to work with URL and URI. Thanks -to raviprak. -o IO-324: Add missing Charset sister APIs to method that take a String -charset name. Thanks to raviprak. - -Fixed Bugs: -o IO-336: Yottabyte (YB) incorrectly defined in FileUtils. Thanks to -rleavelle. -o IO-279: Tailer erroneously considers file as new. Thanks to Sergio -Bossa, Chris Baron. -o IO-335: Tailer#readLines - incorrect CR handling. -o IO-334: FileUtils.toURLs throws NPE for null parameter; document the -behavior. -o IO-332: Improve tailer's reading performance. Thanks to liangly. -o IO-279: Improve Tailer performance with buffered reads (see IO-332). -o IO-329: FileUtils.writeLines uses unbuffered IO. Thanks to tivv. -o IO-319: FileUtils.sizeOfDirectory follows symbolic links. Thanks to -raviprak. - - -Compatibility with 2.3: -Binary compatible: Yes. -Source compatible: Yes. -Semantic compatible: Yes. - -Compatibility with 2.2 and 1.4: -Binary compatible: Yes. -Source compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. -Semantic compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. - -Commons IO 2.4 requires Java 6 or later. -Commons IO 2.3 requires Java 6 or later. -Commons IO 2.2 requires Java 5 or later. -Commons IO 1.4 requires Java 1.3 or later. - -============================================================================== -Apache Commons IO Version 2.3 -============================================================================== - -Changes in this version include: - -New features: -o IO-322: Add and use class Charsets. Thanks to ggregory. -o IO-321: ByteOrderMark UTF_32LE is incorrect. Thanks to ggregory. -o IO-318: Add Charset sister APIs to method that take a String charset name. Thanks to ggregory. - -Compatibility with 2.2 and 1.4: -Binary compatible: Yes. -Source compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. -Semantic compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. - -Commons IO 2.3 requires Java 6 or later. -Commons IO 2.2 requires Java 5 or later. -Commons IO 1.4 requires Java 1.3 or later. - -============================================================================== -Apache Commons IO Version 2.2 -============================================================================== - -Changes in this version include: - -New features: -o Add IOUTils.toBufferedReader(Reader) Issue: IO-313. Thanks to ggregory. -o Allow applications to provide buffer (or size) for copyLarge methods. Issue: IO-308. Thanks to Manoj Mokashi. -o New copyLarge() method in IOUtils that takes additional offset, length arguments Issue: IO-305. Thanks to Manoj Mokashi. -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. - -Fixed Bugs: -o IOUtils.read(InputStream/Reader) ignores the offset parameter Issue: IO-311. Thanks to Robert Muir. -o CharSequenceInputStream(CharSequence s, Charset charset, int bufferSize) ignores bufferSize Issue: IO-312. -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. - -Changes: -o ReaderInputStream optimization: more efficient reading of small chunks of data Issue: IO-296. Thanks to Oleg Kalnichevski. - - -Compatibility with 2.1 and 1.4: -Binary compatible: Yes -Source compatible: Yes -Semantic compatible: Yes. Check the bug fixes section for semantic bug fixes - -Commons IO 2.2 requires a minimum of Java 5. -Commons IO 1.4 requires a minimum of Java 1.3. - -============================================================================== -Apache Commons IO 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. - -============================================================================== -Apache Commons IO Package 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 Java 5 - (Commons IO 1.4 had a minimum of Java 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 - -============================================================================== -Apache Commons IO Package 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 Java 5 - (Commons IO 1.4 had a minimum of Java 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 Java 1.3 to Java 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 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 - -============================================================================== -Apache Commons IO 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 Java 4 features -(CharSequenceReader, FileWriterWithEncoding, IOExceptionWithCause and RegexFileFilter). -It has been built with the JDK source and target options set to Java 1.3 and, except for -those implementations, can be used with Java 1.3 (see 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. - -============================================================================== -Apache Commons IO 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] - -============================================================================== -Apache Commons IO 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] - -============================================================================== -Apache Commons IO 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 behavior, 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 Java 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 - -============================================================================== -Apache Commons IO 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] - -============================================================================== -Apache Commons IO 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 unnecessary 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 behavior 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: -https://commons.apache.org/io/ - -Please direct all bug reports to JIRA -https://issues.apache.org/jira/browse/IO - -Or subscribe to the commons-user mailing list (prefix emails by [io]) -https://commons.apache.org/mail-lists.html - -The Commons-IO Team