1*0c4d7b72SSadaf EbrahimiApache Commons IO 2*0c4d7b72SSadaf EbrahimiVersion 2.15.0 3*0c4d7b72SSadaf EbrahimiRelease Notes 4*0c4d7b72SSadaf Ebrahimi 5*0c4d7b72SSadaf EbrahimiINTRODUCTION: 6*0c4d7b72SSadaf Ebrahimi 7*0c4d7b72SSadaf EbrahimiCommons IO is a package of Java utility classes like java.io. 8*0c4d7b72SSadaf EbrahimiClasses in this package are considered to be so standard and of such high 9*0c4d7b72SSadaf Ebrahimireuse as to justify existence in java.io. 10*0c4d7b72SSadaf Ebrahimi 11*0c4d7b72SSadaf EbrahimiThe Apache Commons IO library contains utility classes, stream implementations, file filters, 12*0c4d7b72SSadaf Ebrahimifile comparators, endian transformation classes, and much more. 13*0c4d7b72SSadaf Ebrahimi 14*0c4d7b72SSadaf EbrahimiJava 8 is required. 15*0c4d7b72SSadaf Ebrahimi 16*0c4d7b72SSadaf EbrahimiChanges in this version include: 17*0c4d7b72SSadaf Ebrahimi 18*0c4d7b72SSadaf EbrahimiNew features: 19*0c4d7b72SSadaf Ebrahimio Add org.apache.commons.io.channels.FileChannels. Thanks to Gary Gregory. 20*0c4d7b72SSadaf Ebrahimio Add RandomAccessFiles#contentEquals(RandomAccessFile, RandomAccessFile). Thanks to Gary Gregory. 21*0c4d7b72SSadaf Ebrahimio Add RandomAccessFiles#reset(RandomAccessFile). Thanks to Gary Gregory. 22*0c4d7b72SSadaf Ebrahimio Add PathUtilsContentEqualsBenchmark. Thanks to Gary Gregory. 23*0c4d7b72SSadaf Ebrahimio Add org.apache.commons.io.StreamIterator. Thanks to Gary Gregory. 24*0c4d7b72SSadaf Ebrahimio Add MessageDigestInputStream and deprecate MessageDigestCalculatingInputStream. Thanks to Gary Gregory. 25*0c4d7b72SSadaf Ebrahimi 26*0c4d7b72SSadaf EbrahimiFixed Bugs: 27*0c4d7b72SSadaf Ebrahimio IO-810: XmlStreamReader encoding match RE is too strict. Thanks to Laurence Gonsalves. 28*0c4d7b72SSadaf Ebrahimio IO-810: Javadoc in FileUtils does not reflect code for thrown exceptions. Thanks to Gregor Dschung, Gary Gregory. 29*0c4d7b72SSadaf Ebrahimio IO-812: Javadoc should mention closing Streams based on file resources. Thanks to Adam Rauch, Gary Gregory. 30*0c4d7b72SSadaf Ebrahimio IO-811: In tests, Files.walk() direct and indirect callers fail to close the returned Stream. Thanks to Adam Rauch, Gary Gregory. 31*0c4d7b72SSadaf Ebrahimio IO-811: FileUtils.listFiles(File, String[], boolean) fails to close its internal Stream. Thanks to Adam Rauch, Gary Gregory. 32*0c4d7b72SSadaf Ebrahimio IO-811: FileUtils.iterateFiles(File, String[], boolean) fails to close its internal Stream. Thanks to Adam Rauch, Gary Gregory. 33*0c4d7b72SSadaf Ebrahimio IO-811: StreamIterator fails to close its internal Stream. Thanks to Adam Rauch, Gary Gregory. 34*0c4d7b72SSadaf Ebrahimio IO-814: Don't throw UncheckedIOException #491. Thanks to Elliotte Rusty Harold, Gary Gregory. 35*0c4d7b72SSadaf Ebrahimio IO-414: Don't write a BOM on every (or any) line #492. Thanks to Elliotte Rusty Harold, Gary Gregory. 36*0c4d7b72SSadaf Ebrahimio IO-814: RandomAccessFileMode.create(Path) provides a better NullPointerException message. Thanks to Gary Gregory. 37*0c4d7b72SSadaf Ebrahimio Improve performance of PathUtils.fileContentEquals(Path, Path, LinkOption[], OpenOption[]) by about 60%, see PathUtilsContentEqualsBenchmark. Thanks to Gary Gregory. 38*0c4d7b72SSadaf Ebrahimio Improve performance of PathUtils.fileContentEquals(Path, Path) by about 60%, see PathUtilsContentEqualsBenchmark. Thanks to Gary Gregory. 39*0c4d7b72SSadaf Ebrahimio Improve performance of FileUtils.contentEquals(File, File) by about 60%, see PathUtilsContentEqualsBenchmark. Thanks to Gary Gregory. 40*0c4d7b72SSadaf Ebrahimio Remove unused test code #494. Thanks to Elliotte Rusty Harold. 41*0c4d7b72SSadaf Ebrahimio [Javadoc] IOUtils#contentEquals does not throw NullPointerException #496. Thanks to sebbASF. 42*0c4d7b72SSadaf Ebrahimio Fix CodeQL warnings in UnsynchronizedBufferedInputStream: Implicit narrowing conversion in compound assignment. Thanks to Gary Gregory. 43*0c4d7b72SSadaf Ebrahimio MessageDigestCalculatingInputStream.MessageDigestMaintainingObserver.MessageDigestMaintainingObserver(MessageDigest) now throws a NullPointerException 44*0c4d7b72SSadaf Ebrahimi if the MessageDigest is null. Thanks to Gary Gregory. 45*0c4d7b72SSadaf Ebrahimio MessageDigestCalculatingInputStream.MessageDigestCalculatingInputStream(InputStream, MessageDigest) now throws a NullPointerException 46*0c4d7b72SSadaf Ebrahimi if the MessageDigest is null. Thanks to Gary Gregory. 47*0c4d7b72SSadaf Ebrahimio IO-816: UnsynchronizedBufferedInputStream.read(byte[], int, int) does not use buffer. Thanks to Andreas Loth, Gary Gregory. 48*0c4d7b72SSadaf Ebrahimi 49*0c4d7b72SSadaf EbrahimiChanges: 50*0c4d7b72SSadaf Ebrahimio Bump org.apache.commons:commons-parent from 62 to 64. Thanks to Gary Gregory. 51*0c4d7b72SSadaf Ebrahimi 52*0c4d7b72SSadaf EbrahimiCompatibility with 2.6: 53*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 54*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 55*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 56*0c4d7b72SSadaf Ebrahimi 57*0c4d7b72SSadaf EbrahimiCommons IO 2.9.0 requires Java 8. 58*0c4d7b72SSadaf EbrahimiCommons IO 2.8.0 requires Java 8. 59*0c4d7b72SSadaf EbrahimiCommons IO 2.7 requires Java 8. 60*0c4d7b72SSadaf EbrahimiCommons IO 2.6 requires Java 7. 61*0c4d7b72SSadaf EbrahimiCommons IO 2.5 requires Java 6. 62*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6. 63*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6. 64*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5. 65*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3. 66*0c4d7b72SSadaf Ebrahimi 67*0c4d7b72SSadaf EbrahimiHistorical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html 68*0c4d7b72SSadaf Ebrahimi 69*0c4d7b72SSadaf EbrahimiFor complete information on Apache Commons IO, including instructions on how to submit bug reports, 70*0c4d7b72SSadaf Ebrahimipatches, or suggestions for improvement, see the Apache Commons IO website: 71*0c4d7b72SSadaf Ebrahimi 72*0c4d7b72SSadaf Ebrahimihttps://commons.apache.org/proper/commons-io/ 73*0c4d7b72SSadaf Ebrahimi 74*0c4d7b72SSadaf EbrahimiDownload page: https://commons.apache.org/proper/commons-io/download_io.cgi 75*0c4d7b72SSadaf Ebrahimi 76*0c4d7b72SSadaf EbrahimiHave fun! 77*0c4d7b72SSadaf Ebrahimi-Apache Commons Team 78*0c4d7b72SSadaf Ebrahimi 79*0c4d7b72SSadaf Ebrahimi============================================================================== 80*0c4d7b72SSadaf Ebrahimi 81*0c4d7b72SSadaf EbrahimiApache Commons IO 82*0c4d7b72SSadaf EbrahimiVersion 2.14.0 83*0c4d7b72SSadaf EbrahimiRelease Notes 84*0c4d7b72SSadaf Ebrahimi 85*0c4d7b72SSadaf EbrahimiINTRODUCTION: 86*0c4d7b72SSadaf Ebrahimi 87*0c4d7b72SSadaf EbrahimiCommons IO is a package of Java utility classes like java.io. 88*0c4d7b72SSadaf EbrahimiClasses in this package are considered to be so standard and of such high 89*0c4d7b72SSadaf Ebrahimireuse as to justify existence in java.io. 90*0c4d7b72SSadaf Ebrahimi 91*0c4d7b72SSadaf EbrahimiThe Apache Commons IO library contains utility classes, stream implementations, file filters, 92*0c4d7b72SSadaf Ebrahimifile comparators, endian transformation classes, and much more. 93*0c4d7b72SSadaf Ebrahimi 94*0c4d7b72SSadaf EbrahimiJava 8 required. 95*0c4d7b72SSadaf Ebrahimi 96*0c4d7b72SSadaf EbrahimiChanges in this version include: 97*0c4d7b72SSadaf Ebrahimi 98*0c4d7b72SSadaf EbrahimiNew features: 99*0c4d7b72SSadaf Ebrahimio Add DeferredFileOutputStream.getPath(). Thanks to Gary Gregory. 100*0c4d7b72SSadaf Ebrahimio Add FileCleaningTracker.track(Path, Object[, FileDeleteStrategy]). Thanks to Gary Gregory. 101*0c4d7b72SSadaf Ebrahimio Add IOUtils.skip[Fully](InputStream, long, Supplier<byte[]>). Thanks to Gary Gregory. 102*0c4d7b72SSadaf Ebrahimio Add FilesUncheck.find(Path, int, BiPredicate%lt;Path, BasicFileAttributes>, FileVisitOption...) Thanks to Gary Gregory. 103*0c4d7b72SSadaf Ebrahimio Add IOIntSupplier. Thanks to Gary Gregory. 104*0c4d7b72SSadaf Ebrahimio Add IOLongSupplier. Thanks to Gary Gregory. 105*0c4d7b72SSadaf Ebrahimio Add Uncheck.getAsInt(IOIntSupplier [, Supplier<String>]). Thanks to Gary Gregory. 106*0c4d7b72SSadaf Ebrahimio Add Uncheck.getAsLong(IOLongSupplier [, Supplier<String>]). Thanks to Gary Gregory. 107*0c4d7b72SSadaf Ebrahimio Add Uncheck.run(IORunnable, Supplier<String>) Thanks to Gary Gregory. 108*0c4d7b72SSadaf Ebrahimio Add Uncheck.get(IOSupplier, Supplier<String>) Thanks to Gary Gregory. 109*0c4d7b72SSadaf Ebrahimio IOFileFilter now also extends java.nio.file.PathMatcher. Thanks to Gary Gregory. 110*0c4d7b72SSadaf Ebrahimio Add PathMatcherFileFilter to adapt java.nio.file.PathMatcher. Thanks to Gary Gregory. 111*0c4d7b72SSadaf Ebrahimio Add ThresholdingOutputStream.getOutputStream() and deprecate getStream(). Thanks to Gary Gregory. 112*0c4d7b72SSadaf Ebrahimio Add DeferredFileOutputStream.Builder.setOutputFile(Path). Thanks to Gary Gregory. 113*0c4d7b72SSadaf Ebrahimio Add DeferredFileOutputStream.Builder.setDirectory(Path). Thanks to Gary Gregory. 114*0c4d7b72SSadaf Ebrahimio Add AbstractStreamBuilder.setBufferSizeChecker(IntToIntFunction). Thanks to Gary Gregory. 115*0c4d7b72SSadaf Ebrahimio Add AbstractStreamBuilder.setBufferSizeMax(int). Thanks to Gary Gregory. 116*0c4d7b72SSadaf Ebrahimi 117*0c4d7b72SSadaf EbrahimiFixed Bugs: 118*0c4d7b72SSadaf Ebrahimio IO-799: ReaderInputStream.read() throws an exception instead of returning -1 when called again after returning -1. Thanks to Jeroen van der Vegt, Gary Gregory. 119*0c4d7b72SSadaf Ebrahimio IO-804: FileUtils.forceMkdirParent() Javadoc is incorrect. Thanks to Elliotte Rusty Harold, Gary Gregory. 120*0c4d7b72SSadaf Ebrahimio [StepSecurity] ci: Harden GitHub Actions #461. Thanks to step-security-bot, Gary Gregory. 121*0c4d7b72SSadaf Ebrahimio MagicNumberFileFilter.accept(Path, BasicFileAttributes) doesn't its byteOffset before reading. Thanks to Gary Gregory. 122*0c4d7b72SSadaf Ebrahimio Javadoc improvements. Thanks to Gary Gregory. 123*0c4d7b72SSadaf Ebrahimio Spelling #468. Thanks to Josh Soref, Gary Gregory. 124*0c4d7b72SSadaf Ebrahimio Use assertThrows #475. Thanks to Jakub Kupczyk. 125*0c4d7b72SSadaf Ebrahimi 126*0c4d7b72SSadaf EbrahimiChanges: 127*0c4d7b72SSadaf Ebrahimio Bump jimfs from 1.2 to 1.3.0 #465 (tests). Thanks to Dependabot. 128*0c4d7b72SSadaf Ebrahimio Bump commons-parent from 58 to 62. Thanks to Gary Gregory. 129*0c4d7b72SSadaf Ebrahimio Bump commons-lang3 from 3.12 to 3.13.0. Thanks to Gary Gregory. 130*0c4d7b72SSadaf Ebrahimi 131*0c4d7b72SSadaf EbrahimiCompatibility with 2.6: 132*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 133*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 134*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 135*0c4d7b72SSadaf Ebrahimi 136*0c4d7b72SSadaf EbrahimiCommons IO 2.9.0 requires Java 8. 137*0c4d7b72SSadaf EbrahimiCommons IO 2.8.0 requires Java 8. 138*0c4d7b72SSadaf EbrahimiCommons IO 2.7 requires Java 8. 139*0c4d7b72SSadaf EbrahimiCommons IO 2.6 requires Java 7. 140*0c4d7b72SSadaf EbrahimiCommons IO 2.5 requires Java 6. 141*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6. 142*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6. 143*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5. 144*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3. 145*0c4d7b72SSadaf Ebrahimi 146*0c4d7b72SSadaf EbrahimiHistorical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html 147*0c4d7b72SSadaf Ebrahimi 148*0c4d7b72SSadaf EbrahimiFor complete information on Apache Commons IO, including instructions on how to submit bug reports, 149*0c4d7b72SSadaf Ebrahimipatches, or suggestions for improvement, see the Apache Commons IO website: 150*0c4d7b72SSadaf Ebrahimi 151*0c4d7b72SSadaf Ebrahimihttps://commons.apache.org/proper/commons-io/ 152*0c4d7b72SSadaf Ebrahimi 153*0c4d7b72SSadaf EbrahimiDownload page: https://commons.apache.org/proper/commons-io/download_io.cgi 154*0c4d7b72SSadaf Ebrahimi 155*0c4d7b72SSadaf EbrahimiHave fun! 156*0c4d7b72SSadaf Ebrahimi-Apache Commons Team 157*0c4d7b72SSadaf Ebrahimi 158*0c4d7b72SSadaf Ebrahimi============================================================================== 159*0c4d7b72SSadaf Ebrahimi 160*0c4d7b72SSadaf EbrahimiApache Commons IO 161*0c4d7b72SSadaf EbrahimiVersion 2.13.0 162*0c4d7b72SSadaf EbrahimiRelease Notes 163*0c4d7b72SSadaf Ebrahimi 164*0c4d7b72SSadaf EbrahimiINTRODUCTION: 165*0c4d7b72SSadaf Ebrahimi 166*0c4d7b72SSadaf EbrahimiCommons IO is a package of Java utility classes like java.io. 167*0c4d7b72SSadaf EbrahimiClasses in this package are considered to be so standard and of such high 168*0c4d7b72SSadaf Ebrahimireuse as to justify existence in java.io. 169*0c4d7b72SSadaf Ebrahimi 170*0c4d7b72SSadaf EbrahimiThe Apache Commons IO library contains utility classes, stream implementations, file filters, 171*0c4d7b72SSadaf Ebrahimifile comparators, endian transformation classes, and much more. 172*0c4d7b72SSadaf Ebrahimi 173*0c4d7b72SSadaf EbrahimiJava 8 required. 174*0c4d7b72SSadaf Ebrahimi 175*0c4d7b72SSadaf EbrahimiChanges in this version include: 176*0c4d7b72SSadaf Ebrahimi 177*0c4d7b72SSadaf EbrahimiNew features: 178*0c4d7b72SSadaf Ebrahimio Add CharSequenceInputStream.Builder. Thanks to Gary Gregory. 179*0c4d7b72SSadaf Ebrahimio Add ChunkedOutputStream.Builder. Thanks to Gary Gregory. 180*0c4d7b72SSadaf Ebrahimio Add AbstractStreamBuilder.setOpenOptions(OpenOption...). Thanks to Gary Gregory. 181*0c4d7b72SSadaf Ebrahimio Add some missing conversions to AbstractOrigin subclasses. Thanks to Gary Gregory. 182*0c4d7b72SSadaf Ebrahimio Add AbstractOrigin.getByteArray(long, int). Thanks to Gary Gregory. 183*0c4d7b72SSadaf Ebrahimio Add and use RandomAccessFiles. Thanks to Gary Gregory. 184*0c4d7b72SSadaf Ebrahimio Add AbstractOrigin.size(). Thanks to Gary Gregory. 185*0c4d7b72SSadaf Ebrahimio Add PathUtils.EMPTY_FILE_ATTRIBUTE_ARRAY. Thanks to Gary Gregory. 186*0c4d7b72SSadaf Ebrahimio Add CharSequenceInputStream.Builder.setCharsetEncoder(CharsetEncoder). Thanks to Gary Gregory. 187*0c4d7b72SSadaf Ebrahimio Add CharsetEncoders.toCharsetEncoder(CharsetEncoder, Supplier<CharsetEncoder>). Thanks to Gary Gregory. 188*0c4d7b72SSadaf Ebrahimi 189*0c4d7b72SSadaf EbrahimiFixed Bugs: 190*0c4d7b72SSadaf Ebrahimio IO-791: Regression in FileUtils.touch() - no longer creates parent directories. Thanks to Chad Wilson, Gary Gregory. 191*0c4d7b72SSadaf Ebrahimio ByteArrayOrigin should be able convert a byte[] to a ByteArrayInputStream. Thanks to Gary Gregory. 192*0c4d7b72SSadaf Ebrahimio AbstractOriginSupplier.checkOrigin() now throws IllegalStateException instead of NullPointerException. Thanks to Gary Gregory. 193*0c4d7b72SSadaf Ebrahimio IO-796: FileAlreadyExistsException in PathUtils.createParentDirectories(Path, LinkOption, FileAttribute...). Thanks to Giacomo Boccardo, Gary Gregory. 194*0c4d7b72SSadaf Ebrahimio Only read the relevant portion of a file in AbstractOrigin.FileOrigin.getByteArray(long, int) Thanks to Gary Gregory. 195*0c4d7b72SSadaf Ebrahimio Only read the relevant portion of a file in AbstractOrigin.PathOrigin.getByteArray(long, int) Thanks to Gary Gregory. 196*0c4d7b72SSadaf Ebrahimio IO-798: DeferredFileOutputStream throws exception when system temp dir is a symlink. Thanks to Shai Shapira, Gary Gregory. 197*0c4d7b72SSadaf Ebrahimio ReaderInputStream.Builder.setCharsetEncoder(null) should reset to a default object, not throw an NPE. Thanks to Gary Gregory. 198*0c4d7b72SSadaf Ebrahimio ReaderInputStream.Builder.setCharset(null) should reset to a default object, not throw an NPE. Thanks to Gary Gregory. 199*0c4d7b72SSadaf Ebrahimi 200*0c4d7b72SSadaf EbrahimiChanges: 201*0c4d7b72SSadaf Ebrahimio Bump commons-parent from 57 to 58. Thanks to Gary Gregory, Dependabot. 202*0c4d7b72SSadaf Ebrahimi 203*0c4d7b72SSadaf EbrahimiCompatibility with 2.6: 204*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 205*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 206*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 207*0c4d7b72SSadaf Ebrahimi 208*0c4d7b72SSadaf EbrahimiCommons IO 2.9.0 requires Java 8. 209*0c4d7b72SSadaf EbrahimiCommons IO 2.8.0 requires Java 8. 210*0c4d7b72SSadaf EbrahimiCommons IO 2.7 requires Java 8. 211*0c4d7b72SSadaf EbrahimiCommons IO 2.6 requires Java 7. 212*0c4d7b72SSadaf EbrahimiCommons IO 2.5 requires Java 6. 213*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6. 214*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6. 215*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5. 216*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3. 217*0c4d7b72SSadaf Ebrahimi 218*0c4d7b72SSadaf EbrahimiHistorical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html 219*0c4d7b72SSadaf Ebrahimi 220*0c4d7b72SSadaf EbrahimiFor complete information on Apache Commons IO, including instructions on how to submit bug reports, 221*0c4d7b72SSadaf Ebrahimipatches, or suggestions for improvement, see the Apache Commons IO website: 222*0c4d7b72SSadaf Ebrahimi 223*0c4d7b72SSadaf Ebrahimihttps://commons.apache.org/proper/commons-io/ 224*0c4d7b72SSadaf Ebrahimi 225*0c4d7b72SSadaf EbrahimiDownload page: https://commons.apache.org/proper/commons-io/download_io.cgi 226*0c4d7b72SSadaf Ebrahimi 227*0c4d7b72SSadaf EbrahimiHave fun! 228*0c4d7b72SSadaf Ebrahimi-Apache Commons Team 229*0c4d7b72SSadaf Ebrahimi 230*0c4d7b72SSadaf EbrahimiApache Commons IO 231*0c4d7b72SSadaf EbrahimiVersion 2.12.0 232*0c4d7b72SSadaf EbrahimiRelease Notes 233*0c4d7b72SSadaf Ebrahimi 234*0c4d7b72SSadaf Ebrahimi============================================================================== 235*0c4d7b72SSadaf Ebrahimi 236*0c4d7b72SSadaf EbrahimiINTRODUCTION: 237*0c4d7b72SSadaf Ebrahimi 238*0c4d7b72SSadaf EbrahimiCommons IO is a package of Java utility classes like java.io. 239*0c4d7b72SSadaf EbrahimiClasses in this package are considered to be so standard and of such high 240*0c4d7b72SSadaf Ebrahimireuse as to justify existence in java.io. 241*0c4d7b72SSadaf Ebrahimi 242*0c4d7b72SSadaf EbrahimiThe Apache Commons IO library contains utility classes, stream implementations, file filters, 243*0c4d7b72SSadaf Ebrahimifile comparators, endian transformation classes, and much more. 244*0c4d7b72SSadaf Ebrahimi 245*0c4d7b72SSadaf EbrahimiJava 8 required. 246*0c4d7b72SSadaf Ebrahimi 247*0c4d7b72SSadaf EbrahimiChanges in this version include: 248*0c4d7b72SSadaf Ebrahimi 249*0c4d7b72SSadaf EbrahimiNew features: 250*0c4d7b72SSadaf Ebrahimio IO-746: Drop unnecessary casts and conversions #267. Thanks to Davide Angelocola. 251*0c4d7b72SSadaf Ebrahimio Add GitHub coverage.yml. Thanks to Gary Gregory. 252*0c4d7b72SSadaf Ebrahimio Add BrokenReader.INSTANCE. Thanks to Gary Gregory. 253*0c4d7b72SSadaf Ebrahimio Add UncheckedBufferedReader. Thanks to Gary Gregory. 254*0c4d7b72SSadaf Ebrahimio Add UncheckedFilterReader. Thanks to Gary Gregory. 255*0c4d7b72SSadaf Ebrahimio Add UncheckedFilterWriter. Thanks to Gary Gregory. 256*0c4d7b72SSadaf Ebrahimio Add StringInputStream. Thanks to Gary Gregory. 257*0c4d7b72SSadaf Ebrahimio Add UncheckedFilterInputStream. Thanks to Gary Gregory. 258*0c4d7b72SSadaf Ebrahimio Add UncheckedFilterOutputStream. Thanks to Gary Gregory. 259*0c4d7b72SSadaf Ebrahimio Add BrokenInputStream.INSTANCE. Thanks to Gary Gregory. 260*0c4d7b72SSadaf Ebrahimio Add ClosedInputStream.INSTANCE and deprecate CLOSED_INPUT_STREAM. Thanks to Gary Gregory. 261*0c4d7b72SSadaf Ebrahimio Add ClosedReader.INSTANCE and deprecate CLOSED_READER. Thanks to Gary Gregory. 262*0c4d7b72SSadaf Ebrahimio Add BrokenWriter.INSTANCE. Thanks to Gary Gregory. 263*0c4d7b72SSadaf Ebrahimio Add ClosedOutputStream.INSTANCE and deprecate CLOSED_OUTPUT_STREAM. Thanks to Gary Gregory. 264*0c4d7b72SSadaf Ebrahimio Add ClosedWriter.INSTANCE and deprecate CLOSED_WRITER. Thanks to Gary Gregory. 265*0c4d7b72SSadaf Ebrahimio Add NullOutputStream.INSTANCE and deprecate NULL_OUTPUT_STREAM. Thanks to Gary Gregory. 266*0c4d7b72SSadaf Ebrahimio Add NullPrintStream.INSTANCE and deprecate NULL_PRINT_STREAM. Thanks to Gary Gregory. 267*0c4d7b72SSadaf Ebrahimio Add NullWriter.INSTANCE and deprecate NULL_WRITER. Thanks to Gary Gregory. 268*0c4d7b72SSadaf Ebrahimio Add NullInputStream.INSTANCE. Thanks to Gary Gregory. 269*0c4d7b72SSadaf Ebrahimio Add NullReader.INSTANCE. Thanks to Gary Gregory. 270*0c4d7b72SSadaf Ebrahimio Add PathUtils.readString(Path, Charset). Thanks to Gary Gregory. 271*0c4d7b72SSadaf Ebrahimio Add FileUtils.newOutputStream(File, boolean). Thanks to Gary Gregory. 272*0c4d7b72SSadaf Ebrahimio Add PathUtils.newOutputStream(Path, boolean). Thanks to Gary Gregory. 273*0c4d7b72SSadaf Ebrahimio Add UncheckedAppendable. Thanks to Gary Gregory. 274*0c4d7b72SSadaf Ebrahimio Add and reuse UncheckedIOExceptions. Thanks to Gary Gregory. 275*0c4d7b72SSadaf Ebrahimio Add PathUtils.getTempDirectory(). Thanks to Gary Gregory. 276*0c4d7b72SSadaf Ebrahimio Add FileSystem.getNameSeparator(). Thanks to Gary Gregory. 277*0c4d7b72SSadaf Ebrahimio Add FileSystem.normalizeSeparators(). Thanks to Gary Gregory. 278*0c4d7b72SSadaf Ebrahimio Add PathUtils.isNewer(Path, FileTime, LinkOption...). Thanks to Gary Gregory. 279*0c4d7b72SSadaf Ebrahimio Add PathUtils.isNewer(Path, Instant, LinkOption...). Thanks to Gary Gregory. 280*0c4d7b72SSadaf Ebrahimio Add AgeFileFilter.AgeFileFilter(Instant). 281*0c4d7b72SSadaf Ebrahimi Add AgeFileFilter.AgeFileFilter(Instant, boolean). Thanks to Gary Gregory. 282*0c4d7b72SSadaf Ebrahimio Add FileUtils.lastModifiedFileTime(File). Thanks to Gary Gregory. 283*0c4d7b72SSadaf Ebrahimio Add FileTimes. Thanks to Gary Gregory. 284*0c4d7b72SSadaf Ebrahimio Add PathUtils.waitFor(Path, Duration, LinkOption...). Thanks to Gary Gregory. 285*0c4d7b72SSadaf Ebrahimio Add org.apache.commons.io.input.Tailer.getDelayDuration(). Thanks to Gary Gregory. 286*0c4d7b72SSadaf Ebrahimio Add FileUtils.current(). Thanks to Gary Gregory. 287*0c4d7b72SSadaf Ebrahimio Add and use PathUtils.setLastModifiedTime(Path) for more precision. 288*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.setLastModifiedTime(Path, Path) for more precision. Thanks to Gary Gregory. 289*0c4d7b72SSadaf Ebrahimio Add and use PathUtils.isNewer(Path, ChronoZonedDateTime, LinkOption...) for more precision. 290*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.isNewer(Path, Path) for more precision. 291*0c4d7b72SSadaf Ebrahimi Add and use FileUtils.isNewer(File, FileTime) for more precision. Thanks to Gary Gregory. 292*0c4d7b72SSadaf Ebrahimio Add and use PathUtils.isOlder(Path, FileTime, LinkOption...). 293*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.isOlder(Path, Instant, LinkOption...). 294*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.isOlder(Path, long, LinkOption...). 295*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.isOlder(Path, Path). Thanks to Gary Gregory. 296*0c4d7b72SSadaf Ebrahimio Add and use PathUtils.sizeOf(Path). 297*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.sizeOfAsBigInteger(Path). 298*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.sizeOfDirectory(Path). 299*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.sizeOfDirectoryAsBigInteger(Path). Thanks to Gary Gregory. 300*0c4d7b72SSadaf Ebrahimio Add and use IOCase.value(IOCase, IOCase). Thanks to Gary Gregory. 301*0c4d7b72SSadaf Ebrahimio Add Tailer.Tailable interface to allow tailing of remote files for example using jCIFS. Thanks to Jon Freedman, Gary Gregory. 302*0c4d7b72SSadaf Ebrahimio Add and use RandomAccessFileMode. Thanks to Gary Gregory. 303*0c4d7b72SSadaf Ebrahimio Add PathUtils.writeString(Path, CharSequence, Charset, OpenOption...). Thanks to Gary Gregory. 304*0c4d7b72SSadaf Ebrahimio Add PathUtiFiles.getFileAttributeView() shorthands: 305*0c4d7b72SSadaf Ebrahimi - PathUtils.getAclFileAttributeView(Path, LinkOption...) 306*0c4d7b72SSadaf Ebrahimi - PathUtils.getDosFileAttributeView(Path, LinkOption...) 307*0c4d7b72SSadaf Ebrahimi - PathUtils.getPosixFileAttributeView(Path, LinkOption...) Thanks to Gary Gregory. 308*0c4d7b72SSadaf Ebrahimio IO-747: Make commons-io a JPMS module by adding module-info.class. 309*0c4d7b72SSadaf Ebrahimio IO-753: Add IOUtils method to copy output stream to input stream #281. Thanks to SebastianDietrich, Gary Gregory. 310*0c4d7b72SSadaf Ebrahimio Add PathUtils.isPosix(Path, LinkOption...). #290 Thanks to Gary Gregory. 311*0c4d7b72SSadaf Ebrahimio Add PathUtils.readAttributes(Path, Class, LinkOption...). #290 Thanks to Gary Gregory. 312*0c4d7b72SSadaf Ebrahimio Add IOExceptionList.checkEmpty(List, Object). Thanks to Gary Gregory. 313*0c4d7b72SSadaf Ebrahimio Add IOBiConsumer, IOTriConsumer, IOComparator, IOUnaryOperator, IOBinaryOperator. Thanks to Gary Gregory. 314*0c4d7b72SSadaf Ebrahimio Add and reuse IOConsumer forAll(*), forEach(*), and forEachIndexed(*). Thanks to Gary Gregory. 315*0c4d7b72SSadaf Ebrahimio Add CharsetEncoders. Thanks to Gary Gregory. 316*0c4d7b72SSadaf Ebrahimio Add CharsetDecoders. Thanks to Gary Gregory. 317*0c4d7b72SSadaf Ebrahimio Add PathUtils.createParentDirectories(Path, LinkOption, FileAttribute...). Thanks to Gary Gregory. 318*0c4d7b72SSadaf Ebrahimio Update FileEntry to use FileTime instead of long for file time stamps. Thanks to Gary Gregory. 319*0c4d7b72SSadaf Ebrahimio IO-680: Add more tests for IOUtils.contentEqualsIgnoreEOL #137. Thanks to XenoAmess, sebbASF, Gary Gregory. 320*0c4d7b72SSadaf Ebrahimio Reduce boilerplate through new UncheckedIO class and friends in org.apache.commons.io.function. Thanks to Gary Gregory. 321*0c4d7b72SSadaf Ebrahimio Add PathUtils.touch(Path). Thanks to Gary Gregory. 322*0c4d7b72SSadaf Ebrahimio Add FileSystem.getIllegalFileNameCodePoints(). Thanks to Gary Gregory. 323*0c4d7b72SSadaf Ebrahimio Add FileUtils.isFileNewer(File, ChronoLocalDate, OffsetTime). 324*0c4d7b72SSadaf Ebrahimi Add FileUtils.isFileNewer(File, OffsetDateTime). 325*0c4d7b72SSadaf Ebrahimi Add FileUtils.isFileOlder(File, ChronoLocalDate, OffsetTime). 326*0c4d7b72SSadaf Ebrahimi Add FileUtils.isFileOlder(File, OffsetDateTime). Thanks to Isira Seneviratne, Gary Gregory. 327*0c4d7b72SSadaf Ebrahimio Add IOBiConsumer.noop(). Thanks to Gary Gregory. 328*0c4d7b72SSadaf Ebrahimio Add IOUtils.closeQuietly(Iterable<Closeable>). 329*0c4d7b72SSadaf Ebrahimi Add IOUtils.closeQuietly(Stream<Closeable>). Thanks to Gary Gregory. 330*0c4d7b72SSadaf Ebrahimio Add Charsets.toCharset(Charset, Charset). 331*0c4d7b72SSadaf Ebrahimi Add Charsets.toCharset(String, Charset). Thanks to Gary Gregory. 332*0c4d7b72SSadaf Ebrahimio Add XmlStreamWriter(OutputStream, Charset). Thanks to Gary Gregory. 333*0c4d7b72SSadaf Ebrahimio Add PathUtils.getLastModifiedFileTime(*). Thanks to Gary Gregory. 334*0c4d7b72SSadaf Ebrahimio Add IOBiFunction, IOTriFunction, IOQuadFunction, IOPredicate, IOIterator, IOSpliterator, IOBaseStream, IOStream, FilesUncheck. Thanks to Gary Gregory. 335*0c4d7b72SSadaf Ebrahimio Add IOUtils.consume(Reader). Thanks to Gary Gregory. 336*0c4d7b72SSadaf Ebrahimio Add IOSupplier.asSupplier(). Thanks to Gary Gregory. 337*0c4d7b72SSadaf Ebrahimio Add IOFunction.asFunction(). Thanks to Gary Gregory. 338*0c4d7b72SSadaf Ebrahimio Add IOConsumer.asConsumer(). Thanks to Gary Gregory. 339*0c4d7b72SSadaf Ebrahimio Add TimestampedObserver.isClosed(). Thanks to Gary Gregory. 340*0c4d7b72SSadaf Ebrahimio IOExceptionList implements Iterable. Thanks to Gary Gregory. 341*0c4d7b72SSadaf Ebrahimio IO-784: Add support for Appendable to HexDump #418. Thanks to Fredrik Kjellberg, Gary Gregory. 342*0c4d7b72SSadaf Ebrahimio Add and use ThreadUtils. Thanks to DaGeRe, Gary Gregory. 343*0c4d7b72SSadaf Ebrahimio IO-786: Add UnsynchronizedFilterInputStream. Thanks to Gary Gregory. 344*0c4d7b72SSadaf Ebrahimio IO-786: Add UnsynchronizedBufferedInputStream. Thanks to Gary Gregory, Benoit Tellier. 345*0c4d7b72SSadaf Ebrahimio Add FileSystem.getBlockSize(). Thanks to Gary Gregory. 346*0c4d7b72SSadaf Ebrahimio Add builders and avoid creating more constructors for all permutations of current options. Thanks to Gary Gregory. 347*0c4d7b72SSadaf Ebrahimio Refactor using new Supplier API IOUtils.toString(IOSupplier<InputStream>, Charset[, IOSupplier<String>]). Thanks to Gary Gregory, maxxedev. 348*0c4d7b72SSadaf Ebrahimio Refactor using new Supplier API org.apache.commons.io.file.PathUtils.copy(IOSupplier<InputStream>, Path, CopyOption...). Thanks to Gary Gregory, maxxedev. 349*0c4d7b72SSadaf Ebrahimi 350*0c4d7b72SSadaf EbrahimiFixed Bugs: 351*0c4d7b72SSadaf Ebrahimio IO-697: IOUtils.toByteArray size validation does not match documentation. Thanks to otter606. 352*0c4d7b72SSadaf Ebrahimio Fix Javadoc links to the JRE Javadoc 8. Thanks to Gary Gregory. 353*0c4d7b72SSadaf Ebrahimio IO-744: FileWriterWithEncoding for an existing file no longer truncates the file. #251. Thanks to RBRi, Gary Gregory. 354*0c4d7b72SSadaf Ebrahimio A null Charset or Charset name in FileWriterWithEncoding constructors uses the default Charset. Thanks to Gary Gregory. 355*0c4d7b72SSadaf Ebrahimio Fix usage of assertNotNull #269. Thanks to Davide Angelocola. 356*0c4d7b72SSadaf Ebrahimio IO-727: FilenameUtils directoryContains() should handle files with the same prefix #217. Thanks to trungPa, Gary Gregory. 357*0c4d7b72SSadaf Ebrahimio IO-748: FileUtils.moveToDirectory() exception documentation and exception message error. Thanks to Dirk Heinrichs, Gary Gregory, Elango Ravi. 358*0c4d7b72SSadaf Ebrahimio ThreadMonitor.sleep(Duration) ignores nanoseconds. Thanks to Gary Gregory. 359*0c4d7b72SSadaf Ebrahimio Fix Javadoc in ThreadMonitor#run() method. #273. Thanks to Arturo Bernal. 360*0c4d7b72SSadaf Ebrahimio IO-749: FileUtils.listFiles() does not list matching files if File parameter is a symbolic link. Thanks to haihuiyang, Gary Gregory. 361*0c4d7b72SSadaf Ebrahimio Fix typo in Javadocs for FileUtils#convertFileCollectionToFileArray() #276. Thanks to niranjanghule, Gary Gregory. 362*0c4d7b72SSadaf Ebrahimio Avoid Code Duplication: Reuse Sleep from ThreadMonitor #66. Thanks to DaGeRe, Gary Gregory. 363*0c4d7b72SSadaf Ebrahimio IO-750: FileUtils.iterateFiles also lists directories. Thanks to Sita Ge�ner, Sebastian Peters, Gary Gregory. 364*0c4d7b72SSadaf Ebrahimio IO-721: Wrong exception message in FileUtils.setLastModified(File, File). Thanks to Dirk Heinrichs, Gary Gregory. 365*0c4d7b72SSadaf Ebrahimio IO-717: Infinite loop in ReaderInputStream instead of throwing exception for CodingErrorAction.REPORT. Thanks to Marcono1234, Gary Gregory. 366*0c4d7b72SSadaf Ebrahimio IO-716: ReaderInputStream enter infinite loop for too small buffer sizes. Thanks to Marcono1234, Gary Gregory. 367*0c4d7b72SSadaf Ebrahimio IO-638: Infinite loop in CharSequenceInputStream.read for 4-byte characters with UTF-8 and 3-byte buffer. Thanks to Thayne McCombs, Gary Gregory. 368*0c4d7b72SSadaf Ebrahimio IO-638: PathUtils.setReadOnly(Path, boolean, LinkOption...) should add READ_* file attributes when using POSIX. Thanks to Gary Gregory. 369*0c4d7b72SSadaf Ebrahimio IO-638: PathUtils.setReadOnly(Path, boolean, LinkOption...) readOnly argument is always assumed true on POSIX. Thanks to Gary Gregory. 370*0c4d7b72SSadaf Ebrahimio IO-729: Prevent IllegalArgumentExceptions in BrokenInputStream/Reader/OutputStream/Writer #278. Thanks to Rob Spoor, Gary Gregory. 371*0c4d7b72SSadaf Ebrahimio FileUtils.copyURLToFile(URL, File, int, int) leaks its URLConnection. 372*0c4d7b72SSadaf Ebrahimi Called by FileUtils.copyURLToFile(URL, File). Thanks to Gary Gregory. 373*0c4d7b72SSadaf Ebrahimio IO-714: Fixed ReaderInputStream not calling CharsetEncoder.flush issue #283. Thanks to kevinwang1975, Gary Gregory. 374*0c4d7b72SSadaf Ebrahimio Minor changes #287. Thanks to Arturo Bernal. 375*0c4d7b72SSadaf Ebrahimio IO-756: Update FileWriterWithEncoding to extend ProxyWriter #296. Thanks to wodencafe, Gary Gregory, Bruno P. Kinoshita. 376*0c4d7b72SSadaf Ebrahimio Initialize the message of an IOExceptionList to a default if null. Thanks to Gary Gregory. 377*0c4d7b72SSadaf Ebrahimio IO-751: When deleting symlinks, File/PathUtils.deleteDirectory() changes file permissions of the target. Thanks to Gary Gregory, Richard Cyganiak. 378*0c4d7b72SSadaf Ebrahimio ReaderInputStream maps null Charset, Charset name, and CharsetEncoder to the platform default instead of throwing a NullPointerException. Thanks to Gary Gregory. 379*0c4d7b72SSadaf Ebrahimio CharSequenceInputStream maps null Charset and Charset name to the platform default instead of throwing a NullPointerException. Thanks to Gary Gregory. 380*0c4d7b72SSadaf Ebrahimio WriterOutputStream maps null Charset, Charset name, and CharsetEncoder name to the platform default instead of throwing a NullPointerException. Thanks to Gary Gregory. 381*0c4d7b72SSadaf Ebrahimio FileUtils.copyURLToFile should create target parent directories and overwrite target file #319. Thanks to Chad Wilson, Gary Gregory. 382*0c4d7b72SSadaf Ebrahimio IO-484: Fix incorrect FilenameUtils Javadoc for null bytes #310. Thanks to Marcono1234, Gary Gregory. 383*0c4d7b72SSadaf Ebrahimio IO-484: Change to uppercase variable constant. #323. Thanks to Arturo Bernal. 384*0c4d7b72SSadaf Ebrahimio IO-484: IOCase.isCaseSensitive(IOCase) result is backward #325. Thanks to David Huang, Gary Gregory. 385*0c4d7b72SSadaf Ebrahimio IO-758: Deprecate PathUtils.NOFOLLOW_LINK_OPTION_ARRAY in favor of noFollowLinkOptionArray(). Thanks to Marcono1234, Gary Gregory. 386*0c4d7b72SSadaf Ebrahimio Improve ReaderInputStream documentation #291. Thanks to Marcono1234, Gary Gregory. 387*0c4d7b72SSadaf Ebrahimio Fix misleading comments in FileFilterTest #334. Thanks to richarda23. 388*0c4d7b72SSadaf Ebrahimio Add missing Javadoc for exceptions thrown for invalid arguments #339. Thanks to Diego Marcilio. 389*0c4d7b72SSadaf Ebrahimio FileFilterTest minor fixes #340. Thanks to richarda23. 390*0c4d7b72SSadaf Ebrahimio IO-764: IOUtils.write() throws OutOfMemoryError/NegativeArraySizeException while writing big strings #343. Thanks to DaGeRe, Gary Gregory. 391*0c4d7b72SSadaf Ebrahimio IO-768: Add reserved Windows file names CONIN$ and CONOUT$ to FileSystem #355. Thanks to Marcono1234, Michael Osipov. 392*0c4d7b72SSadaf Ebrahimio IO-773: RegexFileFilter is no longer Serializable. Thanks to Dominik Reinarz, Gary Gregory. 393*0c4d7b72SSadaf Ebrahimio IO-763: [Javadoc] FileFilterUtils doc does not match impl: missing some file filters. Thanks to Richard Adams, Gary Gregory. 394*0c4d7b72SSadaf Ebrahimio IO-762: FileSystem.WINDOWS.isReservedFileName doesn't check for file extension. Thanks to Leonidas Chiron, Gary Gregory. 395*0c4d7b72SSadaf Ebrahimio IO-772: Confusing Javadoc on IOUtils#resourceToURL() and other resource* methods. Thanks to Dan Ziemba, Gary Gregory. 396*0c4d7b72SSadaf Ebrahimio IO-443: FileUtils.copyFile methods throw an unnecessary "Failed to copy full contents from" exception. Thanks to Dan Ziemba, Gary Gregory. 397*0c4d7b72SSadaf Ebrahimio 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. 398*0c4d7b72SSadaf Ebrahimio Fix minor typos #367. Thanks to Marc Wrobel. 399*0c4d7b72SSadaf Ebrahimio IO-776: Fix parameters to requireNonNull call in DeferredOutputSteam #368. Thanks to Chris Povirk. 400*0c4d7b72SSadaf Ebrahimio Fix PathUtils.copyFileToDirectory(URL,Path,CopyOption[]). Thanks to Gary Gregory. 401*0c4d7b72SSadaf Ebrahimio IO-386: FileUtils.doCopyFile uses different methods to check the file sizes. Thanks to Sebb, Bernd Eckenfels, zhipengxu, Gary Gregory. 402*0c4d7b72SSadaf Ebrahimio Fix typos #375. Thanks to Michael Ernst. 403*0c4d7b72SSadaf Ebrahimio IO-611: FilenameUtils.normalize javadoc and tests #383. Thanks to Fedor Urvanov. 404*0c4d7b72SSadaf Ebrahimio IO-611: Better docs in IOUtils and IOUtils.byteArray(int size) #374. Thanks to ArdenL-Liu, Bruno P. Kinoshita, Gary Gregory. 405*0c4d7b72SSadaf Ebrahimio IO-782: SequenceReader should close readers when its close method is called #391. Thanks to Matteo Di Giovinazzo, Gary Gregory. 406*0c4d7b72SSadaf Ebrahimio IO-790: Fix symbolic link file filter #450. Thanks to Miguel Mu�oz, Gary Gregory. 407*0c4d7b72SSadaf Ebrahimio IO-790: Apply nanoseconds precision for QueueInputStream timeout duration. #453. Thanks to maxxedev, Gary Gregory, Bruno P. Kinoshita. 408*0c4d7b72SSadaf Ebrahimio Fix overflow for FileUtilsTest constants #456. Thanks to Marcono1234. 409*0c4d7b72SSadaf Ebrahimio Serialization is deprecated and will be removed in 3.0. Thanks to Gary Gregory. 410*0c4d7b72SSadaf Ebrahimio FileSystemUtils.performCommand(String[], int, Duration): Use Locale.getDefault() instead of ENGLISH. Thanks to Gary Gregory. 411*0c4d7b72SSadaf Ebrahimio IO-726: Add MemoryMappedFileInputStream #215. Thanks to shollander, Gary Gregory. 412*0c4d7b72SSadaf Ebrahimi 413*0c4d7b72SSadaf EbrahimiChanges: 414*0c4d7b72SSadaf Ebrahimio Bump actions/cache from 2.1.6 to 3.0.10 #307, #337, #393. Thanks to Dependabot, Gary Gregory. 415*0c4d7b72SSadaf Ebrahimio Bump actions/checkout from 2.3.4 to 3.1.0 #286, #298, #330, #392. Thanks to Dependabot, Gary Gregory. 416*0c4d7b72SSadaf Ebrahimio Bump actions/setup-java from 2 to 3.6.0 #346, #397. Thanks to Dependabot. 417*0c4d7b72SSadaf Ebrahimio Bump github/codeql-action from 1 to 2 #353. Thanks to Dependabot. 418*0c4d7b72SSadaf Ebrahimio Bump Maven Javadoc plugin from 3.2.0 to 3.4.1. Thanks to Dependabot, Gary Gregory. 419*0c4d7b72SSadaf Ebrahimio 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. 420*0c4d7b72SSadaf Ebrahimio Bump spotbugs from 4.5.2 to 4.7.3 #313, #317, #357, #382, #398. Thanks to Gary Gregory, Dependabot. 421*0c4d7b72SSadaf Ebrahimio Bump JUnit from 5.7.2 to 5.8.2. Thanks to Gary Gregory. 422*0c4d7b72SSadaf Ebrahimio Bump maven-enforcer-plugin from 3.0.0-M3 to 3.3.0 #255, #363, #431, #446. Thanks to Dependabot. 423*0c4d7b72SSadaf Ebrahimio Bump checkstyle from 8.44 to 9.3 #256, #257, #266, #279, #292. #308. Thanks to Dependabot, Gary Gregory. 424*0c4d7b72SSadaf Ebrahimio Bump junit-bom from 5.8.0-M1 to 5.9.1 #260, #271, #275, #309, #386. Thanks to Dependabot. 425*0c4d7b72SSadaf Ebrahimio 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. 426*0c4d7b72SSadaf Ebrahimio Bump jmh.version from 1.32 to 1.36 #258, #316, #342, #404. Thanks to Dependabot. 427*0c4d7b72SSadaf Ebrahimio Bump moditect-maven-plugin from 1.0.0.RC1 to 1.0.0.Final #280, #439, #445. Thanks to Dependabot. 428*0c4d7b72SSadaf Ebrahimio Bump junit-pioneer from 1.4.2 to 1.9.1 #304. #335, #362, #402, #406, #409. Thanks to Dependabot, Gary Gregory. 429*0c4d7b72SSadaf Ebrahimio Bump japicmp-maven-plugin from 0.15.3 to 0.16.0. Thanks to Gary Gregory. 430*0c4d7b72SSadaf Ebrahimio Bump commons-parent from 52 to 57 #388, #415, #421, #184. Thanks to Gary Gregory, Dependabot. 431*0c4d7b72SSadaf Ebrahimio Bump jacoco-maven-plugin from 0.8.7 to 0.8.8. Thanks to Gary Gregory. 432*0c4d7b72SSadaf Ebrahimio Bump maven-antrun-plugin from 3.0.0 to 3.1.0 #354. Thanks to Dependabot. 433*0c4d7b72SSadaf Ebrahimio Bump commons.surefire.version 3.0.0-M5 to 3.0.0-M7. Thanks to Gary Gregory. 434*0c4d7b72SSadaf Ebrahimio Bump PMD from 6.44.0 to 6.52.0. Thanks to Gary Gregory. 435*0c4d7b72SSadaf Ebrahimio Bump maven-pmd-plugin from 3.16.0 to 3.19.0. Thanks to Gary Gregory. 436*0c4d7b72SSadaf Ebrahimio Bump apache-rat from 0.13 to 0.14. Thanks to Gary Gregory. 437*0c4d7b72SSadaf Ebrahimio Bump exec-maven-plugin from 3.0.0 to 3.1.0 #369. Thanks to Dependabot. 438*0c4d7b72SSadaf Ebrahimio Bump maven-checkstyle-plugin from 3.1.2 to 3.2.0 #376. Thanks to Dependabot. 439*0c4d7b72SSadaf Ebrahimio Bump apache-rat-plugin from 0.14 to 0.15 #387. Thanks to Dependabot. 440*0c4d7b72SSadaf Ebrahimio Bump default buffer size for CharSequenceInputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory. 441*0c4d7b72SSadaf Ebrahimio Bump default buffer size for ChunkedOutputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory. 442*0c4d7b72SSadaf Ebrahimio Bump default buffer size for ChunkedWriter to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory. 443*0c4d7b72SSadaf Ebrahimio Bump default buffer size for ReaderInputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory. 444*0c4d7b72SSadaf Ebrahimio Bump default buffer size for WriterOutputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory. 445*0c4d7b72SSadaf Ebrahimi 446*0c4d7b72SSadaf EbrahimiCompatibility with 2.6: 447*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 448*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 449*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 450*0c4d7b72SSadaf Ebrahimi 451*0c4d7b72SSadaf EbrahimiCommons IO 2.9.0 requires Java 8. 452*0c4d7b72SSadaf EbrahimiCommons IO 2.8.0 requires Java 8. 453*0c4d7b72SSadaf EbrahimiCommons IO 2.7 requires Java 8. 454*0c4d7b72SSadaf EbrahimiCommons IO 2.6 requires Java 7. 455*0c4d7b72SSadaf EbrahimiCommons IO 2.5 requires Java 6. 456*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6. 457*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6. 458*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5. 459*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3. 460*0c4d7b72SSadaf Ebrahimi 461*0c4d7b72SSadaf EbrahimiHistorical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html 462*0c4d7b72SSadaf Ebrahimi 463*0c4d7b72SSadaf EbrahimiFor complete information on Apache Commons IO, including instructions on how to submit bug reports, 464*0c4d7b72SSadaf Ebrahimipatches, or suggestions for improvement, see the Apache Commons IO website: 465*0c4d7b72SSadaf Ebrahimi 466*0c4d7b72SSadaf Ebrahimihttps://commons.apache.org/proper/commons-io/ 467*0c4d7b72SSadaf Ebrahimi 468*0c4d7b72SSadaf EbrahimiDownload page: https://commons.apache.org/proper/commons-io/download_io.cgi 469*0c4d7b72SSadaf Ebrahimi 470*0c4d7b72SSadaf EbrahimiHave fun! 471*0c4d7b72SSadaf Ebrahimi-Apache Commons Team 472*0c4d7b72SSadaf Ebrahimi 473*0c4d7b72SSadaf Ebrahimi============================================================================== 474*0c4d7b72SSadaf Ebrahimi 475*0c4d7b72SSadaf EbrahimiApache Commons IO 476*0c4d7b72SSadaf EbrahimiVersion 2.11.0 477*0c4d7b72SSadaf EbrahimiRelease Notes 478*0c4d7b72SSadaf Ebrahimi 479*0c4d7b72SSadaf EbrahimiINTRODUCTION: 480*0c4d7b72SSadaf Ebrahimi 481*0c4d7b72SSadaf EbrahimiCommons IO is a package of Java utility classes like java.io. 482*0c4d7b72SSadaf EbrahimiClasses in this package are considered to be so standard and of such high 483*0c4d7b72SSadaf Ebrahimireuse as to justify existence in java.io. 484*0c4d7b72SSadaf Ebrahimi 485*0c4d7b72SSadaf EbrahimiThe Apache Commons IO library contains utility classes, stream implementations, file filters, 486*0c4d7b72SSadaf Ebrahimifile comparators, endian transformation classes, and much more. 487*0c4d7b72SSadaf Ebrahimi 488*0c4d7b72SSadaf EbrahimiJava 8 required. 489*0c4d7b72SSadaf Ebrahimi 490*0c4d7b72SSadaf EbrahimiChanges in this version include: 491*0c4d7b72SSadaf Ebrahimi 492*0c4d7b72SSadaf Ebrahimi 493*0c4d7b72SSadaf EbrahimiFixed Bugs: 494*0c4d7b72SSadaf Ebrahimio IO-741: FileUtils.listFiles does not list matching files if File parameter is a symbolic link. Thanks to Zach Sherman. 495*0c4d7b72SSadaf Ebrahimio IO-724: FileUtils#deleteDirectory(File) exception Javadoc inaccurate update #245. Thanks to liran2000. 496*0c4d7b72SSadaf Ebrahimio Minor changes #243. Thanks to Arturo Bernal. 497*0c4d7b72SSadaf Ebrahimio Replace construction of FileInputStream and FileOutputStream objects with Files NIO APIs. #221. Thanks to Arturo Bernal. 498*0c4d7b72SSadaf Ebrahimio Fix IndexOutOfBoundsException in IOExceptionList constructors. Thanks to Gary Gregory. 499*0c4d7b72SSadaf Ebrahimio Remove IOException from the method signatures that no longer throw IOException. 500*0c4d7b72SSadaf Ebrahimi This maintains binary compatibility but not source compatibility. 501*0c4d7b72SSadaf Ebrahimi - FilenameUtils 502*0c4d7b72SSadaf Ebrahimi directoryContains(String, String) 503*0c4d7b72SSadaf Ebrahimi - BoundedReader 504*0c4d7b72SSadaf Ebrahimi BoundedReader(java.io.Reader, int) 505*0c4d7b72SSadaf Ebrahimi - IOUtils 506*0c4d7b72SSadaf Ebrahimi lineIterator(java.io.InputStream, Charset) 507*0c4d7b72SSadaf Ebrahimi lineIterator(java.io.InputStream, String) 508*0c4d7b72SSadaf Ebrahimi toByteArray(String) 509*0c4d7b72SSadaf Ebrahimi toInputStream(CharSequence, String) 510*0c4d7b72SSadaf Ebrahimi toInputStream(String, String) 511*0c4d7b72SSadaf Ebrahimi toString(byte[]) 512*0c4d7b72SSadaf Ebrahimi toString(byte[], String) Thanks to Gary Gregory. 513*0c4d7b72SSadaf Ebrahimi 514*0c4d7b72SSadaf EbrahimiChanges: 515*0c4d7b72SSadaf Ebrahimio Add SymbolicLinkFileFilter. Thanks to Gary Gregory. 516*0c4d7b72SSadaf Ebrahimio Add test to make sure the setter of AndFileFilter works correctly #244. Thanks to trncate. 517*0c4d7b72SSadaf Ebrahimio Add XmlStreamReader(Path). Thanks to Gary Gregory. 518*0c4d7b72SSadaf Ebrahimio Bump mockito-inline from 3.11.0 to 3.11.2 #247. Thanks to Dependabot. 519*0c4d7b72SSadaf Ebrahimio Bump jmh.version from 1.27 to 1.32 #237. Thanks to Dependabot. 520*0c4d7b72SSadaf Ebrahimio Bump spotbugs from 4.2.3 to 4.3.0 #249. Thanks to Dependabot. 521*0c4d7b72SSadaf Ebrahimi 522*0c4d7b72SSadaf EbrahimiCompatibility with 2.6: 523*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 524*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 525*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 526*0c4d7b72SSadaf Ebrahimi 527*0c4d7b72SSadaf EbrahimiCommons IO 2.9.0 requires Java 8. 528*0c4d7b72SSadaf EbrahimiCommons IO 2.8.0 requires Java 8. 529*0c4d7b72SSadaf EbrahimiCommons IO 2.7 requires Java 8. 530*0c4d7b72SSadaf EbrahimiCommons IO 2.6 requires Java 7. 531*0c4d7b72SSadaf EbrahimiCommons IO 2.5 requires Java 6. 532*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6. 533*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6. 534*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5. 535*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3. 536*0c4d7b72SSadaf Ebrahimi 537*0c4d7b72SSadaf EbrahimiHistorical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html 538*0c4d7b72SSadaf Ebrahimi 539*0c4d7b72SSadaf EbrahimiFor complete information on Apache Commons IO, including instructions on how to submit bug reports, 540*0c4d7b72SSadaf Ebrahimipatches, or suggestions for improvement, see the Apache Commons IO website: 541*0c4d7b72SSadaf Ebrahimi 542*0c4d7b72SSadaf Ebrahimihttps://commons.apache.org/proper/commons-io/ 543*0c4d7b72SSadaf Ebrahimi 544*0c4d7b72SSadaf EbrahimiDownload page: https://commons.apache.org/proper/commons-io/download_io.cgi 545*0c4d7b72SSadaf Ebrahimi 546*0c4d7b72SSadaf EbrahimiHave fun! 547*0c4d7b72SSadaf Ebrahimi-Apache Commons Team 548*0c4d7b72SSadaf Ebrahimi 549*0c4d7b72SSadaf Ebrahimi============================================================================== 550*0c4d7b72SSadaf Ebrahimi 551*0c4d7b72SSadaf EbrahimiApache Commons IO 552*0c4d7b72SSadaf EbrahimiVersion 2.10.0 553*0c4d7b72SSadaf EbrahimiRelease Notes 554*0c4d7b72SSadaf Ebrahimi 555*0c4d7b72SSadaf EbrahimiINTRODUCTION: 556*0c4d7b72SSadaf Ebrahimi 557*0c4d7b72SSadaf EbrahimiCommons IO is a package of Java utility classes like java.io. 558*0c4d7b72SSadaf EbrahimiClasses in this package are considered to be so standard and of such high 559*0c4d7b72SSadaf Ebrahimireuse as to justify existence in java.io. 560*0c4d7b72SSadaf Ebrahimi 561*0c4d7b72SSadaf EbrahimiThe Apache Commons IO library contains utility classes, stream implementations, file filters, 562*0c4d7b72SSadaf Ebrahimifile comparators, endian transformation classes, and much more. 563*0c4d7b72SSadaf Ebrahimi 564*0c4d7b72SSadaf EbrahimiJava 8 required. 565*0c4d7b72SSadaf Ebrahimi 566*0c4d7b72SSadaf EbrahimiChanges in this version include: 567*0c4d7b72SSadaf Ebrahimi 568*0c4d7b72SSadaf EbrahimiNew features: 569*0c4d7b72SSadaf Ebrahimio Add and use RegexFileFilter.toString(). Thanks to Gary Gregory. 570*0c4d7b72SSadaf Ebrahimio Add and use RegexFileFilter.RegexFileFilter(Pattern, Function<Path>, String>) Thanks to Gary Gregory. 571*0c4d7b72SSadaf Ebrahimio Add and use IOCase.isCaseSensitive(IOCase). Thanks to Gary Gregory. 572*0c4d7b72SSadaf Ebrahimi 573*0c4d7b72SSadaf EbrahimiFixed Bugs: 574*0c4d7b72SSadaf Ebrahimio IO-733: RegexFileFilter uses the path and file name instead of just the file name. Thanks to Jim Sellers, Gary Gregory. 575*0c4d7b72SSadaf Ebrahimio IO-734: The OSGi manifest now contains sun.* import packages #239. Thanks to Eric Norman. 576*0c4d7b72SSadaf Ebrahimio IO-585: Sanitize double slash after prefix #79. Thanks to Adam McClenaghan. 577*0c4d7b72SSadaf Ebrahimi 578*0c4d7b72SSadaf EbrahimiChanges: 579*0c4d7b72SSadaf Ebrahimio Bump actions/cache from 2.1.5 to 2.1.6 #238. Thanks to Dependabot. 580*0c4d7b72SSadaf Ebrahimio Bump junit-pioneer from 1.4.1 to 1.4.2 #240. Thanks to Dependabot. 581*0c4d7b72SSadaf Ebrahimio Bump checkstyle from 8.42 to 8.43 #241. Thanks to Dependabot. 582*0c4d7b72SSadaf Ebrahimio Bump mockito-inline from 3.10.0 to 3.11.0 #242. Thanks to Dependabot. 583*0c4d7b72SSadaf Ebrahimi 584*0c4d7b72SSadaf EbrahimiCompatibility with 2.6: 585*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 586*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 587*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 588*0c4d7b72SSadaf Ebrahimi 589*0c4d7b72SSadaf EbrahimiCommons IO 2.9.0 requires Java 8. 590*0c4d7b72SSadaf EbrahimiCommons IO 2.8.0 requires Java 8. 591*0c4d7b72SSadaf EbrahimiCommons IO 2.7 requires Java 8. 592*0c4d7b72SSadaf EbrahimiCommons IO 2.6 requires Java 7. 593*0c4d7b72SSadaf EbrahimiCommons IO 2.5 requires Java 6. 594*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6. 595*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6. 596*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5. 597*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3. 598*0c4d7b72SSadaf Ebrahimi 599*0c4d7b72SSadaf EbrahimiHistorical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html 600*0c4d7b72SSadaf Ebrahimi 601*0c4d7b72SSadaf EbrahimiFor complete information on Apache Commons IO, including instructions on how to submit bug reports, 602*0c4d7b72SSadaf Ebrahimipatches, or suggestions for improvement, see the Apache Commons IO website: 603*0c4d7b72SSadaf Ebrahimi 604*0c4d7b72SSadaf Ebrahimihttps://commons.apache.org/proper/commons-io/ 605*0c4d7b72SSadaf Ebrahimi 606*0c4d7b72SSadaf EbrahimiDownload page: https://commons.apache.org/proper/commons-io/download_io.cgi 607*0c4d7b72SSadaf Ebrahimi 608*0c4d7b72SSadaf EbrahimiHave fun! 609*0c4d7b72SSadaf Ebrahimi-Apache Commons Team 610*0c4d7b72SSadaf Ebrahimi 611*0c4d7b72SSadaf Ebrahimi============================================================================== 612*0c4d7b72SSadaf Ebrahimi 613*0c4d7b72SSadaf EbrahimiApache Commons IO 614*0c4d7b72SSadaf EbrahimiVersion 2.8.0 615*0c4d7b72SSadaf EbrahimiRelease Notes 616*0c4d7b72SSadaf Ebrahimi 617*0c4d7b72SSadaf EbrahimiINTRODUCTION: 618*0c4d7b72SSadaf Ebrahimi 619*0c4d7b72SSadaf EbrahimiCommons IO is a package of Java utility classes like java.io. 620*0c4d7b72SSadaf EbrahimiClasses in this package are considered to be so standard and of such high 621*0c4d7b72SSadaf Ebrahimireuse as to justify existence in java.io. 622*0c4d7b72SSadaf Ebrahimi 623*0c4d7b72SSadaf EbrahimiThe Apache Commons IO library contains utility classes, stream implementations, file filters, 624*0c4d7b72SSadaf Ebrahimifile comparators, endian transformation classes, and much more. 625*0c4d7b72SSadaf Ebrahimi 626*0c4d7b72SSadaf EbrahimiJava 8 required. 627*0c4d7b72SSadaf Ebrahimi 628*0c4d7b72SSadaf EbrahimiChanges in this version include: 629*0c4d7b72SSadaf Ebrahimi 630*0c4d7b72SSadaf EbrahimiNew features: 631*0c4d7b72SSadaf Ebrahimio Add org.apache.commons.io.input.CircularInputStream. Thanks to Gary Gregory. 632*0c4d7b72SSadaf Ebrahimio Add org.apache.commons.io.file.PathUtils.cleanDirectory(Path, FileVisitOption...). Thanks to Gary Gregory. 633*0c4d7b72SSadaf Ebrahimio Add org.apache.commons.io.file.PathUtils.deleteDirectory(Path, FileVisitOption...). Thanks to Gary Gregory. 634*0c4d7b72SSadaf Ebrahimio Add NullAppendable. Thanks to Gary Gregory. 635*0c4d7b72SSadaf Ebrahimio Add PathUtils.getAclEntryList(Path). Thanks to Gary Gregory. 636*0c4d7b72SSadaf Ebrahimio Null-guard IOUtils.close(Closeable, IOConsumer). Thanks to Gary Gregory. 637*0c4d7b72SSadaf Ebrahimio Add ReversedLinesFileReader.readLines(int). Thanks to Gary Gregory. 638*0c4d7b72SSadaf Ebrahimio Add ReversedLinesFileReader.toString(int). Thanks to Gary Gregory. 639*0c4d7b72SSadaf Ebrahimio IO-684: Add PathUtils.delete(Path, DeleteOption...). 640*0c4d7b72SSadaf Ebrahimi Add PathUtils.deleteDirectory(Path, DeleteOption...). 641*0c4d7b72SSadaf Ebrahimi Add PathUtils.deleteFile(Path, DeleteOption...). 642*0c4d7b72SSadaf Ebrahimi Add PathUtils.setReadOnly(Path, boolean, LinkOption...). 643*0c4d7b72SSadaf Ebrahimi Add CleaningPathVisitor.CleaningPathVisitor(PathCounters, DeleteOption[], String...). 644*0c4d7b72SSadaf Ebrahimi Add DeletingPathVisitor.DeletingPathVisitor(PathCounters, DeleteOption[], String...). Thanks to Gary Gregory, Robin Jansohn. 645*0c4d7b72SSadaf Ebrahimio Add RandomAccessFileInputStream. Thanks to Gary Gregory. 646*0c4d7b72SSadaf Ebrahimio IO-681: IOUtils.close(Closeable) should allow a list of closeables. 647*0c4d7b72SSadaf Ebrahimio Add IOUtils.consume(InputStream). Thanks to Gary Gregory. 648*0c4d7b72SSadaf Ebrahimio IO-676: Add isFileNewer() and isFileOlder() methods that support the Java 8 Date/Time API. #124. Thanks to Isira Seneviratne, Gary Gregory. 649*0c4d7b72SSadaf Ebrahimio Add a MarkShieldInputStream #119. Thanks to Adam Retter, Gary Gregory. 650*0c4d7b72SSadaf Ebrahimio Deprecate IOUtils.LINE_SEPARATOR in favor of Java 7's System.lineSeparator(). Thanks to Gary Gregory. 651*0c4d7b72SSadaf Ebrahimi 652*0c4d7b72SSadaf EbrahimiFixed Bugs: 653*0c4d7b72SSadaf Ebrahimio CharSequenceReader.skip should return 0 instead of EOF on stream end #123. Thanks to Rob Spoor, Jochen Wiedmann. 654*0c4d7b72SSadaf Ebrahimio Implement CharSequenceReader.ready() #122. Thanks to Rob Spoor. 655*0c4d7b72SSadaf Ebrahimio IO-669: Fix code smells; fix typos #115. Thanks to XenoAmess, Gary Gregory. 656*0c4d7b72SSadaf Ebrahimio Add caching for required charsets #120. Thanks to Jerome Wolff, Gary Gregory. 657*0c4d7b72SSadaf Ebrahimio IO-673: Make some simplifications #121. Thanks to Jerome Wolff. 658*0c4d7b72SSadaf Ebrahimio IO-674: InfiniteCircularInputStream is not infinite if its input buffer contains -1. Thanks to Gary Gregory. 659*0c4d7b72SSadaf Ebrahimio IO-675: InfiniteCircularInputStream throws a divide-by-zero exception when reading if its input buffer is size 0. Thanks to Gary Gregory. 660*0c4d7b72SSadaf Ebrahimio IO-677: FileSystem.getCurrent() does not return the correct enum. Thanks to Gary Gregory. 661*0c4d7b72SSadaf Ebrahimio IO-679: input.AbstractCharacterFilterReader passes count of chars read #132. Thanks to proneel. 662*0c4d7b72SSadaf Ebrahimio IO-683: CircularBufferInputStream.read() fails to convert byte to unsigned int 663*0c4d7b72SSadaf Ebrahimio Fix SpotBugs issues in org.apache.commons.io.FileUtils. Thanks to Gary Gregory. 664*0c4d7b72SSadaf Ebrahimio IO-672: Copying a File sets last modified date to 01 January 1970. 665*0c4d7b72SSadaf Ebrahimio IO-676: Prevent NullPointerException in ReversedLinesFileReader constructors #117. Thanks to Michael Ernst, Gary Gregory. 666*0c4d7b72SSadaf Ebrahimi 667*0c4d7b72SSadaf EbrahimiChanges: 668*0c4d7b72SSadaf Ebrahimio Replace FindBugs with SpotBugs. Thanks to Gary Gregory. 669*0c4d7b72SSadaf Ebrahimio maven-checkstyle-plugin 3.1.0 -> 3.1.1. Thanks to Gary Gregory. 670*0c4d7b72SSadaf Ebrahimio Update tests from org.apache.commons:commons-lang3 3.10 to 3.11. Thanks to Gary Gregory. 671*0c4d7b72SSadaf Ebrahimio Update commons-parent from 50 to 51 #129. Thanks to Gary Gregory. 672*0c4d7b72SSadaf Ebrahimio Update actions/checkout from v1 to v2.3.1 #126. Thanks to Gary Gregory. 673*0c4d7b72SSadaf Ebrahimio Update junit-pioneer from 0.6.0 to 0.8.0, #127, #135. Thanks to Gary Gregory. 674*0c4d7b72SSadaf Ebrahimio Update mockito-core from 3.3.3 to 3.5.9 #128, #133, #145, #149, #151. Thanks to Gary Gregory. 675*0c4d7b72SSadaf Ebrahimio Update spotbugs from 4.0.6 to 4.1.1 #134. Thanks to Dependabot. 676*0c4d7b72SSadaf Ebrahimio Update junit-pioneer from 0.8.0 to 0.9.0 #138. Thanks to Dependabot. 677*0c4d7b72SSadaf Ebrahimio Update actions/checkout from v2.3.1 to v2.3.2 #140. Thanks to Dependabot. 678*0c4d7b72SSadaf Ebrahimio Update actions/setup-java from v1.4.0 to v1.4.2 #141, #148. Thanks to Dependabot. 679*0c4d7b72SSadaf Ebrahimi 680*0c4d7b72SSadaf EbrahimiCompatibility with 2.7: 681*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 682*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 683*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 684*0c4d7b72SSadaf Ebrahimi 685*0c4d7b72SSadaf EbrahimiCommons IO 2.7 requires Java 8. 686*0c4d7b72SSadaf EbrahimiCommons IO 2.6 requires Java 7. 687*0c4d7b72SSadaf EbrahimiCommons IO 2.5 requires Java 6. 688*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6. 689*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6. 690*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5. 691*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3. 692*0c4d7b72SSadaf Ebrahimi 693*0c4d7b72SSadaf EbrahimiHistorical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html 694*0c4d7b72SSadaf Ebrahimi 695*0c4d7b72SSadaf EbrahimiFor complete information on Apache Commons IO, including instructions on how to submit bug reports, 696*0c4d7b72SSadaf Ebrahimipatches, or suggestions for improvement, see the Apache Commons IO website: 697*0c4d7b72SSadaf Ebrahimi 698*0c4d7b72SSadaf Ebrahimihttps://commons.apache.org/proper/commons-io/ 699*0c4d7b72SSadaf Ebrahimi 700*0c4d7b72SSadaf EbrahimiDownload page: https://commons.apache.org/proper/commons-io/download_io.cgi 701*0c4d7b72SSadaf Ebrahimi 702*0c4d7b72SSadaf EbrahimiHave fun! 703*0c4d7b72SSadaf Ebrahimi-Apache Commons Team 704*0c4d7b72SSadaf Ebrahimi 705*0c4d7b72SSadaf Ebrahimi============================================================================== 706*0c4d7b72SSadaf Ebrahimi 707*0c4d7b72SSadaf EbrahimiApache Commons IO 708*0c4d7b72SSadaf EbrahimiVersion 2.7 709*0c4d7b72SSadaf EbrahimiRelease Notes 710*0c4d7b72SSadaf Ebrahimi 711*0c4d7b72SSadaf EbrahimiINTRODUCTION: 712*0c4d7b72SSadaf Ebrahimi 713*0c4d7b72SSadaf EbrahimiCommons IO is a package of Java utility classes like java.io. 714*0c4d7b72SSadaf EbrahimiClasses in this package are considered to be so standard and of such high 715*0c4d7b72SSadaf Ebrahimireuse as to justify existence in java.io. 716*0c4d7b72SSadaf Ebrahimi 717*0c4d7b72SSadaf EbrahimiThe Apache Commons IO library contains utility classes, stream implementations, file filters, 718*0c4d7b72SSadaf Ebrahimifile comparators, endian transformation classes, and much more. 719*0c4d7b72SSadaf Ebrahimi 720*0c4d7b72SSadaf EbrahimiJava 8 required. 721*0c4d7b72SSadaf Ebrahimi 722*0c4d7b72SSadaf EbrahimiChanges in this version include: 723*0c4d7b72SSadaf Ebrahimi 724*0c4d7b72SSadaf EbrahimiNew features: 725*0c4d7b72SSadaf Ebrahimio Adding the CircularBufferInputStream, and the PeekableInputStream. 726*0c4d7b72SSadaf Ebrahimio IO-553: Add org.apache.commons.io.FilenameUtils.isIllegalWindowsFileName(char). 727*0c4d7b72SSadaf Ebrahimio IO-577: Add readers to filter out given characters: CharacterSetFilterReader and CharacterFilterReader. Thanks to Gary Gregory. 728*0c4d7b72SSadaf Ebrahimio IO-594: Add IOUtils copy methods with java.lang.Appendable as the target. Thanks to Gary Gregory. 729*0c4d7b72SSadaf Ebrahimio IO-605: Add class CanExecuteFileFilter. Thanks to Gary Gregory. 730*0c4d7b72SSadaf Ebrahimio IO-578: Support java.nio.Path and non-default file systems for ReversedLinesFileReader (#62). Thanks to Mark Chesney. 731*0c4d7b72SSadaf Ebrahimio IO-608: Add a convenience NullPrintStream. Thanks to Gary Gregory. 732*0c4d7b72SSadaf Ebrahimio IO-612: Add class TeeReader. Thanks to Rob Spoor, Gary Gregory. 733*0c4d7b72SSadaf Ebrahimio IO-613: Add classes ClosedReader and CloseShieldReader. #84. Thanks to Rob Spoor, Gary Gregory. 734*0c4d7b72SSadaf Ebrahimio IO-614: Add classes TaggedWriter, ClosedWriter and BrokenWriter. #86. Thanks to Rob Spoor. 735*0c4d7b72SSadaf Ebrahimio IO-615: Add classes TeeWriter, FilterCollectionWriter, ProxyCollectionWriter, IOExceptionList, IOIndexedException. Thanks to Gary Gregory, Rob Spoor. 736*0c4d7b72SSadaf Ebrahimio IO-616: Add class AppendableWriter. #87. Thanks to Rob Spoor. 737*0c4d7b72SSadaf Ebrahimio IO-617: Add class CloseShieldWriter. #83. Thanks to Rob Spoor, Gary Gregory. 738*0c4d7b72SSadaf Ebrahimio IO-618: Add classes Added TaggedReader, ClosedReader and BrokenReader. #85. Thanks to Rob Spoor. 739*0c4d7b72SSadaf Ebrahimio IO-619: Support sub sequences in CharSequenceReader. #91. Thanks to Rob Spoor. 740*0c4d7b72SSadaf Ebrahimio IO-631: Add a CountingFileVisitor (as the basis for a forthcoming DeletingFileVisitor). Thanks to Gary Gregory. 741*0c4d7b72SSadaf Ebrahimio IO-632: Add PathUtils for operations on NIO Path. Thanks to Gary Gregory. 742*0c4d7b72SSadaf Ebrahimio IO-633: Add DeletingFileVisitor. Thanks to Gary Gregory. 743*0c4d7b72SSadaf Ebrahimio IO-635: Add org.apache.commons.io.IOUtils.close(Closeable). Thanks to Gary Gregory. 744*0c4d7b72SSadaf Ebrahimio IO-636: Add and reuse org.apache.commons.io.IOUtils.closeQuitely(Closeable, Consumer<IOException>). 745*0c4d7b72SSadaf Ebrahimi Add and reuse org.apache.commons.io.IOUtils.close(Closeable, IOConsumer<IOException>). Thanks to Gary Gregory. 746*0c4d7b72SSadaf Ebrahimio IO-645: Add org.apache.commons.io.file.PathUtils.fileContentEquals(Path, Path, OpenOption...). Thanks to Gary Gregory. 747*0c4d7b72SSadaf Ebrahimio IO-458: Add a SequenceReader similar to java.io.SequenceInputStream. Thanks to Gary Gregory, Joshua Gitlin. 748*0c4d7b72SSadaf Ebrahimio IO-648: Implement directory content equality. 100#. Thanks to Gary Gregory. 749*0c4d7b72SSadaf Ebrahimio IO-648: Refactor ByteArrayOutputStream into synchronized and unsynchronized versions #108. Thanks to Adam Retter, Alex Herbert, Gary Gregory. 750*0c4d7b72SSadaf Ebrahimio IO-662: Refactor ByteArrayOutputStream into synchronized and unsynchronized versions #108. Thanks to Adam Retter, Gary Gregory. 751*0c4d7b72SSadaf Ebrahimi 752*0c4d7b72SSadaf EbrahimiFixed Bugs: 753*0c4d7b72SSadaf Ebrahimio IO-589: Some tests fail if the base path contains a space. 754*0c4d7b72SSadaf Ebrahimio IO-582: Make methods in ObservableInputStream.Observer public. Thanks to Bruno Palos. 755*0c4d7b72SSadaf Ebrahimio IO-535: Thread bug in FileAlterationMonitor.stop(int). Thanks to Svetlin Zarev, Anthony Raymond. 756*0c4d7b72SSadaf Ebrahimio IO-557: Perform locale independent upper case conversions. Thanks to luccioman. 757*0c4d7b72SSadaf Ebrahimio IO-570: Missing Javadoc in FilenameUtils causing Travis-CI build to fail. Thanks to Pranet Verma. 758*0c4d7b72SSadaf Ebrahimio IO-571: Remove redundant isDirectory() check in org.apache.commons.io.FileUtils.listFilesAndDirs(File, IOFileFilter, IOFileFilter). Thanks to pranet. 759*0c4d7b72SSadaf Ebrahimio IO-559: FilenameUtils.normalize now verifies hostname syntax in UNC path. 760*0c4d7b72SSadaf Ebrahimio IO-554: FileUtils.copyToFile(InputStream source, File destination) should not close input stream. Thanks to Michele Mariotti. 761*0c4d7b72SSadaf Ebrahimio IO-604: FileUtils.doCopyFile(File, File, boolean) can throw ClosedByInterruptException. Thanks to Gary Gregory. 762*0c4d7b72SSadaf Ebrahimio IO-625: Corrected misleading exception message for FileUtils.copyDirectoryToDirectory. Thanks to Mikko Maunu. 763*0c4d7b72SSadaf Ebrahimio IO-626: A mistake in the FilenameUtils.concat()'s Javadoc about an absolute path. Thanks to Yuji Konishi. 764*0c4d7b72SSadaf Ebrahimio IO-640: NPE in org.apache.commons.io.IOUtils.contentEquals(InputStream, InputStream) when only one input is null. Thanks to Gary Gregory. 765*0c4d7b72SSadaf Ebrahimio IO-641: NPE in org.apache.commons.io.IOUtils.contentEquals(Reader, Reader) when only one input is null. Thanks to Gary Gregory. 766*0c4d7b72SSadaf Ebrahimio IO-643: NPE in org.apache.commons.io.IOUtils.contentEqualsIgnoreEOL(Reader, Reader) when only one input is null. Thanks to Gary Gregory. 767*0c4d7b72SSadaf Ebrahimio IO-644: NPE in org.apache.commons.io.FileUtils.contentEqualsIgnoreEOL(File, File) when only one input is null. Thanks to Gary Gregory. 768*0c4d7b72SSadaf Ebrahimio IO-664: org.apache.commons.io.FileUtils.copyURLToFile(*) open but do not close streams. Thanks to Gary Gregory. 769*0c4d7b72SSadaf Ebrahimi 770*0c4d7b72SSadaf EbrahimiChanges: 771*0c4d7b72SSadaf Ebrahimio IO-572: Refactor duplicate code in org.apache.commons.io.FileUtils. Thanks to Pranet Verma. 772*0c4d7b72SSadaf Ebrahimio IO-580: Update org.apache.commons.io.FilenameUtils.isExtension(String, String[]) to use var args. 773*0c4d7b72SSadaf Ebrahimio IO-701: Make array declaration in ThresholdingOutputStream consistent with other array declarations in the library #77. Thanks to Raymond Tan. 774*0c4d7b72SSadaf Ebrahimio IO-607: Update from Java 7 to Java 8. Thanks to Gary Gregory. 775*0c4d7b72SSadaf Ebrahimio IO-610: Remove throws IOException in method isSymlink() #80. Thanks to Sebastian. 776*0c4d7b72SSadaf Ebrahimio IO-628: Migration to JUnit Jupiter #97. Thanks to Allon Mureinik. 777*0c4d7b72SSadaf Ebrahimio 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. 778*0c4d7b72SSadaf Ebrahimio 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. 779*0c4d7b72SSadaf Ebrahimio IO-634: Make getCause synchronized and use a Deque instead of a Stack #64. Thanks to V�clav Haisman, Bruno P. Kinoshita, Gary Gregory. 780*0c4d7b72SSadaf Ebrahimio Update tests from Apache Commons Lang 3.9 to 3.10. Thanks to Gary Gregory. 781*0c4d7b72SSadaf Ebrahimio Update tests org.junit-pioneer:junit-pioneer 0.3.0 -> 0.6.0. Thanks to Gary Gregory. 782*0c4d7b72SSadaf Ebrahimio Update tests org.junit.jupiter:junit-jupiter 5.5.2 -> 5.6.2. Thanks to Gary Gregory. 783*0c4d7b72SSadaf Ebrahimio Update tests org.mockito:mockito-core 3.0.0 -> 3.3.3. Thanks to Gary Gregory. 784*0c4d7b72SSadaf Ebrahimio IO-666: Normalize internal buffers to 8192 bytes. Thanks to Gary Gregory. 785*0c4d7b72SSadaf Ebrahimio IO-665: Ensure that passing a null InputStream results in NPE with tests #112. Thanks to Otto Fowler, Gary Gregory. 786*0c4d7b72SSadaf Ebrahimio commons.jacoco.version 0.8.4 -> 0.8.5. Thanks to Gary Gregory. 787*0c4d7b72SSadaf Ebrahimio com.github.siom79.japicmp:japicmp-maven-plugin 0.14.1 -> 0.14.3. Thanks to Gary Gregory. 788*0c4d7b72SSadaf Ebrahimio IO-667: Add functional interfaces IOFunction and IOSupplier #110. Thanks to Adam Retter, Gary Gregory. 789*0c4d7b72SSadaf Ebrahimio Support sub sequences in CharSequenceReader #91. Thanks to Rob Spoor, Gary Gregory. 790*0c4d7b72SSadaf Ebrahimio Remove deprecated sudo setting. #113. Thanks to dengliming. 791*0c4d7b72SSadaf Ebrahimi 792*0c4d7b72SSadaf EbrahimiCompatibility with 2.6: 793*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 794*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 795*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 796*0c4d7b72SSadaf Ebrahimi 797*0c4d7b72SSadaf EbrahimiCommons IO 2.7 requires Java 8. 798*0c4d7b72SSadaf EbrahimiCommons IO 2.6 requires Java 7. 799*0c4d7b72SSadaf EbrahimiCommons IO 2.5 requires Java 6. 800*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6. 801*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6. 802*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5. 803*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3. 804*0c4d7b72SSadaf Ebrahimi 805*0c4d7b72SSadaf EbrahimiHistorical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html 806*0c4d7b72SSadaf Ebrahimi 807*0c4d7b72SSadaf EbrahimiFor complete information on Apache Commons IO, including instructions on how to submit bug reports, 808*0c4d7b72SSadaf Ebrahimipatches, or suggestions for improvement, see the Apache Commons IO website: 809*0c4d7b72SSadaf Ebrahimi 810*0c4d7b72SSadaf Ebrahimihttps://commons.apache.org/proper/commons-io/ 811*0c4d7b72SSadaf Ebrahimi 812*0c4d7b72SSadaf EbrahimiDownload page: https://commons.apache.org/proper/commons-io/download_io.cgi 813*0c4d7b72SSadaf Ebrahimi 814*0c4d7b72SSadaf EbrahimiHave fun! 815*0c4d7b72SSadaf Ebrahimi-Apache Commons Team 816*0c4d7b72SSadaf Ebrahimi 817*0c4d7b72SSadaf Ebrahimi============================================================================== 818*0c4d7b72SSadaf Ebrahimi 819*0c4d7b72SSadaf EbrahimiApache Commons IO Version 2.6 820*0c4d7b72SSadaf Ebrahimi 821*0c4d7b72SSadaf EbrahimiINTRODUCTION: 822*0c4d7b72SSadaf Ebrahimi 823*0c4d7b72SSadaf EbrahimiApache Commons IO is a package of Java utility classes like java.io. 824*0c4d7b72SSadaf EbrahimiClasses in this package are considered to be so standard and of such high 825*0c4d7b72SSadaf Ebrahimireuse as to justify existence in java.io. 826*0c4d7b72SSadaf Ebrahimi 827*0c4d7b72SSadaf EbrahimiThe Apache Commons IO library contains utility classes, stream implementations, 828*0c4d7b72SSadaf Ebrahimifile filters, file comparators, endian transformation classes, and much more. 829*0c4d7b72SSadaf Ebrahimi 830*0c4d7b72SSadaf EbrahimiApache Commons IO 2.6 requires at least Java 7 to build and run. 831*0c4d7b72SSadaf Ebrahimi 832*0c4d7b72SSadaf Ebrahimi 833*0c4d7b72SSadaf EbrahimiDEPRECATIONS 834*0c4d7b72SSadaf Ebrahimi============ 835*0c4d7b72SSadaf Ebrahimi 836*0c4d7b72SSadaf EbrahimiAll closeQuietly overloads in org.apache.commons.io.IOUtils have been 837*0c4d7b72SSadaf Ebrahimideprecated. Use the try-with-resources statement or handle suppressed 838*0c4d7b72SSadaf Ebrahimiexceptions manually. 839*0c4d7b72SSadaf Ebrahimi 840*0c4d7b72SSadaf EbrahimiThe class org.apache.commons.io.FileSystemUtils has been deprecated. 841*0c4d7b72SSadaf EbrahimiUse equivalent methods in java.nio.file.FileStore instead, e.g. 842*0c4d7b72SSadaf EbrahimiFiles.getFileStore(Paths.get("/home")).getUsableSpace() or iterate over 843*0c4d7b72SSadaf EbrahimiFileSystems.getDefault().getFileStores(). 844*0c4d7b72SSadaf Ebrahimi 845*0c4d7b72SSadaf Ebrahimi 846*0c4d7b72SSadaf EbrahimiCOMPATIBILITY WITH JAVA 9 847*0c4d7b72SSadaf Ebrahimi================== 848*0c4d7b72SSadaf Ebrahimi 849*0c4d7b72SSadaf EbrahimiThe MANIFEST.MF now contains an additional entry: 850*0c4d7b72SSadaf Ebrahimi 851*0c4d7b72SSadaf Ebrahimi Automatic-Module-Name: org.apache.commons.io 852*0c4d7b72SSadaf Ebrahimi 853*0c4d7b72SSadaf EbrahimiThis should make it possible to use Commons IO 2.6 as a module in the Java 9 854*0c4d7b72SSadaf Ebrahimimodule system. For more information see the corresponding issue: 855*0c4d7b72SSadaf Ebrahimi 856*0c4d7b72SSadaf Ebrahimi https://issues.apache.org/jira/browse/IO-551 857*0c4d7b72SSadaf Ebrahimi 858*0c4d7b72SSadaf EbrahimiBuilding Commons IO 2.6 should work out of the box with the latest Java 9 859*0c4d7b72SSadaf Ebrahimirelease. Please report any Java 9 related issues at: 860*0c4d7b72SSadaf Ebrahimi 861*0c4d7b72SSadaf Ebrahimi https://issues.apache.org/jira/browse/IO 862*0c4d7b72SSadaf Ebrahimi 863*0c4d7b72SSadaf Ebrahimi 864*0c4d7b72SSadaf EbrahimiNEW FEATURES 865*0c4d7b72SSadaf Ebrahimi============ 866*0c4d7b72SSadaf Ebrahimi 867*0c4d7b72SSadaf Ebrahimio IO-551: Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility. 868*0c4d7b72SSadaf Ebrahimio IO-367: Add convenience methods for copyToDirectory. Thanks to James Sawle. 869*0c4d7b72SSadaf Ebrahimio IO-493: Add infinite circular input stream. Thanks to Piotr Turski. 870*0c4d7b72SSadaf Ebrahimio IO-507: Add a ByteOrderUtils class. 871*0c4d7b72SSadaf Ebrahimio IO-518: Add ObservableInputStream. 872*0c4d7b72SSadaf Ebrahimio IO-519: Add MessageDigestCalculatingInputStream. 873*0c4d7b72SSadaf Ebrahimio IO-513: Add convenience methods for reading class path resources. 874*0c4d7b72SSadaf Ebrahimi Thanks to Behrang Saeedzadeh. 875*0c4d7b72SSadaf Ebrahimi 876*0c4d7b72SSadaf EbrahimiFIXED BUGS 877*0c4d7b72SSadaf Ebrahimi========== 878*0c4d7b72SSadaf Ebrahimi 879*0c4d7b72SSadaf Ebrahimio IO-546: ClosedOutputStream#flush should throw. Thanks to Tomas Celaya. 880*0c4d7b72SSadaf Ebrahimio IO-550: Documentation issue, fix 404 Javadoc issues in the description page. 881*0c4d7b72SSadaf Ebrahimi Thanks to Jimi Adrian. 882*0c4d7b72SSadaf Ebrahimio IO-442: Javadoc contradictory for FileFilterUtils.ageFileFilter(cutoff) and 883*0c4d7b72SSadaf Ebrahimi the filter it constructs: AgeFileFilter(cutoff). 884*0c4d7b72SSadaf Ebrahimi Thanks to Simon Robinson. 885*0c4d7b72SSadaf Ebrahimio IO-534: FileUtilTestCase.testForceDeleteDir() should not delete testDirectory 886*0c4d7b72SSadaf Ebrahimi parent. 887*0c4d7b72SSadaf Ebrahimio IO-528: Fix Tailer.run race condition runaway logging. Thanks to Dave Moten. 888*0c4d7b72SSadaf Ebrahimio IO-483: getPrefixLength return -1 if Unix file contains colon. 889*0c4d7b72SSadaf Ebrahimi Thanks to Marko Vasic. 890*0c4d7b72SSadaf Ebrahimio IO-520: FileUtilsTestCase#testContentEqualsIgnoreEOL fails on Windows. 891*0c4d7b72SSadaf Ebrahimio IO-516: .gitattributes not correctly applied. Thanks to Jason Pyeron. 892*0c4d7b72SSadaf Ebrahimio IO-515: Allow Specifying Initial Buffer Size of DeferredFileOutputStream. 893*0c4d7b72SSadaf Ebrahimi Thanks to Brett Lounsbury, Gary Gregory. 894*0c4d7b72SSadaf Ebrahimio IO-512: ThresholdingOutputStream.thresholdReached() results in 895*0c4d7b72SSadaf Ebrahimi FileNotFoundException. Thanks to Ralf Hauser. 896*0c4d7b72SSadaf Ebrahimio IO-511: After a few unit tests, a few newly created directories not cleaned 897*0c4d7b72SSadaf Ebrahimi completely. Thanks to Ahmet Celik. 898*0c4d7b72SSadaf Ebrahimio IO-502: Exceptions are suppressed incorrectly when copying files. 899*0c4d7b72SSadaf Ebrahimi Thanks to Christian Schulte. 900*0c4d7b72SSadaf Ebrahimio IO-503: Update platform requirement to Java 7. 901*0c4d7b72SSadaf Ebrahimio IO-537: BOMInputStream shouldn't sort array of BOMs in-place. 902*0c4d7b72SSadaf Ebrahimi Thanks to Borys Zibrov. 903*0c4d7b72SSadaf Ebrahimi 904*0c4d7b72SSadaf EbrahimiCHANGES 905*0c4d7b72SSadaf Ebrahimi======= 906*0c4d7b72SSadaf Ebrahimi 907*0c4d7b72SSadaf Ebrahimio IO-553: Make code style of hasBOM() consistent with getBOMCharsetName(). 908*0c4d7b72SSadaf Ebrahimi Thanks to Michael Ernst. 909*0c4d7b72SSadaf Ebrahimio IO-542: FileUtils#readFileToByteArray: optimize reading of files with known 910*0c4d7b72SSadaf Ebrahimi size. Thanks to Ilmars Poikans. 911*0c4d7b72SSadaf Ebrahimio IO-547: Throw a IllegalArgumentException instead of NullPointerException in 912*0c4d7b72SSadaf Ebrahimi FileSystemUtils.freeSpaceWindows(). Thanks to Nikhil Shinde, 913*0c4d7b72SSadaf Ebrahimi Michael Ernst, Gary Greory. 914*0c4d7b72SSadaf Ebrahimio IO-506: Deprecate methods FileSystemUtils.freeSpaceKb(). 915*0c4d7b72SSadaf Ebrahimi Thanks to Christian Schulte. 916*0c4d7b72SSadaf Ebrahimio IO-505: Make LineIterator implement Closeable to support try-with-resources 917*0c4d7b72SSadaf Ebrahimi statements. Thanks to Christian Schulte. 918*0c4d7b72SSadaf Ebrahimio IO-504: Deprecated of all IOUtils.closeQuietly() methods and use 919*0c4d7b72SSadaf Ebrahimi try-with-resources internally. Thanks to Christian Schulte. 920*0c4d7b72SSadaf Ebrahimi 921*0c4d7b72SSadaf EbrahimiREMOVED 922*0c4d7b72SSadaf Ebrahimi======= 923*0c4d7b72SSadaf Ebrahimi 924*0c4d7b72SSadaf Ebrahimio IO-514: Remove org.apache.commons.io.Java7Support. 925*0c4d7b72SSadaf Ebrahimi 926*0c4d7b72SSadaf EbrahimiCOMPATIBILITY WITH OLDER VERSIONS 927*0c4d7b72SSadaf Ebrahimi================================= 928*0c4d7b72SSadaf Ebrahimi 929*0c4d7b72SSadaf EbrahimiCompatibility with 2.5: 930*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 931*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 932*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 933*0c4d7b72SSadaf Ebrahimi 934*0c4d7b72SSadaf EbrahimiCompatibility with 2.6 and 1.4: 935*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 936*0c4d7b72SSadaf EbrahimiSource compatible: No, see the rare case in 937*0c4d7b72SSadaf Ebrahimi https://issues.apache.org/jira/browse/IO-318. 938*0c4d7b72SSadaf EbrahimiSemantic compatible: No, see the rare case in 939*0c4d7b72SSadaf Ebrahimi https://issues.apache.org/jira/browse/IO-318. 940*0c4d7b72SSadaf Ebrahimi 941*0c4d7b72SSadaf EbrahimiCommons IO 2.6 requires Java 7 or later. 942*0c4d7b72SSadaf EbrahimiCommons IO 2.5 requires Java 6 or later. 943*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6 or later. 944*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6 or later. 945*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5 or later. 946*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3 or later. 947*0c4d7b72SSadaf Ebrahimi 948*0c4d7b72SSadaf Ebrahimi============================================================================== 949*0c4d7b72SSadaf Ebrahimi 950*0c4d7b72SSadaf EbrahimiApache Commons IO Version 2.5 951*0c4d7b72SSadaf Ebrahimi 952*0c4d7b72SSadaf EbrahimiNew features and bug fixes. 953*0c4d7b72SSadaf Ebrahimi 954*0c4d7b72SSadaf EbrahimiChanges in this version include: 955*0c4d7b72SSadaf Ebrahimi 956*0c4d7b72SSadaf EbrahimiNew features: 957*0c4d7b72SSadaf Ebrahimio IO-487: Add ValidatingObjectInputStream for controlled deserialization 958*0c4d7b72SSadaf Ebrahimio IO-471: Support for additional encodings in ReversedLinesFileReader Thanks to Leandro Reis. 959*0c4d7b72SSadaf Ebrahimio IO-425: Setter method for threshold on ThresholdingOutputStream Thanks to Craig Swank. 960*0c4d7b72SSadaf Ebrahimio IO-406: Introduce new class AppendableOutputStream Thanks to Niall Pemberton. 961*0c4d7b72SSadaf Ebrahimio IO-459: Add WindowsLineEndingInputStream and UnixLineEndingInputStream. Thanks to Kristian Rosenvold. 962*0c4d7b72SSadaf Ebrahimio IO-457: Add a BoundedReader, a wrapper that can be used to constrain access 963*0c4d7b72SSadaf Ebrahimi to an underlying stream when used with mark/reset - 964*0c4d7b72SSadaf Ebrahimi to avoid overflowing the mark limit of the underlying buffer. Thanks to Kristian Rosenvold. 965*0c4d7b72SSadaf Ebrahimio IO-426: Add API IOUtils.closeQuietly(Closeable...) 966*0c4d7b72SSadaf Ebrahimio IO-410: Readfully() That Returns A Byte Array Thanks to Beluga Behr. 967*0c4d7b72SSadaf Ebrahimio IO-395: Overload IOUtils buffer methods to accept buffer size Thanks to Beluga Behr. 968*0c4d7b72SSadaf Ebrahimio IO-382: Chunked IO for large arrays. 969*0c4d7b72SSadaf Ebrahimi Added writeChunked(byte[], OutputStream) and writeChunked(char[] Writer) 970*0c4d7b72SSadaf Ebrahimi Added ChunkedOutputStream, ChunkedWriter 971*0c4d7b72SSadaf Ebrahimio IO-233: Add Methods for Buffering Streams/Writers To IOUtils 972*0c4d7b72SSadaf Ebrahimi Added overloaded buffer() methods - see also IO-330 973*0c4d7b72SSadaf Ebrahimio IO-330: IOUtils#toBufferedOutputStream/toBufferedWriter to conditionally wrap the output 974*0c4d7b72SSadaf Ebrahimi Added overloaded buffer() methods - see also IO-233 975*0c4d7b72SSadaf Ebrahimio IO-381: Add FileUtils.copyInputStreamToFile API with option to leave the source open. 976*0c4d7b72SSadaf Ebrahimi See copyInputStreamToFile(final InputStream source, final File destination, boolean closeSource) 977*0c4d7b72SSadaf Ebrahimio IO-379: CharSequenceInputStream - add tests for available() 978*0c4d7b72SSadaf Ebrahimi Fix code so it really does reflect a minimum available. 979*0c4d7b72SSadaf Ebrahimio IO-346: Add ByteArrayOutputStream.toInputStream() 980*0c4d7b72SSadaf Ebrahimio IO-341: A constant for holding the BOM character (U+FEFF) 981*0c4d7b72SSadaf Ebrahimio IO-361: Add API FileUtils.forceMkdirsParent(). 982*0c4d7b72SSadaf Ebrahimio IO-360: Add API Charsets.requiredCharsets(). 983*0c4d7b72SSadaf Ebrahimio IO-359: Add IOUtils.skip and skipFully(ReadableByteChannel, long). Thanks to yukoba. 984*0c4d7b72SSadaf Ebrahimio IO-358: Add IOUtils.read and readFully(ReadableByteChannel, ByteBuffer buffer). Thanks to yukoba. 985*0c4d7b72SSadaf Ebrahimio IO-353: Add API IOUtils.copy(InputStream, OutputStream, int) Thanks to ggregory. 986*0c4d7b72SSadaf Ebrahimio IO-349: Add API with array offset and length argument to FileUtils.writeByteArrayToFile. Thanks to scop. 987*0c4d7b72SSadaf Ebrahimio IO-348: Missing information in IllegalArgumentException thrown by org.apache.commons.io.FileUtils#validateListFilesParameters. Thanks to plcstpierre. 988*0c4d7b72SSadaf Ebrahimio IO-345: Supply a hook method allowing Tailer actively determining stop condition. Thanks to mkresse. 989*0c4d7b72SSadaf Ebrahimio IO-437: Make IOUtils.EOF public and reuse it in various classes. 990*0c4d7b72SSadaf Ebrahimi 991*0c4d7b72SSadaf EbrahimiFixed Bugs: 992*0c4d7b72SSadaf Ebrahimio IO-446: adds an endOfFileReached method to the TailerListener Thanks to Jeffrey Barrus. 993*0c4d7b72SSadaf Ebrahimio IO-484: FilenameUtils should handle embedded null bytes Thanks to Philippe Arteau. 994*0c4d7b72SSadaf Ebrahimio IO-481: Changed/Corrected algorithm for waitFor 995*0c4d7b72SSadaf Ebrahimio IO-428: BOMInputStream.skip returns wrong count if stream contains no BOM Thanks to Stefan Gmeiner. 996*0c4d7b72SSadaf Ebrahimio IO-488: FileUtils.waitFor(...) swallows thread interrupted status Thanks to Bj�rn Buchner. 997*0c4d7b72SSadaf Ebrahimio IO-452: Support for symlinks with missing target. Added support for JDK7 symlink features when present Thanks to David Standish. 998*0c4d7b72SSadaf Ebrahimio IO-453: Regression in FileUtils.readFileToString from 2.0.1 Thanks to Steven Christou. 999*0c4d7b72SSadaf Ebrahimio IO-451: ant test fails - resources missing from test classpath Thanks to David Standish. 1000*0c4d7b72SSadaf Ebrahimio IO-435: Document that FileUtils.deleteDirectory, directoryContains and cleanDirectory 1001*0c4d7b72SSadaf Ebrahimi may throw an IllegalArgumentException in case the passed directory does not 1002*0c4d7b72SSadaf Ebrahimi exist or is not a directory. Thanks to Dominik Stadler. 1003*0c4d7b72SSadaf Ebrahimio IO-424: Javadoc fixes, mostly to appease 1.8.0 Thanks to Ville Skytt�. 1004*0c4d7b72SSadaf Ebrahimio IO-389: FileUtils.sizeOfDirectory can throw IllegalArgumentException Thanks to Austin Doupnik. 1005*0c4d7b72SSadaf Ebrahimio IO-390: FileUtils.sizeOfDirectoryAsBigInteger can overflow. 1006*0c4d7b72SSadaf Ebrahimi Ensure that recursive calls all use BigInteger 1007*0c4d7b72SSadaf Ebrahimio IO-385: FileUtils.doCopyFile can potentially loop for ever 1008*0c4d7b72SSadaf Ebrahimi Exit loop if no data to copy 1009*0c4d7b72SSadaf Ebrahimio IO-383: FileUtils.doCopyFile caches the file size; needs to be documented 1010*0c4d7b72SSadaf Ebrahimi Added Javadoc; show file lengths in exception message 1011*0c4d7b72SSadaf Ebrahimio IO-380: FileUtils.copyInputStreamToFile should document it closes the input source Thanks to claudio_ch. 1012*0c4d7b72SSadaf Ebrahimio IO-279: Tailer erroneously considers file as new. 1013*0c4d7b72SSadaf Ebrahimi Fix to use file.lastModified() rather than System.currentTimeMillis() 1014*0c4d7b72SSadaf Ebrahimio IO-356: CharSequenceInputStream#reset() behaves incorrectly in case when buffer size is not dividable by data size. 1015*0c4d7b72SSadaf Ebrahimi Fix code so skip relates to the encoded bytes; reset now re-encodes the data up to the point of the mark 1016*0c4d7b72SSadaf Ebrahimio IO-368: ClassLoaderObjectInputStream does not handle primitive typed members 1017*0c4d7b72SSadaf Ebrahimio IO-314: Deprecate all methods that use the default encoding 1018*0c4d7b72SSadaf Ebrahimio IO-338: When a file is rotated, finish reading previous file prior to starting new one 1019*0c4d7b72SSadaf Ebrahimio IO-354: Commons IO Tailer does not respect UTF-8 Charset. 1020*0c4d7b72SSadaf Ebrahimio IO-323: What should happen in FileUtils.sizeOf[Directory] when an overflow takes place? 1021*0c4d7b72SSadaf Ebrahimi Added Javadoc. 1022*0c4d7b72SSadaf Ebrahimio IO-372: FileUtils.moveDirectory can produce misleading error message on failure 1023*0c4d7b72SSadaf Ebrahimio IO-362: IOUtils.contentEquals* methods returns false if input1 == input2, should return true. Thanks to mmadson, ggregory. 1024*0c4d7b72SSadaf Ebrahimio IO-357: [Tailer] InterruptedException while the thread is sleeping is silently ignored Thanks to mortenh. 1025*0c4d7b72SSadaf Ebrahimio IO-352: Spelling fixes. Thanks to scop. 1026*0c4d7b72SSadaf Ebrahimio IO-436: Improper Javadoc comment for FilenameUtils.indexOfExtension. Thanks to christoph.schneegans. 1027*0c4d7b72SSadaf Ebrahimi 1028*0c4d7b72SSadaf EbrahimiChanges: 1029*0c4d7b72SSadaf Ebrahimio IO-433: Converted all testcases to JUnit 4 1030*0c4d7b72SSadaf Ebrahimio IO-466: Added testcase to show this was fixed with IO-423 1031*0c4d7b72SSadaf Ebrahimio IO-479: Correct exception message in FileUtils.getFile(File, String...) Thanks to Zhouce Chen. 1032*0c4d7b72SSadaf Ebrahimio IO-465: Update to JUnit 4.12 Thanks to based2. 1033*0c4d7b72SSadaf Ebrahimio IO-462: IOExceptionWithCause no longer needed 1034*0c4d7b72SSadaf Ebrahimio IO-422: Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets 1035*0c4d7b72SSadaf Ebrahimio IO-239: Convert IOCase to a Java 1.5+ Enumeration 1036*0c4d7b72SSadaf Ebrahimi [N.B. this is binary compatible] 1037*0c4d7b72SSadaf Ebrahimio IO-328: getPrefixLength returns null if filename has leading slashes 1038*0c4d7b72SSadaf Ebrahimi Javadoc: add examples to show correct behavior; add unit tests 1039*0c4d7b72SSadaf Ebrahimio IO-299: FileUtils.listFilesAndDirs includes original dir in results even when it doesn't match filter 1040*0c4d7b72SSadaf Ebrahimi Javadoc: clarify that original dir is included in the results 1041*0c4d7b72SSadaf Ebrahimio IO-375: FilenameUtils.splitOnTokens(String text) check for '**' could be simplified 1042*0c4d7b72SSadaf Ebrahimio IO-374: WildcardFileFilter ctors should not use null to mean IOCase.SENSITIVE when delegating to other ctors 1043*0c4d7b72SSadaf Ebrahimi 1044*0c4d7b72SSadaf EbrahimiCompatibility with 2.4: 1045*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 1046*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 1047*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 1048*0c4d7b72SSadaf Ebrahimi 1049*0c4d7b72SSadaf EbrahimiCompatibility with 2.2 and 1.4: 1050*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 1051*0c4d7b72SSadaf EbrahimiSource compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. 1052*0c4d7b72SSadaf EbrahimiSemantic compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. 1053*0c4d7b72SSadaf Ebrahimi 1054*0c4d7b72SSadaf EbrahimiCommons IO 2.5 requires Java 6 or later. 1055*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6 or later. 1056*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6 or later. 1057*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5 or later. 1058*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3 or later. 1059*0c4d7b72SSadaf Ebrahimi 1060*0c4d7b72SSadaf Ebrahimi============================================================================== 1061*0c4d7b72SSadaf Ebrahimi 1062*0c4d7b72SSadaf EbrahimiApache Commons IO Version 2.4 1063*0c4d7b72SSadaf Ebrahimi 1064*0c4d7b72SSadaf EbrahimiChanges in this version include: 1065*0c4d7b72SSadaf Ebrahimi 1066*0c4d7b72SSadaf EbrahimiNew features: 1067*0c4d7b72SSadaf Ebrahimio IO-269: Tailer locks file from deletion/rename on Windows. Thanks to 1068*0c4d7b72SSadaf Ebrahimisebb. 1069*0c4d7b72SSadaf Ebrahimio IO-333: Export OSGi packages at version 1.x in addition to 2.x. Thanks 1070*0c4d7b72SSadaf Ebrahimito fmeschbe. 1071*0c4d7b72SSadaf Ebrahimio IO-320: Add XmlStreamReader support for UTF-32. Thanks to ggregory. 1072*0c4d7b72SSadaf Ebrahimio IO-331: BOMInputStream wrongly detects UTF-32LE_BOM files as 1073*0c4d7b72SSadaf EbrahimiUTF-16LE_BOM files in method getBOM(). Thanks to ggregory. 1074*0c4d7b72SSadaf Ebrahimio IO-327: Add byteCountToDisplaySize(BigInteger). Thanks to ggregory. 1075*0c4d7b72SSadaf Ebrahimio IO-326: Add new FileUtils.sizeOf[Directory] APIs to return BigInteger. 1076*0c4d7b72SSadaf EbrahimiThanks to ggregory. 1077*0c4d7b72SSadaf Ebrahimio IO-325: Add IOUtils.toByteArray methods to work with URL and URI. Thanks 1078*0c4d7b72SSadaf Ebrahimito raviprak. 1079*0c4d7b72SSadaf Ebrahimio IO-324: Add missing Charset sister APIs to method that take a String 1080*0c4d7b72SSadaf Ebrahimicharset name. Thanks to raviprak. 1081*0c4d7b72SSadaf Ebrahimi 1082*0c4d7b72SSadaf EbrahimiFixed Bugs: 1083*0c4d7b72SSadaf Ebrahimio IO-336: Yottabyte (YB) incorrectly defined in FileUtils. Thanks to 1084*0c4d7b72SSadaf Ebrahimirleavelle. 1085*0c4d7b72SSadaf Ebrahimio IO-279: Tailer erroneously considers file as new. Thanks to Sergio 1086*0c4d7b72SSadaf EbrahimiBossa, Chris Baron. 1087*0c4d7b72SSadaf Ebrahimio IO-335: Tailer#readLines - incorrect CR handling. 1088*0c4d7b72SSadaf Ebrahimio IO-334: FileUtils.toURLs throws NPE for null parameter; document the 1089*0c4d7b72SSadaf Ebrahimibehavior. 1090*0c4d7b72SSadaf Ebrahimio IO-332: Improve tailer's reading performance. Thanks to liangly. 1091*0c4d7b72SSadaf Ebrahimio IO-279: Improve Tailer performance with buffered reads (see IO-332). 1092*0c4d7b72SSadaf Ebrahimio IO-329: FileUtils.writeLines uses unbuffered IO. Thanks to tivv. 1093*0c4d7b72SSadaf Ebrahimio IO-319: FileUtils.sizeOfDirectory follows symbolic links. Thanks to 1094*0c4d7b72SSadaf Ebrahimiraviprak. 1095*0c4d7b72SSadaf Ebrahimi 1096*0c4d7b72SSadaf Ebrahimi 1097*0c4d7b72SSadaf EbrahimiCompatibility with 2.3: 1098*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 1099*0c4d7b72SSadaf EbrahimiSource compatible: Yes. 1100*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. 1101*0c4d7b72SSadaf Ebrahimi 1102*0c4d7b72SSadaf EbrahimiCompatibility with 2.2 and 1.4: 1103*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 1104*0c4d7b72SSadaf EbrahimiSource compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. 1105*0c4d7b72SSadaf EbrahimiSemantic compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. 1106*0c4d7b72SSadaf Ebrahimi 1107*0c4d7b72SSadaf EbrahimiCommons IO 2.4 requires Java 6 or later. 1108*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6 or later. 1109*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5 or later. 1110*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3 or later. 1111*0c4d7b72SSadaf Ebrahimi 1112*0c4d7b72SSadaf Ebrahimi============================================================================== 1113*0c4d7b72SSadaf Ebrahimi 1114*0c4d7b72SSadaf EbrahimiApache Commons IO Version 2.3 1115*0c4d7b72SSadaf Ebrahimi 1116*0c4d7b72SSadaf EbrahimiChanges in this version include: 1117*0c4d7b72SSadaf Ebrahimi 1118*0c4d7b72SSadaf EbrahimiNew features: 1119*0c4d7b72SSadaf Ebrahimio IO-322: Add and use class Charsets. Thanks to ggregory. 1120*0c4d7b72SSadaf Ebrahimio IO-321: ByteOrderMark UTF_32LE is incorrect. Thanks to ggregory. 1121*0c4d7b72SSadaf Ebrahimio IO-318: Add Charset sister APIs to method that take a String charset name. Thanks to ggregory. 1122*0c4d7b72SSadaf Ebrahimi 1123*0c4d7b72SSadaf EbrahimiCompatibility with 2.2 and 1.4: 1124*0c4d7b72SSadaf EbrahimiBinary compatible: Yes. 1125*0c4d7b72SSadaf EbrahimiSource compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. 1126*0c4d7b72SSadaf EbrahimiSemantic compatible: No, see the rare case in https://issues.apache.org/jira/browse/IO-318. 1127*0c4d7b72SSadaf Ebrahimi 1128*0c4d7b72SSadaf EbrahimiCommons IO 2.3 requires Java 6 or later. 1129*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires Java 5 or later. 1130*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires Java 1.3 or later. 1131*0c4d7b72SSadaf Ebrahimi 1132*0c4d7b72SSadaf Ebrahimi============================================================================== 1133*0c4d7b72SSadaf Ebrahimi 1134*0c4d7b72SSadaf EbrahimiApache Commons IO Version 2.2 1135*0c4d7b72SSadaf Ebrahimi 1136*0c4d7b72SSadaf EbrahimiChanges in this version include: 1137*0c4d7b72SSadaf Ebrahimi 1138*0c4d7b72SSadaf EbrahimiNew features: 1139*0c4d7b72SSadaf Ebrahimio Add IOUtils.toBufferedReader(Reader) Issue: IO-313. Thanks to ggregory. 1140*0c4d7b72SSadaf Ebrahimio Allow applications to provide buffer (or size) for copyLarge methods. Issue: IO-308. Thanks to Manoj Mokashi. 1141*0c4d7b72SSadaf Ebrahimio New copyLarge() method in IOUtils that takes additional offset, length arguments Issue: IO-305. Thanks to Manoj Mokashi. 1142*0c4d7b72SSadaf Ebrahimio Use terabyte (TB), petabyte (PB) and exabyte (EB) in FileUtils.byteCountToDisplaySize(long size) Issue: IO-287. Thanks to Ron Kuris, Gary Gregory. 1143*0c4d7b72SSadaf Ebrahimio FileUtils.listFiles() doesn't return directories Issue: IO-173. Thanks to Marcos Vin�cius da Silva. 1144*0c4d7b72SSadaf Ebrahimio CharSequenceInputStream to efficiently stream content of a CharSequence Issue: IO-297. Thanks to Oleg Kalnichevski. 1145*0c4d7b72SSadaf Ebrahimio The second constructor of Tailer class does not pass 'delay' to the third one Issue: IO-304. Thanks to liangly. 1146*0c4d7b72SSadaf Ebrahimio TeeOutputStream does not call branch.close() when main.close() throws an exception Issue: IO-303. Thanks to fabian.barney. 1147*0c4d7b72SSadaf Ebrahimio ArrayIndexOutOfBoundsException in BOMInputStream when reading a file without BOM multiple times Issue: IO-302. Thanks to jsteuerwald, detinho. 1148*0c4d7b72SSadaf Ebrahimio Add IOUtils.closeQuietly(Selector) necessary Issue: IO-301. Thanks to kaykay.unique. 1149*0c4d7b72SSadaf Ebrahimio IOUtils.closeQuietly() should take a ServerSocket as a parameter Issue: IO-292. Thanks to sebb. 1150*0c4d7b72SSadaf Ebrahimio Add read/readFully methods to IOUtils Issue: IO-290. Thanks to sebb. 1151*0c4d7b72SSadaf Ebrahimio Supply a ReversedLinesFileReader Issue: IO-288. Thanks to Georg Henzler. 1152*0c4d7b72SSadaf Ebrahimio Add new function FileUtils.directoryContains. Issue: IO-291. Thanks to ggregory. 1153*0c4d7b72SSadaf Ebrahimio FileUtils.contentEquals and IOUtils.contentEquals - Add option to ignore "line endings" 1154*0c4d7b72SSadaf Ebrahimi Added contentEqualsIgnoreEOL methods to both classes Issue: IO-275. Thanks to CJ Aspromgos. 1155*0c4d7b72SSadaf Ebrahimi 1156*0c4d7b72SSadaf EbrahimiFixed Bugs: 1157*0c4d7b72SSadaf Ebrahimio IOUtils.read(InputStream/Reader) ignores the offset parameter Issue: IO-311. Thanks to Robert Muir. 1158*0c4d7b72SSadaf Ebrahimio CharSequenceInputStream(CharSequence s, Charset charset, int bufferSize) ignores bufferSize Issue: IO-312. 1159*0c4d7b72SSadaf Ebrahimio FileUtils.moveDirectoryToDirectory removes source directory if destination is a subdirectory Issue: IO-300. 1160*0c4d7b72SSadaf Ebrahimio ReaderInputStream#read(byte[] b, int off, int len) should check for valid parameters Issue: IO-307. 1161*0c4d7b72SSadaf Ebrahimio ReaderInputStream#read(byte[] b, int off, int len) should always return 0 for length == 0 Issue: IO-306. 1162*0c4d7b72SSadaf Ebrahimio "FileUtils#deleteDirectoryOnExit(File)" does not work Issue: IO-276. Thanks to nkami. 1163*0c4d7b72SSadaf Ebrahimio BoundedInputStream.read() treats max differently from BoundedInputStream.read(byte[]...) Issue: IO-273. Thanks to sebb. 1164*0c4d7b72SSadaf Ebrahimio Various methods of class 'org.apache.commons.io.FileUtils' incorrectly suppress 'java.io.IOException' Issue: IO-298. Thanks to Christian Schulte. 1165*0c4d7b72SSadaf Ebrahimi 1166*0c4d7b72SSadaf EbrahimiChanges: 1167*0c4d7b72SSadaf Ebrahimio ReaderInputStream optimization: more efficient reading of small chunks of data Issue: IO-296. Thanks to Oleg Kalnichevski. 1168*0c4d7b72SSadaf Ebrahimi 1169*0c4d7b72SSadaf Ebrahimi 1170*0c4d7b72SSadaf EbrahimiCompatibility with 2.1 and 1.4: 1171*0c4d7b72SSadaf EbrahimiBinary compatible: Yes 1172*0c4d7b72SSadaf EbrahimiSource compatible: Yes 1173*0c4d7b72SSadaf EbrahimiSemantic compatible: Yes. Check the bug fixes section for semantic bug fixes 1174*0c4d7b72SSadaf Ebrahimi 1175*0c4d7b72SSadaf EbrahimiCommons IO 2.2 requires a minimum of Java 5. 1176*0c4d7b72SSadaf EbrahimiCommons IO 1.4 requires a minimum of Java 1.3. 1177*0c4d7b72SSadaf Ebrahimi 1178*0c4d7b72SSadaf Ebrahimi============================================================================== 1179*0c4d7b72SSadaf Ebrahimi 1180*0c4d7b72SSadaf EbrahimiApache Commons IO Version 2.1 1181*0c4d7b72SSadaf Ebrahimi 1182*0c4d7b72SSadaf EbrahimiNew features: 1183*0c4d7b72SSadaf Ebrahimio Use standard Maven directory layout Issue: IO-285. Thanks to ggregory. 1184*0c4d7b72SSadaf Ebrahimio Add IOUtils API toString for URL and URI to get contents Issue: IO-284. Thanks to ggregory. 1185*0c4d7b72SSadaf Ebrahimio Add API FileUtils.copyFile(File input, OutputStream output) Issue: IO-282. Thanks to ggregory. 1186*0c4d7b72SSadaf Ebrahimio FileAlterationObserver has no getter for FileFilter Issue: IO-262. 1187*0c4d7b72SSadaf Ebrahimio Add FileUtils.getFile API with varargs parameter Issue: IO-261. 1188*0c4d7b72SSadaf Ebrahimio Add new APPEND parameter for writing string into files Issue: IO-182. 1189*0c4d7b72SSadaf Ebrahimio Add new read method "toByteArray" to handle InputStream with known size. Issue: IO-251. Thanks to Marco Albini. 1190*0c4d7b72SSadaf Ebrahimi 1191*0c4d7b72SSadaf EbrahimiFixed Bugs: 1192*0c4d7b72SSadaf Ebrahimio Dubious use of mkdirs() return code Issue: IO-280. Thanks to sebb. 1193*0c4d7b72SSadaf Ebrahimio ReaderInputStream enters infinite loop when it encounters an unmappable character Issue: IO-277. 1194*0c4d7b72SSadaf Ebrahimio FileUtils.moveFile() Javadoc should specify FileExistsException thrown Issue: IO-264. 1195*0c4d7b72SSadaf Ebrahimio ClassLoaderObjectInputStream does not handle Proxy classes Issue: IO-260. 1196*0c4d7b72SSadaf Ebrahimio Tailer returning partial lines when reaching EOF before EOL Issue: IO-274. Thanks to Frank Grimes. 1197*0c4d7b72SSadaf Ebrahimio FileUtils.copyFile() throws IOException when copying large files to a shared directory (on Windows) Issue: IO-266. Thanks to Igor Smereka. 1198*0c4d7b72SSadaf Ebrahimio FileSystemUtils.freeSpaceKb throws exception for Windows volumes with no visible files. 1199*0c4d7b72SSadaf Ebrahimi Improve coverage by also looking for hidden files. Issue: IO-263. Thanks to Gil Adam. 1200*0c4d7b72SSadaf Ebrahimi 1201*0c4d7b72SSadaf EbrahimiChanges: 1202*0c4d7b72SSadaf Ebrahimio FileAlterationMonitor.stop(boolean allowIntervalToFinish) Issue: IO-259. 1203*0c4d7b72SSadaf Ebrahimi 1204*0c4d7b72SSadaf Ebrahimi============================================================================== 1205*0c4d7b72SSadaf Ebrahimi 1206*0c4d7b72SSadaf EbrahimiApache Commons IO Package 2.0.1 1207*0c4d7b72SSadaf Ebrahimi 1208*0c4d7b72SSadaf EbrahimiCompatibility with 2.0 and 1.4 1209*0c4d7b72SSadaf Ebrahimi------------------------------ 1210*0c4d7b72SSadaf EbrahimiBinary compatible - Yes 1211*0c4d7b72SSadaf Ebrahimi 1212*0c4d7b72SSadaf EbrahimiSource compatible - Yes 1213*0c4d7b72SSadaf Ebrahimi 1214*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes 1215*0c4d7b72SSadaf Ebrahimi Check the bug fixes section for semantic bug fixes 1216*0c4d7b72SSadaf Ebrahimi 1217*0c4d7b72SSadaf EbrahimiCommons IO 2.0.1 requires a minimum of Java 5 1218*0c4d7b72SSadaf Ebrahimi (Commons IO 1.4 had a minimum of Java 1.3) 1219*0c4d7b72SSadaf Ebrahimi 1220*0c4d7b72SSadaf EbrahimiEnhancements from 2.0 1221*0c4d7b72SSadaf Ebrahimi--------------------- 1222*0c4d7b72SSadaf Ebrahimi 1223*0c4d7b72SSadaf Ebrahimi * [IO-256] - Provide thread factory for FileAlternationMonitor 1224*0c4d7b72SSadaf Ebrahimi 1225*0c4d7b72SSadaf EbrahimiBug fixes from 2.0 1226*0c4d7b72SSadaf Ebrahimi------------------ 1227*0c4d7b72SSadaf Ebrahimi 1228*0c4d7b72SSadaf Ebrahimi * [IO-257] - BOMInputStream.read(byte[]) can return 0 which it should not 1229*0c4d7b72SSadaf Ebrahimi * [IO-258] - XmlStreamReader consumes the stream during encoding detection 1230*0c4d7b72SSadaf Ebrahimi 1231*0c4d7b72SSadaf Ebrahimi============================================================================== 1232*0c4d7b72SSadaf Ebrahimi 1233*0c4d7b72SSadaf EbrahimiApache Commons IO Package 2.0 1234*0c4d7b72SSadaf Ebrahimi 1235*0c4d7b72SSadaf EbrahimiCompatibility with 1.4 1236*0c4d7b72SSadaf Ebrahimi---------------------- 1237*0c4d7b72SSadaf EbrahimiBinary compatible - Yes 1238*0c4d7b72SSadaf Ebrahimi 1239*0c4d7b72SSadaf EbrahimiSource compatible - Yes 1240*0c4d7b72SSadaf Ebrahimi 1241*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes 1242*0c4d7b72SSadaf Ebrahimi Check the bug fixes section for semantic bug fixes 1243*0c4d7b72SSadaf Ebrahimi 1244*0c4d7b72SSadaf EbrahimiCommons IO 2.0 requires a minimum of Java 5 1245*0c4d7b72SSadaf Ebrahimi (Commons IO 1.4 had a minimum of Java 1.3) 1246*0c4d7b72SSadaf Ebrahimi 1247*0c4d7b72SSadaf EbrahimiDeprecations from 1.4 1248*0c4d7b72SSadaf Ebrahimi--------------------- 1249*0c4d7b72SSadaf Ebrahimi 1250*0c4d7b72SSadaf Ebrahimi- IOUtils 1251*0c4d7b72SSadaf Ebrahimi - write(StringBuffer, Writer) in favour of write(CharSequence, Writer) 1252*0c4d7b72SSadaf Ebrahimi - write(StringBuffer, OutputStream) in favour of write(CharSequence, OutputStream) 1253*0c4d7b72SSadaf Ebrahimi - write(StringBuffer, OutputStream, String) in favour of write(CharSequence, OutputStream, String) 1254*0c4d7b72SSadaf Ebrahimi 1255*0c4d7b72SSadaf Ebrahimi- FileFilterUtils 1256*0c4d7b72SSadaf Ebrahimi - andFileFilter(IOFileFilter, IOFileFilter) in favour of and(IOFileFilter...) 1257*0c4d7b72SSadaf Ebrahimi - orFileFilter(IOFileFilter, IOFileFilter) in favour of or(IOFileFilter...) 1258*0c4d7b72SSadaf Ebrahimi 1259*0c4d7b72SSadaf EbrahimiEnhancements from 1.4 1260*0c4d7b72SSadaf Ebrahimi--------------------- 1261*0c4d7b72SSadaf Ebrahimi 1262*0c4d7b72SSadaf Ebrahimi * [IO-140] Move minimum Java requirement from Java 1.3 to Java 5 1263*0c4d7b72SSadaf Ebrahimi - use Generics 1264*0c4d7b72SSadaf Ebrahimi - add new CharSequence write() flavour methods to IOUtils and FileUtils 1265*0c4d7b72SSadaf Ebrahimi - replace StringBuffer with StringBuilder, where appropriate 1266*0c4d7b72SSadaf Ebrahimi - add new Reader/Writer methods to ProxyReader and ProxyWriter 1267*0c4d7b72SSadaf Ebrahimi - Annotate with @Override and @Deprecated 1268*0c4d7b72SSadaf Ebrahimi 1269*0c4d7b72SSadaf Ebrahimi * [IO-178] New BOMInputStream and ByteOrderMark implementations - to detect and optionally exclude an initial Byte Order mark (BOM) 1270*0c4d7b72SSadaf Ebrahimi * [IO-197] New BoundedInputStream (copied from Apache JackRabbit) 1271*0c4d7b72SSadaf Ebrahimi * [IO-193] New Broken Input and Output streams 1272*0c4d7b72SSadaf Ebrahimi * [IO-132] New File Listener/Monitor facility 1273*0c4d7b72SSadaf Ebrahimi * [IO-158] New ReaderInputStream and WriterOutputStream implementations 1274*0c4d7b72SSadaf Ebrahimi * [IO-139] New StringBuilder Writer implementation 1275*0c4d7b72SSadaf Ebrahimi * [IO-192] New Tagged Input and Output streams 1276*0c4d7b72SSadaf Ebrahimi * [IO-177] New Tailer class - simple implementation of the Unix "tail -f" functionality 1277*0c4d7b72SSadaf Ebrahimi * [IO-162] New XML Stream Reader/Writer implementations (from ROME via plexus-utils) 1278*0c4d7b72SSadaf Ebrahimi 1279*0c4d7b72SSadaf Ebrahimi * [IO-142] Comparators - add facility to sort file lists/arrays 1280*0c4d7b72SSadaf Ebrahimi * [IO-186] Comparators - new Composite and Directory File Comparator implementations 1281*0c4d7b72SSadaf Ebrahimi * [IO-176] DirectoryWalker - add filterDirectoryContents() callback method for filtering directory contents 1282*0c4d7b72SSadaf Ebrahimi * [IO-210] FileFilter - new Magic Number FileFilter 1283*0c4d7b72SSadaf Ebrahimi * [IO-221] FileFilterUtils - add methods for suffix and prefix filters which take an IOCase object 1284*0c4d7b72SSadaf Ebrahimi * [IO-232] FileFilterUtils - add method for name filters which take an IOCase object 1285*0c4d7b72SSadaf Ebrahimi * [IO-229] FileFilterUtils - add varargs and() and or() methods 1286*0c4d7b72SSadaf Ebrahimi * [IO-198] FileFilterUtils - add ability to apply file filters to collections and arrays 1287*0c4d7b72SSadaf Ebrahimi * [IO-156] FilenameUtils - add normalize() and normalizeNoEndSeparator() methods which allow the separator character to be specified 1288*0c4d7b72SSadaf Ebrahimi * [IO-194] FileSystemUtils - add freeSpaceKb() method with no input arguments 1289*0c4d7b72SSadaf Ebrahimi * [IO-185] FileSystemUtils - add freeSpaceKb() methods that take a timeout parameter - fixes freeSpaceWindows() blocks 1290*0c4d7b72SSadaf Ebrahimi * [IO-155] FileUtils - use NIO to copy files 1291*0c4d7b72SSadaf Ebrahimi * [IO-168] FileUtils - add new isSymlink() method 1292*0c4d7b72SSadaf Ebrahimi * [IO-219] FileUtils - throw FileExistsException when moving a file or directory if the destination already exists 1293*0c4d7b72SSadaf Ebrahimi * [IO-234] FileUtils - add Methods for retrieving System User/Temp directories/paths 1294*0c4d7b72SSadaf Ebrahimi * [IO-208] FileUtils - add timeout (connection and read) support for copyURLToFile() method 1295*0c4d7b72SSadaf Ebrahimi * [IO-238] FileUtils - add sizeOf(File) method 1296*0c4d7b72SSadaf Ebrahimi * [IO-181] LineIterator now implements Iterable 1297*0c4d7b72SSadaf Ebrahimi * [IO-224] IOUtils - add closeQuietly(Closeable) and closeQuietly(Socket) methods 1298*0c4d7b72SSadaf Ebrahimi * [IO-203] IOUtils - add skipFully() method for InputStreams 1299*0c4d7b72SSadaf Ebrahimi * [IO-137] IOUtils and ByteArrayOutputStream - add toBufferedInputStream() method to avoid unnecessary array allocation/copy 1300*0c4d7b72SSadaf Ebrahimi * [IO-195] Proxy streams/Reader/Writer - provide exception handling methods 1301*0c4d7b72SSadaf Ebrahimi * [IO-211] Proxy Input/Output streams - add pre/post processing support 1302*0c4d7b72SSadaf Ebrahimi * [IO-242] Proxy Reader/Writer - add pre/post processing support 1303*0c4d7b72SSadaf Ebrahimi 1304*0c4d7b72SSadaf EbrahimiBug fixes from 1.4 1305*0c4d7b72SSadaf Ebrahimi------------------ 1306*0c4d7b72SSadaf Ebrahimi * [IO-214] ByteArrayOutputStream - fix inconsistent synchronization of fields 1307*0c4d7b72SSadaf Ebrahimi * [IO-201] Counting Input/Output streams - fix inconsistent synchronization 1308*0c4d7b72SSadaf Ebrahimi * [IO-159] FileCleaningTracker - fix remove() never returns null 1309*0c4d7b72SSadaf Ebrahimi * [IO-220] FileCleaningTracker - fix Vector performs badly under load 1310*0c4d7b72SSadaf Ebrahimi * [IO-167] FilenameUtils - fix case-insensitive string handling in FilenameUtils and FilesystemUtils 1311*0c4d7b72SSadaf Ebrahimi * [IO-179] FilenameUtils - fix StringIndexOutOfBounds exception in getPathNoEndSeparator() 1312*0c4d7b72SSadaf Ebrahimi * [IO-248] FilenameUtils - fix getFullPathNoEndSeparator() returns empty while path is a one level directory 1313*0c4d7b72SSadaf Ebrahimi * [IO-246] FilenameUtils - fix wildcardMatch gives incorrect results 1314*0c4d7b72SSadaf Ebrahimi * [IO-187] FileSystemUtils - fix freeSpaceKb() doesn't work with relative paths on Linux 1315*0c4d7b72SSadaf Ebrahimi * [IO-160] FileSystemUtils - fix freeSpace() fails on solaris 1316*0c4d7b72SSadaf Ebrahimi * [IO-209] FileSystemUtils - fix freeSpaceKb() fails to return correct size for a windows mount point 1317*0c4d7b72SSadaf Ebrahimi * [IO-163] FileUtils - fix toURLs() using deprecated method of conversion to URL 1318*0c4d7b72SSadaf Ebrahimi * [IO-168] FileUtils - fix Symbolic links followed when deleting directory 1319*0c4d7b72SSadaf Ebrahimi * [IO-231] FileUtils - fix wrong exception message generated in isFileNewer() method 1320*0c4d7b72SSadaf Ebrahimi * [IO-207] FileUtils - fix race condition in forceMkdir() method 1321*0c4d7b72SSadaf Ebrahimi * [IO-217] FileUtils - fix copyDirectoryToDirectory() makes infinite loops 1322*0c4d7b72SSadaf Ebrahimi * [IO-166] FileUtils - fix URL decoding in toFile(URL) 1323*0c4d7b72SSadaf Ebrahimi * [IO-190] FileUtils - fix copyDirectory not preserving lastmodified date on subdirectories 1324*0c4d7b72SSadaf Ebrahimi * [IO-240] FileFilterUtils - ensure cvsFilter and svnFilter are only created once. 1325*0c4d7b72SSadaf Ebrahimi * [IO-175] IOUtils - fix copyFile() issues with very large files 1326*0c4d7b72SSadaf Ebrahimi * [IO-191] Improvements from static analysis 1327*0c4d7b72SSadaf Ebrahimi * [IO-216] LockableFileWriter - delete files quietly when an exception is thrown during initialization 1328*0c4d7b72SSadaf Ebrahimi * [IO-243] SwappedDataInputStream - fix readBoolean is inverted 1329*0c4d7b72SSadaf Ebrahimi * [IO-235] Tests - remove unused YellOnFlushAndCloseOutputStream from CopyUtilsTest 1330*0c4d7b72SSadaf Ebrahimi * [IO-161] Tests - fix FileCleaningTrackerTestCase hanging 1331*0c4d7b72SSadaf Ebrahimi 1332*0c4d7b72SSadaf EbrahimiDocumentation changes from 1.4 1333*0c4d7b72SSadaf Ebrahimi------------------------------ 1334*0c4d7b72SSadaf Ebrahimi * [IO-183 FilenameUtils.getExtension() method documentation improvements 1335*0c4d7b72SSadaf Ebrahimi * [IO-226 FileUtils.byteCountToDisplaySize() documentation corrections 1336*0c4d7b72SSadaf Ebrahimi * [IO-205 FileUtils.forceMkdir() documentation improvements 1337*0c4d7b72SSadaf Ebrahimi * [IO-215 FileUtils copy file/directory improve documentation regarding preserving the last modified date 1338*0c4d7b72SSadaf Ebrahimi * [IO-189 HexDump.dump() method documentation improvements 1339*0c4d7b72SSadaf Ebrahimi * [IO-171 IOCase document that it assumes there are only two OSes: Windows and Unix 1340*0c4d7b72SSadaf Ebrahimi * [IO-223 IOUtils.copy() documentation corrections 1341*0c4d7b72SSadaf Ebrahimi * [IO-247 IOUtils.closeQuietly() improve documentation with examples 1342*0c4d7b72SSadaf Ebrahimi * [IO-202 NotFileFilter documentation corrections 1343*0c4d7b72SSadaf Ebrahimi * [IO-206 ProxyInputStream - fix misleading parameter names 1344*0c4d7b72SSadaf Ebrahimi * [IO-212 ProxyInputStream.skip() documentation corrections 1345*0c4d7b72SSadaf Ebrahimi 1346*0c4d7b72SSadaf Ebrahimi============================================================================== 1347*0c4d7b72SSadaf Ebrahimi 1348*0c4d7b72SSadaf EbrahimiApache Commons IO Version 1.4 1349*0c4d7b72SSadaf Ebrahimi 1350*0c4d7b72SSadaf EbrahimiCompatibility with 1.3.2 1351*0c4d7b72SSadaf Ebrahimi------------------------ 1352*0c4d7b72SSadaf EbrahimiBinary compatible - Yes 1353*0c4d7b72SSadaf Ebrahimi 1354*0c4d7b72SSadaf EbrahimiSource compatible - Yes 1355*0c4d7b72SSadaf Ebrahimi 1356*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes 1357*0c4d7b72SSadaf Ebrahimi Check the bug fixes section for semantic bug fixes 1358*0c4d7b72SSadaf Ebrahimi 1359*0c4d7b72SSadaf EbrahimiCommons IO 1.4 introduces four new implementations which depend on Java 4 features 1360*0c4d7b72SSadaf Ebrahimi(CharSequenceReader, FileWriterWithEncoding, IOExceptionWithCause and RegexFileFilter). 1361*0c4d7b72SSadaf EbrahimiIt has been built with the JDK source and target options set to Java 1.3 and, except for 1362*0c4d7b72SSadaf Ebrahimithose implementations, can be used with Java 1.3 (see IO-127). 1363*0c4d7b72SSadaf Ebrahimi 1364*0c4d7b72SSadaf EbrahimiDeprecations from 1.3.2 1365*0c4d7b72SSadaf Ebrahimi----------------------- 1366*0c4d7b72SSadaf Ebrahimi- FileCleaner deprecated in favour of FileCleaningTracker [see IO-116] 1367*0c4d7b72SSadaf Ebrahimi 1368*0c4d7b72SSadaf EbrahimiBug fixes from 1.3.2 1369*0c4d7b72SSadaf Ebrahimi-------------------- 1370*0c4d7b72SSadaf Ebrahimi- FileUtils 1371*0c4d7b72SSadaf Ebrahimi - forceDelete of orphaned Softlinks does not work [IO-147] 1372*0c4d7b72SSadaf Ebrahimi - Infinite loop on FileUtils.copyDirectory when the destination directory is within 1373*0c4d7b72SSadaf Ebrahimi the source directory [IO-141] 1374*0c4d7b72SSadaf Ebrahimi - Add a copyDirectory() method that makes use of FileFilter [IO-105] 1375*0c4d7b72SSadaf Ebrahimi - Add moveDirectory() and moveFile() methods [IO-77] 1376*0c4d7b72SSadaf Ebrahimi 1377*0c4d7b72SSadaf Ebrahimi- HexDump 1378*0c4d7b72SSadaf Ebrahimi - HexDump's use of static StringBuffers isn't thread-safe [IO-136] 1379*0c4d7b72SSadaf Ebrahimi 1380*0c4d7b72SSadaf EbrahimiEnhancements from 1.3.2 1381*0c4d7b72SSadaf Ebrahimi----------------------- 1382*0c4d7b72SSadaf Ebrahimi- FileUtils 1383*0c4d7b72SSadaf Ebrahimi - Add a deleteQuietly method [IO-135] 1384*0c4d7b72SSadaf Ebrahimi 1385*0c4d7b72SSadaf Ebrahimi- FilenameUtils 1386*0c4d7b72SSadaf Ebrahimi - Add file name extension separator constants[IO-149] 1387*0c4d7b72SSadaf Ebrahimi 1388*0c4d7b72SSadaf Ebrahimi- IOExceptionWithCause [IO-148] 1389*0c4d7b72SSadaf Ebrahimi - Add a new IOException implementation with constructors which take a cause 1390*0c4d7b72SSadaf Ebrahimi 1391*0c4d7b72SSadaf Ebrahimi- TeeInputStream [IO-129] 1392*0c4d7b72SSadaf Ebrahimi - Add new Tee input stream implementation 1393*0c4d7b72SSadaf Ebrahimi 1394*0c4d7b72SSadaf Ebrahimi- FileWriterWithEncoding [IO-153] 1395*0c4d7b72SSadaf Ebrahimi - Add new File Writer implementation that accepts an encoding 1396*0c4d7b72SSadaf Ebrahimi 1397*0c4d7b72SSadaf Ebrahimi- CharSequenceReader [IO-138] 1398*0c4d7b72SSadaf Ebrahimi - Add new Reader implementation that handles any CharSequence (String, 1399*0c4d7b72SSadaf Ebrahimi StringBuffer, StringBuilder or CharBuffer) 1400*0c4d7b72SSadaf Ebrahimi 1401*0c4d7b72SSadaf Ebrahimi- ThresholdingOutputStream [IO-121] 1402*0c4d7b72SSadaf Ebrahimi - Add a reset() method which sets the count of the bytes written back to zero. 1403*0c4d7b72SSadaf Ebrahimi 1404*0c4d7b72SSadaf Ebrahimi- DeferredFileOutputStream [IO-130] 1405*0c4d7b72SSadaf Ebrahimi - Add support for temporary files 1406*0c4d7b72SSadaf Ebrahimi 1407*0c4d7b72SSadaf Ebrahimi- ByteArrayOutputStream 1408*0c4d7b72SSadaf Ebrahimi - Add a new write(InputStream) method [IO-152] 1409*0c4d7b72SSadaf Ebrahimi 1410*0c4d7b72SSadaf Ebrahimi- New Closed Input/Output stream implementations [IO-122] 1411*0c4d7b72SSadaf Ebrahimi - AutoCloseInputStream - automatically closes and discards the underlying input stream 1412*0c4d7b72SSadaf Ebrahimi - ClosedInputStream - returns -1 for any read attempts 1413*0c4d7b72SSadaf Ebrahimi - ClosedOutputStream - throws an IOException for any write attempts 1414*0c4d7b72SSadaf Ebrahimi - CloseShieldInputStream - prevents the underlying input stream from being closed. 1415*0c4d7b72SSadaf Ebrahimi - CloseShieldOutputStream - prevents the underlying output stream from being closed. 1416*0c4d7b72SSadaf Ebrahimi 1417*0c4d7b72SSadaf Ebrahimi- Add Singleton Constants to several stream classes [IO-143] 1418*0c4d7b72SSadaf Ebrahimi 1419*0c4d7b72SSadaf Ebrahimi- PrefixFileFilter [IO-126] 1420*0c4d7b72SSadaf Ebrahimi - Add facility to specify case sensitivity on prefix matching 1421*0c4d7b72SSadaf Ebrahimi 1422*0c4d7b72SSadaf Ebrahimi- SuffixFileFilter [IO-126] 1423*0c4d7b72SSadaf Ebrahimi - Add facility to specify case sensitivity on suffix matching 1424*0c4d7b72SSadaf Ebrahimi 1425*0c4d7b72SSadaf Ebrahimi- RegexFileFilter [IO-74] 1426*0c4d7b72SSadaf Ebrahimi - Add new regular expression file filter implementation 1427*0c4d7b72SSadaf Ebrahimi 1428*0c4d7b72SSadaf Ebrahimi- Make IOFileFilter implementations Serializable [IO-131] 1429*0c4d7b72SSadaf Ebrahimi 1430*0c4d7b72SSadaf Ebrahimi- Improve IOFileFilter toString() methods [IO-120] 1431*0c4d7b72SSadaf Ebrahimi 1432*0c4d7b72SSadaf Ebrahimi- Make fields final so classes are immutable/threadsafe [IO-133] 1433*0c4d7b72SSadaf Ebrahimi - changes to Age, Delegate, Name, Not, Prefix, Regex, Size, Suffix and Wildcard IOFileFilter 1434*0c4d7b72SSadaf Ebrahimi implementations. 1435*0c4d7b72SSadaf Ebrahimi 1436*0c4d7b72SSadaf Ebrahimi- IOCase 1437*0c4d7b72SSadaf Ebrahimi - Add a compare method to IOCase [IO-144] 1438*0c4d7b72SSadaf Ebrahimi 1439*0c4d7b72SSadaf Ebrahimi- Add a package of java.util.Comparator implementations for files [IO-145] 1440*0c4d7b72SSadaf Ebrahimi - DefaultFileComparator - compare files using the default File.compareTo(File) method. 1441*0c4d7b72SSadaf Ebrahimi - ExtensionFileComparator - compares files using file name extensions. 1442*0c4d7b72SSadaf Ebrahimi - LastModifiedFileComparator - compares files using the last modified date/time. 1443*0c4d7b72SSadaf Ebrahimi - NameFileComparator - compares files using file names. 1444*0c4d7b72SSadaf Ebrahimi - PathFileComparator - compares files using file paths. 1445*0c4d7b72SSadaf Ebrahimi - SizeFileComparator - compares files using file sizes. 1446*0c4d7b72SSadaf Ebrahimi 1447*0c4d7b72SSadaf Ebrahimi============================================================================== 1448*0c4d7b72SSadaf Ebrahimi 1449*0c4d7b72SSadaf EbrahimiApache Commons IO Version 1.3.2 1450*0c4d7b72SSadaf Ebrahimi 1451*0c4d7b72SSadaf EbrahimiCompatibility with 1.3.1 1452*0c4d7b72SSadaf Ebrahimi---------------------- 1453*0c4d7b72SSadaf EbrahimiBinary compatible - Yes 1454*0c4d7b72SSadaf Ebrahimi 1455*0c4d7b72SSadaf EbrahimiSource compatible - Yes 1456*0c4d7b72SSadaf Ebrahimi 1457*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes 1458*0c4d7b72SSadaf Ebrahimi 1459*0c4d7b72SSadaf EbrahimiCompatibility with 1.3 1460*0c4d7b72SSadaf Ebrahimi---------------------- 1461*0c4d7b72SSadaf EbrahimiBinary compatible - No 1462*0c4d7b72SSadaf Ebrahimi See [IO-113] 1463*0c4d7b72SSadaf Ebrahimi 1464*0c4d7b72SSadaf EbrahimiSource compatible - No 1465*0c4d7b72SSadaf Ebrahimi See [IO-113] 1466*0c4d7b72SSadaf Ebrahimi 1467*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes 1468*0c4d7b72SSadaf Ebrahimi 1469*0c4d7b72SSadaf EbrahimiEnhancements since 1.3.1 1470*0c4d7b72SSadaf Ebrahimi------------------------ 1471*0c4d7b72SSadaf Ebrahimi 1472*0c4d7b72SSadaf Ebrahimi- Created the FileCleaningTracker, basically a non-static version of the 1473*0c4d7b72SSadaf Ebrahimi FileCleaner, which can be controlled by the user. [IO-116] 1474*0c4d7b72SSadaf Ebrahimi- The FileCleaner is deprecated. 1475*0c4d7b72SSadaf Ebrahimi 1476*0c4d7b72SSadaf EbrahimiBug fixes from 1.3.1 1477*0c4d7b72SSadaf Ebrahimi-------------------- 1478*0c4d7b72SSadaf Ebrahimi 1479*0c4d7b72SSadaf Ebrahimi- Some tests, which are implicitly assuming a Unix-like file system, are 1480*0c4d7b72SSadaf Ebrahimi now skipped on Windows. [IO-115] 1481*0c4d7b72SSadaf Ebrahimi- EndianUtils 1482*0c4d7b72SSadaf Ebrahimi - Both readSwappedUnsignedInteger(...) methods could return negative 1483*0c4d7b72SSadaf Ebrahimi numbers due to int/long casting. [IO-117] 1484*0c4d7b72SSadaf Ebrahimi 1485*0c4d7b72SSadaf EbrahimiBug fixes from 1.3 1486*0c4d7b72SSadaf Ebrahimi------------------ 1487*0c4d7b72SSadaf Ebrahimi 1488*0c4d7b72SSadaf Ebrahimi- FileUtils 1489*0c4d7b72SSadaf Ebrahimi - NPE in openOutputStream(File) when file has no parent in path [IO-112] 1490*0c4d7b72SSadaf Ebrahimi - readFileToString(File) is not static [IO-113] 1491*0c4d7b72SSadaf Ebrahimi 1492*0c4d7b72SSadaf Ebrahimi============================================================================== 1493*0c4d7b72SSadaf Ebrahimi 1494*0c4d7b72SSadaf EbrahimiApache Commons IO Version 1.3.1 1495*0c4d7b72SSadaf Ebrahimi 1496*0c4d7b72SSadaf EbrahimiCompatibility with 1.3 1497*0c4d7b72SSadaf Ebrahimi---------------------- 1498*0c4d7b72SSadaf EbrahimiBinary compatible - No 1499*0c4d7b72SSadaf Ebrahimi See [IO-113] 1500*0c4d7b72SSadaf Ebrahimi 1501*0c4d7b72SSadaf EbrahimiSource compatible - No 1502*0c4d7b72SSadaf Ebrahimi See [IO-113] 1503*0c4d7b72SSadaf Ebrahimi 1504*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes 1505*0c4d7b72SSadaf Ebrahimi 1506*0c4d7b72SSadaf EbrahimiBug fixes from 1.3 1507*0c4d7b72SSadaf Ebrahimi------------------ 1508*0c4d7b72SSadaf Ebrahimi 1509*0c4d7b72SSadaf Ebrahimi- FileUtils 1510*0c4d7b72SSadaf Ebrahimi - NPE in openOutputStream(File) when file has no parent in path [IO-112] 1511*0c4d7b72SSadaf Ebrahimi - readFileToString(File) is not static [IO-113] 1512*0c4d7b72SSadaf Ebrahimi 1513*0c4d7b72SSadaf Ebrahimi============================================================================== 1514*0c4d7b72SSadaf Ebrahimi 1515*0c4d7b72SSadaf EbrahimiApache Commons IO Version 1.3 1516*0c4d7b72SSadaf Ebrahimi 1517*0c4d7b72SSadaf EbrahimiCompatibility with 1.2 1518*0c4d7b72SSadaf Ebrahimi---------------------- 1519*0c4d7b72SSadaf EbrahimiBinary compatible - Yes 1520*0c4d7b72SSadaf Ebrahimi 1521*0c4d7b72SSadaf EbrahimiSource compatible - Yes 1522*0c4d7b72SSadaf Ebrahimi 1523*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes 1524*0c4d7b72SSadaf Ebrahimi Check the bug fixes section for semantic bug fixes 1525*0c4d7b72SSadaf Ebrahimi 1526*0c4d7b72SSadaf EbrahimiDeprecations from 1.2 1527*0c4d7b72SSadaf Ebrahimi--------------------- 1528*0c4d7b72SSadaf Ebrahimi- WildcardFilter deprecated, replaced by WildcardFileFilter 1529*0c4d7b72SSadaf Ebrahimi - old class only accepted files, thus had a confusing dual purpose 1530*0c4d7b72SSadaf Ebrahimi 1531*0c4d7b72SSadaf Ebrahimi- FileSystemUtils.freeSpace deprecated, replaced by freeSpaceKb 1532*0c4d7b72SSadaf Ebrahimi - freeSpace returns a result that varies by operating system and 1533*0c4d7b72SSadaf Ebrahimi thus isn't that useful 1534*0c4d7b72SSadaf Ebrahimi - freeSpaceKb returns much better and more consistent results 1535*0c4d7b72SSadaf Ebrahimi - freeSpaceKb existed in v1.2, so this is a gentle cutover 1536*0c4d7b72SSadaf Ebrahimi 1537*0c4d7b72SSadaf EbrahimiBug fixes from 1.2 1538*0c4d7b72SSadaf Ebrahimi------------------ 1539*0c4d7b72SSadaf Ebrahimi- LineIterator now implements Iterator 1540*0c4d7b72SSadaf Ebrahimi - It was always supposed to... 1541*0c4d7b72SSadaf Ebrahimi 1542*0c4d7b72SSadaf Ebrahimi- FileSystemUtils.freeSpace/freeSpaceKb [IO-83] 1543*0c4d7b72SSadaf Ebrahimi - These should now work on AIX and HP-UX 1544*0c4d7b72SSadaf Ebrahimi 1545*0c4d7b72SSadaf Ebrahimi- FileSystemUtils.freeSpace/freeSpaceKb [IO-90] 1546*0c4d7b72SSadaf Ebrahimi - Avoid infinite looping in Windows 1547*0c4d7b72SSadaf Ebrahimi - Catch more errors with nice messages 1548*0c4d7b72SSadaf Ebrahimi 1549*0c4d7b72SSadaf Ebrahimi- FileSystemUtils.freeSpace [IO-91] 1550*0c4d7b72SSadaf Ebrahimi - This is now documented not to work on SunOS 5 1551*0c4d7b72SSadaf Ebrahimi 1552*0c4d7b72SSadaf Ebrahimi- FileSystemUtils [IO-93] 1553*0c4d7b72SSadaf Ebrahimi - Fixed resource leak leading to 'Too many open files' error 1554*0c4d7b72SSadaf Ebrahimi - Previously did not destroy Process instances (as JDK Javadoc is so poor) 1555*0c4d7b72SSadaf Ebrahimi - http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4801027 1556*0c4d7b72SSadaf Ebrahimi 1557*0c4d7b72SSadaf Ebrahimi- FileUtils.touch [IO-100] 1558*0c4d7b72SSadaf Ebrahimi - The touch method previously gave no indication when the file could not 1559*0c4d7b72SSadaf Ebrahimi be touched successfully (such as due to access restrictions) - it now 1560*0c4d7b72SSadaf Ebrahimi throws an IOException if the last modified date cannot be changed 1561*0c4d7b72SSadaf Ebrahimi 1562*0c4d7b72SSadaf Ebrahimi- FileCleaner 1563*0c4d7b72SSadaf Ebrahimi - This now handles the situation where an error occurs when deleting the file 1564*0c4d7b72SSadaf Ebrahimi 1565*0c4d7b72SSadaf Ebrahimi- IOUtils.copy [IO-84] 1566*0c4d7b72SSadaf Ebrahimi - Copy methods could return inaccurate byte/char count for large streams 1567*0c4d7b72SSadaf Ebrahimi - The copy(InputStream, OutputStream) method now returns -1 if the count is greater than an int 1568*0c4d7b72SSadaf Ebrahimi - The copy(Reader, Writer) method now throws now returns -1 if the count is greater than an int 1569*0c4d7b72SSadaf Ebrahimi - Added a new copyLarge(InputStream, OutputStream) method that returns a long 1570*0c4d7b72SSadaf Ebrahimi - Added a new copyLarge(Reader, Writer) method that returns a long 1571*0c4d7b72SSadaf Ebrahimi 1572*0c4d7b72SSadaf Ebrahimi- CountingInputStream/CountingOutputStream [IO-84] 1573*0c4d7b72SSadaf Ebrahimi - Methods were declared as int thus the count was inaccurate for large streams 1574*0c4d7b72SSadaf Ebrahimi - new long based methods getByteCount()/resetByteCount() added 1575*0c4d7b72SSadaf Ebrahimi - existing methods changed to throw an exception if the count is greater than an int 1576*0c4d7b72SSadaf Ebrahimi 1577*0c4d7b72SSadaf Ebrahimi- FileBasedTestCase 1578*0c4d7b72SSadaf Ebrahimi - Fixed bug in compare content methods identified by GNU classpath 1579*0c4d7b72SSadaf Ebrahimi 1580*0c4d7b72SSadaf Ebrahimi- EndianUtils.writeSwappedLong(byte[], int) [IO-101] 1581*0c4d7b72SSadaf Ebrahimi - An int overrun in the bit shifting when it should have been a long 1582*0c4d7b72SSadaf Ebrahimi 1583*0c4d7b72SSadaf Ebrahimi- EndianUtils.writeSwappedLong(InputStream) [IO-102] 1584*0c4d7b72SSadaf Ebrahimi - The return of input.read(byte[]) was not being checked to ensure all 8 bytes were read 1585*0c4d7b72SSadaf Ebrahimi 1586*0c4d7b72SSadaf EbrahimiEnhancements from 1.2 1587*0c4d7b72SSadaf Ebrahimi--------------------- 1588*0c4d7b72SSadaf Ebrahimi- DirectoryWalker [IO-86] 1589*0c4d7b72SSadaf Ebrahimi - New class designed for subclassing to walk through a set of files. 1590*0c4d7b72SSadaf Ebrahimi DirectoryWalker provides the walk of the directories, filtering of 1591*0c4d7b72SSadaf Ebrahimi directories and files, and cancellation support. The subclass must provide 1592*0c4d7b72SSadaf Ebrahimi the specific behavior, such as text searching or image processing. 1593*0c4d7b72SSadaf Ebrahimi 1594*0c4d7b72SSadaf Ebrahimi- IOCase 1595*0c4d7b72SSadaf Ebrahimi - New class/enumeration for case-sensitivity control 1596*0c4d7b72SSadaf Ebrahimi 1597*0c4d7b72SSadaf Ebrahimi- FilenameUtils 1598*0c4d7b72SSadaf Ebrahimi - New methods to handle case-sensitivity 1599*0c4d7b72SSadaf Ebrahimi - wildcardMatch - new method that has IOCase as a parameter 1600*0c4d7b72SSadaf Ebrahimi - equals - new method that has IOCase as a parameter 1601*0c4d7b72SSadaf Ebrahimi 1602*0c4d7b72SSadaf Ebrahimi- FileUtils [IO-108] - new default encoding methods for: 1603*0c4d7b72SSadaf Ebrahimi - readFileToString(File) 1604*0c4d7b72SSadaf Ebrahimi - readLines(File) 1605*0c4d7b72SSadaf Ebrahimi - lineIterator(File) 1606*0c4d7b72SSadaf Ebrahimi - writeStringToFile(File, String) 1607*0c4d7b72SSadaf Ebrahimi - writeLines(File, Collection) 1608*0c4d7b72SSadaf Ebrahimi - writeLines(File, Collection, String) 1609*0c4d7b72SSadaf Ebrahimi 1610*0c4d7b72SSadaf Ebrahimi- FileUtils.openOutputStream [IO-107] 1611*0c4d7b72SSadaf Ebrahimi - new method to open a FileOutputStream, creating parent directories if required 1612*0c4d7b72SSadaf Ebrahimi- FileUtils.touch 1613*0c4d7b72SSadaf Ebrahimi- FileUtils.copyURLToFile 1614*0c4d7b72SSadaf Ebrahimi- FileUtils.writeStringToFile 1615*0c4d7b72SSadaf Ebrahimi- FileUtils.writeByteArrayToFile 1616*0c4d7b72SSadaf Ebrahimi- FileUtils.writeLines 1617*0c4d7b72SSadaf Ebrahimi - enhanced to create parent directories if required 1618*0c4d7b72SSadaf Ebrahimi- FileUtils.openInputStream [IO-107] 1619*0c4d7b72SSadaf Ebrahimi - new method to open a FileInputStream, providing better error messages than the JDK 1620*0c4d7b72SSadaf Ebrahimi 1621*0c4d7b72SSadaf Ebrahimi- FileUtils.isFileOlder 1622*0c4d7b72SSadaf Ebrahimi - new methods to check if a file is older (i.e. isFileOlder()) - counterparts 1623*0c4d7b72SSadaf Ebrahimi to the existing isFileNewer() methods. 1624*0c4d7b72SSadaf Ebrahimi 1625*0c4d7b72SSadaf Ebrahimi- FileUtils.checksum, FileUtils.checksumCRC32 1626*0c4d7b72SSadaf Ebrahimi - new methods to create a checksum of a file 1627*0c4d7b72SSadaf Ebrahimi 1628*0c4d7b72SSadaf Ebrahimi- FileUtils.copyFileToDirectory [IO-104] 1629*0c4d7b72SSadaf Ebrahimi - new variant that optionally retains the file date 1630*0c4d7b72SSadaf Ebrahimi 1631*0c4d7b72SSadaf Ebrahimi- FileDeleteStrategy 1632*0c4d7b72SSadaf Ebrahimi- FileCleaner [IO-56,IO-70] 1633*0c4d7b72SSadaf Ebrahimi - FileDeleteStrategy is a strategy for handling file deletion 1634*0c4d7b72SSadaf Ebrahimi - This can be used as a callback in FileCleaner 1635*0c4d7b72SSadaf Ebrahimi - Together these allow FileCleaner to do a forceDelete to kill directories 1636*0c4d7b72SSadaf Ebrahimi 1637*0c4d7b72SSadaf Ebrahimi- FileCleaner.exitWhenFinished [IO-99] 1638*0c4d7b72SSadaf Ebrahimi - A new method that allows the internal cleaner thread to be cleanly terminated 1639*0c4d7b72SSadaf Ebrahimi 1640*0c4d7b72SSadaf Ebrahimi- WildcardFileFilter 1641*0c4d7b72SSadaf Ebrahimi - Replacement for WildcardFilter 1642*0c4d7b72SSadaf Ebrahimi - Accepts both files and directories 1643*0c4d7b72SSadaf Ebrahimi - Ability to control case-sensitivity 1644*0c4d7b72SSadaf Ebrahimi 1645*0c4d7b72SSadaf Ebrahimi- NameFileFilter 1646*0c4d7b72SSadaf Ebrahimi - Ability to control case-sensitivity 1647*0c4d7b72SSadaf Ebrahimi 1648*0c4d7b72SSadaf Ebrahimi- FileFileFilter 1649*0c4d7b72SSadaf Ebrahimi - New IOFileFilter implementation 1650*0c4d7b72SSadaf Ebrahimi - Accepts files where File.isFile() is true 1651*0c4d7b72SSadaf Ebrahimi - In other words it filters out directories 1652*0c4d7b72SSadaf Ebrahimi - Singleton instance provided (FILE) 1653*0c4d7b72SSadaf Ebrahimi 1654*0c4d7b72SSadaf Ebrahimi- CanReadFileFilter 1655*0c4d7b72SSadaf Ebrahimi - New IOFileFilter implementation 1656*0c4d7b72SSadaf Ebrahimi - Accepts files where File.canRead() is true 1657*0c4d7b72SSadaf Ebrahimi - Singleton instances provided (CAN_READ/CANNOT_READ/READ_ONLY) 1658*0c4d7b72SSadaf Ebrahimi 1659*0c4d7b72SSadaf Ebrahimi- CanWriteFileFilter 1660*0c4d7b72SSadaf Ebrahimi - New IOFileFilter implementation 1661*0c4d7b72SSadaf Ebrahimi - Accepts files where File.canWrite() is true 1662*0c4d7b72SSadaf Ebrahimi - Singleton instances provided (CAN_WRITE/CANNOT_WRITE) 1663*0c4d7b72SSadaf Ebrahimi 1664*0c4d7b72SSadaf Ebrahimi- HiddenFileFilter 1665*0c4d7b72SSadaf Ebrahimi - New IOFileFilter implementation 1666*0c4d7b72SSadaf Ebrahimi - Accepts files where File.isHidden() is true 1667*0c4d7b72SSadaf Ebrahimi - Singleton instances provided (HIDDEN/VISIBLE) 1668*0c4d7b72SSadaf Ebrahimi 1669*0c4d7b72SSadaf Ebrahimi- EmptyFileFilter 1670*0c4d7b72SSadaf Ebrahimi - New IOFileFilter implementation 1671*0c4d7b72SSadaf Ebrahimi - Accepts files or directories that are empty 1672*0c4d7b72SSadaf Ebrahimi - Singleton instances provided (EMPTY/NOT_EMPTY) 1673*0c4d7b72SSadaf Ebrahimi 1674*0c4d7b72SSadaf Ebrahimi- TrueFileFilter/FalseFileFilter/DirectoryFileFilter 1675*0c4d7b72SSadaf Ebrahimi - New singleton instance constants (TRUE/FALSE/DIRECTORY) 1676*0c4d7b72SSadaf Ebrahimi - The new constants are more Java 5 friendly with regards to static imports 1677*0c4d7b72SSadaf Ebrahimi (whereas if everything uses INSTANCE, then they just clash) 1678*0c4d7b72SSadaf Ebrahimi - The old INSTANCE constants are still present and have not been deprecated 1679*0c4d7b72SSadaf Ebrahimi 1680*0c4d7b72SSadaf Ebrahimi- FileFilterUtils.sizeRangeFileFilter 1681*0c4d7b72SSadaf Ebrahimi - new sizeRangeFileFilter(long minimumSize, long maximumSize) method which 1682*0c4d7b72SSadaf Ebrahimi creates a filter that accepts files within the specified size range. 1683*0c4d7b72SSadaf Ebrahimi 1684*0c4d7b72SSadaf Ebrahimi- FileFilterUtils.makeDirectoryOnly/makeFileOnly 1685*0c4d7b72SSadaf Ebrahimi - two new methods that decorate a file filter to make it apply to 1686*0c4d7b72SSadaf Ebrahimi directories only or files only 1687*0c4d7b72SSadaf Ebrahimi 1688*0c4d7b72SSadaf Ebrahimi- NullWriter 1689*0c4d7b72SSadaf Ebrahimi - New writer that acts as a sink for all data, as per /dev/null 1690*0c4d7b72SSadaf Ebrahimi 1691*0c4d7b72SSadaf Ebrahimi- NullInputStream 1692*0c4d7b72SSadaf Ebrahimi - New input stream that emulates a stream of a specified size 1693*0c4d7b72SSadaf Ebrahimi 1694*0c4d7b72SSadaf Ebrahimi- NullReader 1695*0c4d7b72SSadaf Ebrahimi - New reader that emulates a reader of a specified size 1696*0c4d7b72SSadaf Ebrahimi 1697*0c4d7b72SSadaf Ebrahimi- ByteArrayOutputStream [IO-97] 1698*0c4d7b72SSadaf Ebrahimi - Performance enhancements 1699*0c4d7b72SSadaf Ebrahimi 1700*0c4d7b72SSadaf Ebrahimi============================================================================== 1701*0c4d7b72SSadaf Ebrahimi 1702*0c4d7b72SSadaf EbrahimiApache Commons IO Version 1.2 1703*0c4d7b72SSadaf Ebrahimi 1704*0c4d7b72SSadaf EbrahimiCompatibility with 1.1 1705*0c4d7b72SSadaf Ebrahimi---------------------- 1706*0c4d7b72SSadaf EbrahimiBinary compatible - Yes 1707*0c4d7b72SSadaf Ebrahimi 1708*0c4d7b72SSadaf EbrahimiSource compatible - Yes 1709*0c4d7b72SSadaf Ebrahimi 1710*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes 1711*0c4d7b72SSadaf Ebrahimi 1712*0c4d7b72SSadaf EbrahimiDeprecations from 1.1 1713*0c4d7b72SSadaf Ebrahimi--------------------- 1714*0c4d7b72SSadaf Ebrahimi 1715*0c4d7b72SSadaf EbrahimiBug fixes from 1.1 1716*0c4d7b72SSadaf Ebrahimi------------------ 1717*0c4d7b72SSadaf Ebrahimi- FileSystemUtils.freeSpace(drive) 1718*0c4d7b72SSadaf Ebrahimi Fix to allow Windows based command to function in French locale 1719*0c4d7b72SSadaf Ebrahimi 1720*0c4d7b72SSadaf Ebrahimi- FileUtils.read* 1721*0c4d7b72SSadaf Ebrahimi Increase certainty that files are closed in case of error 1722*0c4d7b72SSadaf Ebrahimi 1723*0c4d7b72SSadaf Ebrahimi- LockableFileWriter 1724*0c4d7b72SSadaf Ebrahimi Locking mechanism was broken and only provided limited protection [38942] 1725*0c4d7b72SSadaf Ebrahimi File deletion and locking in case of constructor error was broken 1726*0c4d7b72SSadaf Ebrahimi 1727*0c4d7b72SSadaf EbrahimiEnhancements from 1.1 1728*0c4d7b72SSadaf Ebrahimi--------------------- 1729*0c4d7b72SSadaf Ebrahimi- AgeFileFilter/SizeFileFilter 1730*0c4d7b72SSadaf Ebrahimi New file filters that compares against the age and size of the file 1731*0c4d7b72SSadaf Ebrahimi 1732*0c4d7b72SSadaf Ebrahimi- FileSystemUtils.freeSpaceKb(drive) 1733*0c4d7b72SSadaf Ebrahimi New method that unifies result to be in kilobytes [38574] 1734*0c4d7b72SSadaf Ebrahimi 1735*0c4d7b72SSadaf Ebrahimi- FileUtils.contentEquals(File,File) 1736*0c4d7b72SSadaf Ebrahimi Performance improved by adding length and file location checking 1737*0c4d7b72SSadaf Ebrahimi 1738*0c4d7b72SSadaf Ebrahimi- FileUtils.iterateFiles 1739*0c4d7b72SSadaf Ebrahimi Two new method to provide direct access to iterators over files 1740*0c4d7b72SSadaf Ebrahimi 1741*0c4d7b72SSadaf Ebrahimi- FileUtils.lineIterator 1742*0c4d7b72SSadaf Ebrahimi IOUtils.lineIterator 1743*0c4d7b72SSadaf Ebrahimi New methods to provide an iterator over the lines in a file [38083] 1744*0c4d7b72SSadaf Ebrahimi 1745*0c4d7b72SSadaf Ebrahimi- FileUtils.copyDirectoryToDirectory 1746*0c4d7b72SSadaf Ebrahimi New method to copy a directory to within another directory [36315] 1747*0c4d7b72SSadaf Ebrahimi 1748*0c4d7b72SSadaf Ebrahimi============================================================================== 1749*0c4d7b72SSadaf Ebrahimi 1750*0c4d7b72SSadaf EbrahimiApache Commons IO Version 1.1 1751*0c4d7b72SSadaf Ebrahimi 1752*0c4d7b72SSadaf EbrahimiIncompatible changes from 1.0 1753*0c4d7b72SSadaf Ebrahimi----------------------------- 1754*0c4d7b72SSadaf EbrahimiBinary compatible - Yes 1755*0c4d7b72SSadaf Ebrahimi 1756*0c4d7b72SSadaf EbrahimiSource compatible - Yes 1757*0c4d7b72SSadaf Ebrahimi 1758*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes, except: 1759*0c4d7b72SSadaf Ebrahimi- FileUtils.writeStringToFile() 1760*0c4d7b72SSadaf Ebrahimi A null encoding previously used 'ISO-8859-1', now it uses the platform default 1761*0c4d7b72SSadaf Ebrahimi Generally this will make no difference 1762*0c4d7b72SSadaf Ebrahimi 1763*0c4d7b72SSadaf Ebrahimi- LockableFileWriter 1764*0c4d7b72SSadaf Ebrahimi Improved validation and now create directories if necessary 1765*0c4d7b72SSadaf Ebrahimi 1766*0c4d7b72SSadaf Ebrahimiplus these bug fixes may affect you semantically: 1767*0c4d7b72SSadaf Ebrahimi- FileUtils.touch() (Bug fix 29821) 1768*0c4d7b72SSadaf Ebrahimi Now creates the file if it did not previously exist 1769*0c4d7b72SSadaf Ebrahimi 1770*0c4d7b72SSadaf Ebrahimi- FileUtils.toFile(URL) (Bug fix 32575) 1771*0c4d7b72SSadaf Ebrahimi Now handles escape syntax such as %20 1772*0c4d7b72SSadaf Ebrahimi 1773*0c4d7b72SSadaf Ebrahimi- FileUtils.sizeOfDirectory() (Bug fix 36801) 1774*0c4d7b72SSadaf Ebrahimi May now return a size of 0 if the directory is security restricted 1775*0c4d7b72SSadaf Ebrahimi 1776*0c4d7b72SSadaf EbrahimiDeprecations from 1.0 1777*0c4d7b72SSadaf Ebrahimi--------------------- 1778*0c4d7b72SSadaf Ebrahimi- CopyUtils has been deprecated. 1779*0c4d7b72SSadaf Ebrahimi Its methods have been moved to IOUtils. 1780*0c4d7b72SSadaf Ebrahimi The new IOUtils methods handle nulls better, and have clearer names. 1781*0c4d7b72SSadaf Ebrahimi 1782*0c4d7b72SSadaf Ebrahimi- IOUtils.toByteArray(String) - Use {@link String#getBytes()} 1783*0c4d7b72SSadaf Ebrahimi- IOUtils.toString(byte[]) - Use {@link String#String(byte[])} 1784*0c4d7b72SSadaf Ebrahimi- IOUtils.toString(byte[],String) - Use {@link String#String(byte[],String)} 1785*0c4d7b72SSadaf Ebrahimi 1786*0c4d7b72SSadaf EbrahimiBug fixes from 1.0 1787*0c4d7b72SSadaf Ebrahimi------------------ 1788*0c4d7b72SSadaf Ebrahimi- FileUtils - touch() [29821] 1789*0c4d7b72SSadaf Ebrahimi Now creates the file if it did not previously exist 1790*0c4d7b72SSadaf Ebrahimi 1791*0c4d7b72SSadaf Ebrahimi- FileUtils - toFile(URL) [32575] 1792*0c4d7b72SSadaf Ebrahimi Now handles escape syntax such as %20 1793*0c4d7b72SSadaf Ebrahimi 1794*0c4d7b72SSadaf Ebrahimi- FileFilterUtils - makeCVSAware(IOFileFilter) [33023] 1795*0c4d7b72SSadaf Ebrahimi Fixed bug that caused method to be completely broken 1796*0c4d7b72SSadaf Ebrahimi 1797*0c4d7b72SSadaf Ebrahimi- CountingInputStream [33336] 1798*0c4d7b72SSadaf Ebrahimi Fixed bug that caused the count to reduce by one at the end of the stream 1799*0c4d7b72SSadaf Ebrahimi 1800*0c4d7b72SSadaf Ebrahimi- CountingInputStream - skip(long) [34311] 1801*0c4d7b72SSadaf Ebrahimi Bytes from calls to this method were not previously counted 1802*0c4d7b72SSadaf Ebrahimi 1803*0c4d7b72SSadaf Ebrahimi- NullOutputStream [33481] 1804*0c4d7b72SSadaf Ebrahimi Remove unnecessary synchronization 1805*0c4d7b72SSadaf Ebrahimi 1806*0c4d7b72SSadaf Ebrahimi- AbstractFileFilter - accept(File, String) [30992] 1807*0c4d7b72SSadaf Ebrahimi Fixed broken implementation 1808*0c4d7b72SSadaf Ebrahimi 1809*0c4d7b72SSadaf Ebrahimi- FileUtils [36801] 1810*0c4d7b72SSadaf Ebrahimi Previously threw NPE when listing files in a security restricted directory 1811*0c4d7b72SSadaf Ebrahimi Now throw IOException with a better message 1812*0c4d7b72SSadaf Ebrahimi 1813*0c4d7b72SSadaf Ebrahimi- FileUtils - writeStringToFile() 1814*0c4d7b72SSadaf Ebrahimi Null encoding now correctly uses the platform default 1815*0c4d7b72SSadaf Ebrahimi 1816*0c4d7b72SSadaf EbrahimiEnhancements from 1.0 1817*0c4d7b72SSadaf Ebrahimi--------------------- 1818*0c4d7b72SSadaf Ebrahimi- FilenameUtils - new class [33303,29351] 1819*0c4d7b72SSadaf Ebrahimi A static utility class for working with filenames 1820*0c4d7b72SSadaf Ebrahimi Seeks to ease the pain of developing on Windows and deploying on Unix 1821*0c4d7b72SSadaf Ebrahimi 1822*0c4d7b72SSadaf Ebrahimi- FileSystemUtils - new class [32982,36325] 1823*0c4d7b72SSadaf Ebrahimi A static utility class for working with file systems 1824*0c4d7b72SSadaf Ebrahimi Provides one method at present, to get the free space on the filing system 1825*0c4d7b72SSadaf Ebrahimi 1826*0c4d7b72SSadaf Ebrahimi- IOUtils - new public constants 1827*0c4d7b72SSadaf Ebrahimi Constants for directory and line separators on Windows and Unix 1828*0c4d7b72SSadaf Ebrahimi 1829*0c4d7b72SSadaf Ebrahimi- IOUtils - toByteArray(Reader,encoding) 1830*0c4d7b72SSadaf Ebrahimi Handles encodings when reading to a byte array 1831*0c4d7b72SSadaf Ebrahimi 1832*0c4d7b72SSadaf Ebrahimi- IOUtils - toCharArray(InputStream) [28979] 1833*0c4d7b72SSadaf Ebrahimi - toCharArray(InputStream,encoding) 1834*0c4d7b72SSadaf Ebrahimi - toCharArray(Reader) 1835*0c4d7b72SSadaf Ebrahimi Reads a stream/reader into a character array 1836*0c4d7b72SSadaf Ebrahimi 1837*0c4d7b72SSadaf Ebrahimi- IOUtils - readLines(InputStream) [36214] 1838*0c4d7b72SSadaf Ebrahimi - readLines(InputStream,encoding) 1839*0c4d7b72SSadaf Ebrahimi - readLines(Reader) 1840*0c4d7b72SSadaf Ebrahimi Reads a stream/reader line by line into a List of Strings 1841*0c4d7b72SSadaf Ebrahimi 1842*0c4d7b72SSadaf Ebrahimi- IOUtils - toInputStream(String) [32958] 1843*0c4d7b72SSadaf Ebrahimi - toInputStream(String,encoding) 1844*0c4d7b72SSadaf Ebrahimi Creates an input stream that uses the string as a source of data 1845*0c4d7b72SSadaf Ebrahimi 1846*0c4d7b72SSadaf Ebrahimi- IOUtils - writeLines(Collection,lineEnding,OutputStream) [36214] 1847*0c4d7b72SSadaf Ebrahimi - writeLines(Collection,lineEnding,OutputStream,encoding) 1848*0c4d7b72SSadaf Ebrahimi - writeLines(Collection,lineEnding,Writer) 1849*0c4d7b72SSadaf Ebrahimi Writes a collection to a stream/writer line by line 1850*0c4d7b72SSadaf Ebrahimi 1851*0c4d7b72SSadaf Ebrahimi- IOUtils - write(...) 1852*0c4d7b72SSadaf Ebrahimi Write data to a stream/writer (moved from CopyUtils with better null handling) 1853*0c4d7b72SSadaf Ebrahimi 1854*0c4d7b72SSadaf Ebrahimi- IOUtils - copy(...) 1855*0c4d7b72SSadaf Ebrahimi Copy data between streams (moved from CopyUtils with better null handling) 1856*0c4d7b72SSadaf Ebrahimi 1857*0c4d7b72SSadaf Ebrahimi- IOUtils - contentEquals(Reader,Reader) 1858*0c4d7b72SSadaf Ebrahimi Method to compare the contents of two readers 1859*0c4d7b72SSadaf Ebrahimi 1860*0c4d7b72SSadaf Ebrahimi- FileUtils - toFiles(URL[]) 1861*0c4d7b72SSadaf Ebrahimi Converts an array of URLs to an array of Files 1862*0c4d7b72SSadaf Ebrahimi 1863*0c4d7b72SSadaf Ebrahimi- FileUtils - copyDirectory() [32944] 1864*0c4d7b72SSadaf Ebrahimi New methods to copy a directory 1865*0c4d7b72SSadaf Ebrahimi 1866*0c4d7b72SSadaf Ebrahimi- FileUtils - readFileToByteArray(File) 1867*0c4d7b72SSadaf Ebrahimi Reads an entire file into a byte array 1868*0c4d7b72SSadaf Ebrahimi 1869*0c4d7b72SSadaf Ebrahimi- FileUtils - writeByteArrayToFile(File,byte[]) 1870*0c4d7b72SSadaf Ebrahimi Writes a byte array to a file 1871*0c4d7b72SSadaf Ebrahimi 1872*0c4d7b72SSadaf Ebrahimi- FileUtils - readLines(File,encoding) [36214] 1873*0c4d7b72SSadaf Ebrahimi Reads a file line by line into a List of Strings 1874*0c4d7b72SSadaf Ebrahimi 1875*0c4d7b72SSadaf Ebrahimi- FileUtils - writeLines(File,encoding,List) 1876*0c4d7b72SSadaf Ebrahimi writeLines(File,encoding,List,lineEnding) 1877*0c4d7b72SSadaf Ebrahimi Writes a collection to a file line by line 1878*0c4d7b72SSadaf Ebrahimi 1879*0c4d7b72SSadaf Ebrahimi- FileUtils - EMPTY_FILE_ARRAY 1880*0c4d7b72SSadaf Ebrahimi Constant for an empty array of File objects 1881*0c4d7b72SSadaf Ebrahimi 1882*0c4d7b72SSadaf Ebrahimi- ConditionalFileFilter - new interface [30705] 1883*0c4d7b72SSadaf Ebrahimi Defines the behavior of list based filters 1884*0c4d7b72SSadaf Ebrahimi 1885*0c4d7b72SSadaf Ebrahimi- AndFileFilter, OrFileFilter [30705] 1886*0c4d7b72SSadaf Ebrahimi Now support a list of filters to and/or 1887*0c4d7b72SSadaf Ebrahimi 1888*0c4d7b72SSadaf Ebrahimi- WildcardFilter [31115] 1889*0c4d7b72SSadaf Ebrahimi New filter that can match using wildcard file names 1890*0c4d7b72SSadaf Ebrahimi 1891*0c4d7b72SSadaf Ebrahimi- FileFilterUtils - makeSVNAware(IOFileFilter) 1892*0c4d7b72SSadaf Ebrahimi New method, like makeCVSAware, that ignores Subversion source control directories 1893*0c4d7b72SSadaf Ebrahimi 1894*0c4d7b72SSadaf Ebrahimi- ClassLoaderObjectInputStream 1895*0c4d7b72SSadaf Ebrahimi An ObjectInputStream that supports a ClassLoader 1896*0c4d7b72SSadaf Ebrahimi 1897*0c4d7b72SSadaf Ebrahimi- CountingInputStream,CountingOutputStream - resetCount() [28976] 1898*0c4d7b72SSadaf Ebrahimi Adds the ability to reset the count part way through reading/writing the stream 1899*0c4d7b72SSadaf Ebrahimi 1900*0c4d7b72SSadaf Ebrahimi- DeferredFileOutputStream - writeTo(OutputStream) [34173] 1901*0c4d7b72SSadaf Ebrahimi New method to allow current contents to be written to a stream 1902*0c4d7b72SSadaf Ebrahimi 1903*0c4d7b72SSadaf Ebrahimi- DeferredFileOutputStream [34142] 1904*0c4d7b72SSadaf Ebrahimi Performance optimizations avoiding double buffering 1905*0c4d7b72SSadaf Ebrahimi 1906*0c4d7b72SSadaf Ebrahimi- LockableFileWriter - encoding support [36825] 1907*0c4d7b72SSadaf Ebrahimi Add support for character encodings to LockableFileWriter 1908*0c4d7b72SSadaf Ebrahimi Improve the validation 1909*0c4d7b72SSadaf Ebrahimi Create directories if necessary 1910*0c4d7b72SSadaf Ebrahimi 1911*0c4d7b72SSadaf Ebrahimi- IOUtils and EndianUtils are no longer final [28978] 1912*0c4d7b72SSadaf Ebrahimi Allows developers to have subclasses if desired 1913*0c4d7b72SSadaf Ebrahimi 1914*0c4d7b72SSadaf Ebrahimi============================================================================== 1915*0c4d7b72SSadaf EbrahimiFeedback 1916*0c4d7b72SSadaf Ebrahimi============================================================================== 1917*0c4d7b72SSadaf Ebrahimi 1918*0c4d7b72SSadaf EbrahimiOpen source works best when you give feedback: 1919*0c4d7b72SSadaf Ebrahimihttps://commons.apache.org/io/ 1920*0c4d7b72SSadaf Ebrahimi 1921*0c4d7b72SSadaf EbrahimiPlease direct all bug reports to JIRA 1922*0c4d7b72SSadaf Ebrahimihttps://issues.apache.org/jira/browse/IO 1923*0c4d7b72SSadaf Ebrahimi 1924*0c4d7b72SSadaf EbrahimiOr subscribe to the commons-user mailing list (prefix emails by [io]) 1925*0c4d7b72SSadaf Ebrahimihttps://commons.apache.org/mail-lists.html 1926*0c4d7b72SSadaf Ebrahimi 1927*0c4d7b72SSadaf EbrahimiThe Commons-IO Team 1928