1*0c4d7b72SSadaf Ebrahimi<?xml version="1.0"?> 2*0c4d7b72SSadaf Ebrahimi<!-- 3*0c4d7b72SSadaf Ebrahimi Licensed to the Apache Software Foundation (ASF) under one or more 4*0c4d7b72SSadaf Ebrahimi contributor license agreements. See the NOTICE file distributed with 5*0c4d7b72SSadaf Ebrahimi this work for additional information regarding copyright ownership. 6*0c4d7b72SSadaf Ebrahimi The ASF licenses this file to You under the Apache License, Version 2.0 7*0c4d7b72SSadaf Ebrahimi (the "License"); you may not use this file except in compliance with 8*0c4d7b72SSadaf Ebrahimi the License. You may obtain a copy of the License at 9*0c4d7b72SSadaf Ebrahimi 10*0c4d7b72SSadaf Ebrahimi http://www.apache.org/licenses/LICENSE-2.0 11*0c4d7b72SSadaf Ebrahimi 12*0c4d7b72SSadaf Ebrahimi Unless required by applicable law or agreed to in writing, software 13*0c4d7b72SSadaf Ebrahimi distributed under the License is distributed on an "AS IS" BASIS, 14*0c4d7b72SSadaf Ebrahimi WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15*0c4d7b72SSadaf Ebrahimi See the License for the specific language governing permissions and 16*0c4d7b72SSadaf Ebrahimi limitations under the License. 17*0c4d7b72SSadaf Ebrahimi--> 18*0c4d7b72SSadaf Ebrahimi 19*0c4d7b72SSadaf Ebrahimi<!-- 20*0c4d7b72SSadaf EbrahimiThis file is used by the maven-changes-plugin to generate the release notes. 21*0c4d7b72SSadaf EbrahimiUseful ways of finding items to add to this file are: 22*0c4d7b72SSadaf Ebrahimi 23*0c4d7b72SSadaf Ebrahimi1. Add items when you fix a bug or add a feature (this makes the 24*0c4d7b72SSadaf Ebrahimirelease process easy :-). 25*0c4d7b72SSadaf Ebrahimi 26*0c4d7b72SSadaf Ebrahimi2. Do a Jira search for tickets closed since the previous release. 27*0c4d7b72SSadaf Ebrahimi 28*0c4d7b72SSadaf Ebrahimi3. Use the report generated by the maven-changelog-plugin to see all 29*0c4d7b72SSadaf EbrahimiCVS commits. Set the project.properties' maven.changelog.range 30*0c4d7b72SSadaf Ebrahimiproperty to the number of days since the last release. 31*0c4d7b72SSadaf Ebrahimi 32*0c4d7b72SSadaf Ebrahimi 33*0c4d7b72SSadaf EbrahimiTo generate the release notes from this file: 34*0c4d7b72SSadaf Ebrahimi 35*0c4d7b72SSadaf Ebrahimimvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn] 36*0c4d7b72SSadaf Ebrahimi 37*0c4d7b72SSadaf Ebrahimithen tweak the source formatting if necessary and regenerate, then commit 38*0c4d7b72SSadaf Ebrahimi 39*0c4d7b72SSadaf EbrahimiThe <action> type attribute can be add,update,fix,remove. 40*0c4d7b72SSadaf Ebrahimi--> 41*0c4d7b72SSadaf Ebrahimi 42*0c4d7b72SSadaf Ebrahimi<document xmlns="http://maven.apache.org/changes/1.0.0" 43*0c4d7b72SSadaf Ebrahimi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 44*0c4d7b72SSadaf Ebrahimi xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd"> 45*0c4d7b72SSadaf Ebrahimi <properties> 46*0c4d7b72SSadaf Ebrahimi <title>Apache Commons IO Release Notes</title> 47*0c4d7b72SSadaf Ebrahimi </properties> 48*0c4d7b72SSadaf Ebrahimi 49*0c4d7b72SSadaf Ebrahimi <body> 50*0c4d7b72SSadaf Ebrahimi <release version="2.15.0" date="2023-10-21" description="Java 8 is required."> 51*0c4d7b72SSadaf Ebrahimi <!-- FIX --> 52*0c4d7b72SSadaf Ebrahimi <action dev="sebb" type="fix" issue="IO-810" due-to="Laurence Gonsalves"> 53*0c4d7b72SSadaf Ebrahimi XmlStreamReader encoding match RE is too strict. 54*0c4d7b72SSadaf Ebrahimi </action> 55*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-810" due-to="Gregor Dschung, Gary Gregory"> 56*0c4d7b72SSadaf Ebrahimi Javadoc in FileUtils does not reflect code for thrown exceptions. 57*0c4d7b72SSadaf Ebrahimi </action> 58*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-812" due-to="Adam Rauch, Gary Gregory"> 59*0c4d7b72SSadaf Ebrahimi Javadoc should mention closing Streams based on file resources. 60*0c4d7b72SSadaf Ebrahimi </action> 61*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-811" due-to="Adam Rauch, Gary Gregory"> 62*0c4d7b72SSadaf Ebrahimi In tests, Files.walk() direct and indirect callers fail to close the returned Stream. 63*0c4d7b72SSadaf Ebrahimi </action> 64*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-811" due-to="Adam Rauch, Gary Gregory"> 65*0c4d7b72SSadaf Ebrahimi FileUtils.listFiles(File, String[], boolean) fails to close its internal Stream. 66*0c4d7b72SSadaf Ebrahimi </action> 67*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-811" due-to="Adam Rauch, Gary Gregory"> 68*0c4d7b72SSadaf Ebrahimi FileUtils.iterateFiles(File, String[], boolean) fails to close its internal Stream. 69*0c4d7b72SSadaf Ebrahimi </action> 70*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-811" due-to="Adam Rauch, Gary Gregory"> 71*0c4d7b72SSadaf Ebrahimi StreamIterator fails to close its internal Stream. 72*0c4d7b72SSadaf Ebrahimi </action> 73*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-814" due-to="Elliotte Rusty Harold, Gary Gregory"> 74*0c4d7b72SSadaf Ebrahimi Don't throw UncheckedIOException #491. 75*0c4d7b72SSadaf Ebrahimi </action> 76*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-414" due-to="Elliotte Rusty Harold, Gary Gregory"> 77*0c4d7b72SSadaf Ebrahimi Don't write a BOM on every (or any) line #492. 78*0c4d7b72SSadaf Ebrahimi </action> 79*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-814" due-to="Gary Gregory"> 80*0c4d7b72SSadaf Ebrahimi RandomAccessFileMode.create(Path) provides a better NullPointerException message. 81*0c4d7b72SSadaf Ebrahimi </action> 82*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 83*0c4d7b72SSadaf Ebrahimi Improve performance of PathUtils.fileContentEquals(Path, Path, LinkOption[], OpenOption[]) by about 60%, see PathUtilsContentEqualsBenchmark. 84*0c4d7b72SSadaf Ebrahimi </action> 85*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 86*0c4d7b72SSadaf Ebrahimi Improve performance of PathUtils.fileContentEquals(Path, Path) by about 60%, see PathUtilsContentEqualsBenchmark. 87*0c4d7b72SSadaf Ebrahimi </action> 88*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 89*0c4d7b72SSadaf Ebrahimi Improve performance of FileUtils.contentEquals(File, File) by about 60%, see PathUtilsContentEqualsBenchmark. 90*0c4d7b72SSadaf Ebrahimi </action> 91*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold"> 92*0c4d7b72SSadaf Ebrahimi Remove unused test code #494. 93*0c4d7b72SSadaf Ebrahimi </action> 94*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="sebbASF"> 95*0c4d7b72SSadaf Ebrahimi [Javadoc] IOUtils#contentEquals does not throw NullPointerException #496. 96*0c4d7b72SSadaf Ebrahimi </action> 97*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 98*0c4d7b72SSadaf Ebrahimi Fix CodeQL warnings in UnsynchronizedBufferedInputStream: Implicit narrowing conversion in compound assignment. 99*0c4d7b72SSadaf Ebrahimi </action> 100*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 101*0c4d7b72SSadaf Ebrahimi MessageDigestCalculatingInputStream.MessageDigestMaintainingObserver.MessageDigestMaintainingObserver(MessageDigest) now throws a NullPointerException 102*0c4d7b72SSadaf Ebrahimi if the MessageDigest is null. 103*0c4d7b72SSadaf Ebrahimi </action> 104*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 105*0c4d7b72SSadaf Ebrahimi MessageDigestCalculatingInputStream.MessageDigestCalculatingInputStream(InputStream, MessageDigest) now throws a NullPointerException 106*0c4d7b72SSadaf Ebrahimi if the MessageDigest is null. 107*0c4d7b72SSadaf Ebrahimi </action> 108*0c4d7b72SSadaf Ebrahimi <action issue="IO-816" dev="ggregory" type="fix" due-to="Andreas Loth, Gary Gregory"> 109*0c4d7b72SSadaf Ebrahimi UnsynchronizedBufferedInputStream.read(byte[], int, int) does not use buffer. 110*0c4d7b72SSadaf Ebrahimi </action> 111*0c4d7b72SSadaf Ebrahimi <!-- ADD --> 112*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 113*0c4d7b72SSadaf Ebrahimi Add org.apache.commons.io.channels.FileChannels. 114*0c4d7b72SSadaf Ebrahimi </action> 115*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 116*0c4d7b72SSadaf Ebrahimi Add RandomAccessFiles#contentEquals(RandomAccessFile, RandomAccessFile). 117*0c4d7b72SSadaf Ebrahimi </action> 118*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 119*0c4d7b72SSadaf Ebrahimi Add RandomAccessFiles#reset(RandomAccessFile). 120*0c4d7b72SSadaf Ebrahimi </action> 121*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 122*0c4d7b72SSadaf Ebrahimi Add PathUtilsContentEqualsBenchmark. 123*0c4d7b72SSadaf Ebrahimi </action> 124*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 125*0c4d7b72SSadaf Ebrahimi Add org.apache.commons.io.StreamIterator. 126*0c4d7b72SSadaf Ebrahimi </action> 127*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 128*0c4d7b72SSadaf Ebrahimi Add MessageDigestInputStream and deprecate MessageDigestCalculatingInputStream. 129*0c4d7b72SSadaf Ebrahimi </action> 130*0c4d7b72SSadaf Ebrahimi <!-- UPDATE --> 131*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 132*0c4d7b72SSadaf Ebrahimi Bump org.apache.commons:commons-parent from 62 to 64. 133*0c4d7b72SSadaf Ebrahimi </action> 134*0c4d7b72SSadaf Ebrahimi </release> 135*0c4d7b72SSadaf Ebrahimi <release version="2.14.0" date="2023-09-24" description="Java 8 is required."> 136*0c4d7b72SSadaf Ebrahimi <!-- FIX --> 137*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-799" due-to="Jeroen van der Vegt, Gary Gregory"> 138*0c4d7b72SSadaf Ebrahimi ReaderInputStream.read() throws an exception instead of returning -1 when called again after returning -1. 139*0c4d7b72SSadaf Ebrahimi </action> 140*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-804" due-to="Elliotte Rusty Harold, Gary Gregory"> 141*0c4d7b72SSadaf Ebrahimi FileUtils.forceMkdirParent() Javadoc is incorrect. 142*0c4d7b72SSadaf Ebrahimi </action> 143*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="step-security-bot, Gary Gregory"> 144*0c4d7b72SSadaf Ebrahimi [StepSecurity] ci: Harden GitHub Actions #461. 145*0c4d7b72SSadaf Ebrahimi </action> 146*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 147*0c4d7b72SSadaf Ebrahimi MagicNumberFileFilter.accept(Path, BasicFileAttributes) doesn't set its byteOffset before reading. 148*0c4d7b72SSadaf Ebrahimi </action> 149*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 150*0c4d7b72SSadaf Ebrahimi Javadoc improvements. 151*0c4d7b72SSadaf Ebrahimi </action> 152*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Josh Soref, Gary Gregory"> 153*0c4d7b72SSadaf Ebrahimi Spelling #468. 154*0c4d7b72SSadaf Ebrahimi </action> 155*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Jakub Kupczyk"> 156*0c4d7b72SSadaf Ebrahimi Use assertThrows #475. 157*0c4d7b72SSadaf Ebrahimi </action> 158*0c4d7b72SSadaf Ebrahimi <!-- ADD --> 159*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 160*0c4d7b72SSadaf Ebrahimi Add DeferredFileOutputStream.getPath(). 161*0c4d7b72SSadaf Ebrahimi </action> 162*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 163*0c4d7b72SSadaf Ebrahimi Add FileCleaningTracker.track(Path, Object[, FileDeleteStrategy]). 164*0c4d7b72SSadaf Ebrahimi </action> 165*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 166*0c4d7b72SSadaf Ebrahimi Add IOUtils.skip[Fully](InputStream, long, Supplier<byte[]>). 167*0c4d7b72SSadaf Ebrahimi </action> 168*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 169*0c4d7b72SSadaf Ebrahimi Add FilesUncheck.find(Path, int, BiPredicate%lt;Path, BasicFileAttributes>, FileVisitOption...) 170*0c4d7b72SSadaf Ebrahimi </action> 171*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 172*0c4d7b72SSadaf Ebrahimi Add IOIntSupplier. 173*0c4d7b72SSadaf Ebrahimi </action> 174*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 175*0c4d7b72SSadaf Ebrahimi Add IOLongSupplier. 176*0c4d7b72SSadaf Ebrahimi </action> 177*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 178*0c4d7b72SSadaf Ebrahimi Add Uncheck.getAsInt(IOIntSupplier [, Supplier<String>]). 179*0c4d7b72SSadaf Ebrahimi </action> 180*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 181*0c4d7b72SSadaf Ebrahimi Add Uncheck.getAsLong(IOLongSupplier [, Supplier<String>]). 182*0c4d7b72SSadaf Ebrahimi </action> 183*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 184*0c4d7b72SSadaf Ebrahimi Add Uncheck.run(IORunnable, Supplier<String>) 185*0c4d7b72SSadaf Ebrahimi </action> 186*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 187*0c4d7b72SSadaf Ebrahimi Add Uncheck.get(IOSupplier, Supplier<String>) 188*0c4d7b72SSadaf Ebrahimi </action> 189*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 190*0c4d7b72SSadaf Ebrahimi IOFileFilter now also extends java.nio.file.PathMatcher. 191*0c4d7b72SSadaf Ebrahimi </action> 192*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 193*0c4d7b72SSadaf Ebrahimi Add PathMatcherFileFilter to adapt java.nio.file.PathMatcher. 194*0c4d7b72SSadaf Ebrahimi </action> 195*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 196*0c4d7b72SSadaf Ebrahimi Add ThresholdingOutputStream.getOutputStream() and deprecate getStream(). 197*0c4d7b72SSadaf Ebrahimi </action> 198*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 199*0c4d7b72SSadaf Ebrahimi Add DeferredFileOutputStream.Builder.setOutputFile(Path). 200*0c4d7b72SSadaf Ebrahimi </action> 201*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 202*0c4d7b72SSadaf Ebrahimi Add DeferredFileOutputStream.Builder.setDirectory(Path). 203*0c4d7b72SSadaf Ebrahimi </action> 204*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 205*0c4d7b72SSadaf Ebrahimi Add AbstractStreamBuilder.setBufferSizeChecker(IntToIntFunction). 206*0c4d7b72SSadaf Ebrahimi </action> 207*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 208*0c4d7b72SSadaf Ebrahimi Add AbstractStreamBuilder.setBufferSizeMax(int). 209*0c4d7b72SSadaf Ebrahimi </action> 210*0c4d7b72SSadaf Ebrahimi <!-- UPDATE --> 211*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 212*0c4d7b72SSadaf Ebrahimi Bump jimfs from 1.2 to 1.3.0 #465 (tests). 213*0c4d7b72SSadaf Ebrahimi </action> 214*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 215*0c4d7b72SSadaf Ebrahimi Bump commons-parent from 58 to 62. 216*0c4d7b72SSadaf Ebrahimi </action> 217*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Gary Gregory"> 218*0c4d7b72SSadaf Ebrahimi Bump commons-lang3 from 3.12 to 3.13.0. 219*0c4d7b72SSadaf Ebrahimi </action> 220*0c4d7b72SSadaf Ebrahimi </release> 221*0c4d7b72SSadaf Ebrahimi <release version="2.13.0" date="2023-06-03" description="Java 8 is required."> 222*0c4d7b72SSadaf Ebrahimi <!-- FIX --> 223*0c4d7b72SSadaf Ebrahimi <action issue="IO-791" dev="ggregory" type="fix" due-to="Chad Wilson, Gary Gregory"> 224*0c4d7b72SSadaf Ebrahimi Regression in FileUtils.touch() - no longer creates parent directories. 225*0c4d7b72SSadaf Ebrahimi </action> 226*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 227*0c4d7b72SSadaf Ebrahimi ByteArrayOrigin should be able convert a byte[] to a ByteArrayInputStream. 228*0c4d7b72SSadaf Ebrahimi </action> 229*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 230*0c4d7b72SSadaf Ebrahimi AbstractOriginSupplier.checkOrigin() now throws IllegalStateException instead of NullPointerException. 231*0c4d7b72SSadaf Ebrahimi </action> 232*0c4d7b72SSadaf Ebrahimi <action issue="IO-796" dev="ggregory" type="fix" due-to="Giacomo Boccardo, Gary Gregory"> 233*0c4d7b72SSadaf Ebrahimi FileAlreadyExistsException in PathUtils.createParentDirectories(Path, LinkOption, FileAttribute...). 234*0c4d7b72SSadaf Ebrahimi </action> 235*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 236*0c4d7b72SSadaf Ebrahimi Only read the relevant portion of a file in AbstractOrigin.FileOrigin.getByteArray(long, int). 237*0c4d7b72SSadaf Ebrahimi </action> 238*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 239*0c4d7b72SSadaf Ebrahimi Only read the relevant portion of a file in AbstractOrigin.PathOrigin.getByteArray(long, int). 240*0c4d7b72SSadaf Ebrahimi </action> 241*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Shai Shapira, Gary Gregory" issue="IO-798"> 242*0c4d7b72SSadaf Ebrahimi DeferredFileOutputStream throws exception when system temp dir is a symlink. 243*0c4d7b72SSadaf Ebrahimi </action> 244*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 245*0c4d7b72SSadaf Ebrahimi ReaderInputStream.Builder.setCharsetEncoder(null) should reset to a default object, not throw an NPE. 246*0c4d7b72SSadaf Ebrahimi </action> 247*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 248*0c4d7b72SSadaf Ebrahimi ReaderInputStream.Builder.setCharset(null) should reset to a default object, not throw an NPE. 249*0c4d7b72SSadaf Ebrahimi </action> 250*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-800" due-to="Jan Høydahl, Gary Gregory"> 251*0c4d7b72SSadaf Ebrahimi Fix back-incompatible change for PathUtils.deleteDirectory(): throw NoSuchFileException instead of IllegalArgumentException #459. 252*0c4d7b72SSadaf Ebrahimi </action> 253*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" issue="IO-801" due-to="James Howe, Gary Gregory"> 254*0c4d7b72SSadaf Ebrahimi Deprecation documentation gives incorrect alternative. 255*0c4d7b72SSadaf Ebrahimi </action> 256*0c4d7b72SSadaf Ebrahimi <!-- ADD --> 257*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 258*0c4d7b72SSadaf Ebrahimi Add CharSequenceInputStream.Builder. 259*0c4d7b72SSadaf Ebrahimi </action> 260*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 261*0c4d7b72SSadaf Ebrahimi Add ChunkedOutputStream.Builder. 262*0c4d7b72SSadaf Ebrahimi </action> 263*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 264*0c4d7b72SSadaf Ebrahimi Add AbstractStreamBuilder.setOpenOptions(OpenOption...). 265*0c4d7b72SSadaf Ebrahimi </action> 266*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 267*0c4d7b72SSadaf Ebrahimi Add some missing conversions to AbstractOrigin subclasses. 268*0c4d7b72SSadaf Ebrahimi </action> 269*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 270*0c4d7b72SSadaf Ebrahimi Add AbstractOrigin.getByteArray(long, int). 271*0c4d7b72SSadaf Ebrahimi </action> 272*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 273*0c4d7b72SSadaf Ebrahimi Add and use RandomAccessFiles. 274*0c4d7b72SSadaf Ebrahimi </action> 275*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 276*0c4d7b72SSadaf Ebrahimi Add AbstractOrigin.size(). 277*0c4d7b72SSadaf Ebrahimi </action> 278*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 279*0c4d7b72SSadaf Ebrahimi Add PathUtils.EMPTY_FILE_ATTRIBUTE_ARRAY. 280*0c4d7b72SSadaf Ebrahimi </action> 281*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 282*0c4d7b72SSadaf Ebrahimi Add CharSequenceInputStream.Builder.setCharsetEncoder(CharsetEncoder). 283*0c4d7b72SSadaf Ebrahimi </action> 284*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 285*0c4d7b72SSadaf Ebrahimi Add CharsetEncoders.toCharsetEncoder(CharsetEncoder, Supplier<CharsetEncoder>). 286*0c4d7b72SSadaf Ebrahimi </action> 287*0c4d7b72SSadaf Ebrahimi <!-- UPDATE --> 288*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> 289*0c4d7b72SSadaf Ebrahimi Bump commons-parent from 57 to 58. 290*0c4d7b72SSadaf Ebrahimi </action> 291*0c4d7b72SSadaf Ebrahimi </release> 292*0c4d7b72SSadaf Ebrahimi <release version="2.12.0" date="2023-05-13" description="Java 8 is required."> 293*0c4d7b72SSadaf Ebrahimi <!-- FIX --> 294*0c4d7b72SSadaf Ebrahimi <action issue="IO-697" dev="kinow" type="fix" due-to="otter606"> 295*0c4d7b72SSadaf Ebrahimi IOUtils.toByteArray size validation does not match documentation. 296*0c4d7b72SSadaf Ebrahimi </action> 297*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 298*0c4d7b72SSadaf Ebrahimi Fix Javadoc links to the JRE Javadoc 8. 299*0c4d7b72SSadaf Ebrahimi </action> 300*0c4d7b72SSadaf Ebrahimi <action issue="IO-744" dev="ggregory" type="fix" due-to="RBRi, Gary Gregory"> 301*0c4d7b72SSadaf Ebrahimi FileWriterWithEncoding for an existing file no longer truncates the file. #251. 302*0c4d7b72SSadaf Ebrahimi </action> 303*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 304*0c4d7b72SSadaf Ebrahimi A null Charset or Charset name in FileWriterWithEncoding constructors uses the default Charset. 305*0c4d7b72SSadaf Ebrahimi </action> 306*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Davide Angelocola"> 307*0c4d7b72SSadaf Ebrahimi Fix usage of assertNotNull #269. 308*0c4d7b72SSadaf Ebrahimi </action> 309*0c4d7b72SSadaf Ebrahimi <action issue="IO-727" dev="ggregory" type="fix" due-to="trungPa, Gary Gregory"> 310*0c4d7b72SSadaf Ebrahimi FilenameUtils directoryContains() should handle files with the same prefix #217. 311*0c4d7b72SSadaf Ebrahimi </action> 312*0c4d7b72SSadaf Ebrahimi <action issue="IO-746" dev="ggregory" type="add" due-to="Davide Angelocola"> 313*0c4d7b72SSadaf Ebrahimi Drop unnecessary casts and conversions #267. 314*0c4d7b72SSadaf Ebrahimi </action> 315*0c4d7b72SSadaf Ebrahimi <action issue="IO-748" dev="ggregory" type="fix" due-to="Dirk Heinrichs, Gary Gregory, Elango Ravi"> 316*0c4d7b72SSadaf Ebrahimi FileUtils.moveToDirectory() exception documentation and exception message error. 317*0c4d7b72SSadaf Ebrahimi </action> 318*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 319*0c4d7b72SSadaf Ebrahimi ThreadMonitor.sleep(Duration) ignores nanoseconds. 320*0c4d7b72SSadaf Ebrahimi </action> 321*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Arturo Bernal"> 322*0c4d7b72SSadaf Ebrahimi Fix Javadoc in ThreadMonitor#run() method. #273. 323*0c4d7b72SSadaf Ebrahimi </action> 324*0c4d7b72SSadaf Ebrahimi <action issue="IO-749" dev="ggregory" type="fix" due-to="haihuiyang, Gary Gregory"> 325*0c4d7b72SSadaf Ebrahimi FileUtils.listFiles() does not list matching files if File parameter is a symbolic link. 326*0c4d7b72SSadaf Ebrahimi </action> 327*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="niranjanghule, Gary Gregory"> 328*0c4d7b72SSadaf Ebrahimi Fix typo in Javadocs for FileUtils#convertFileCollectionToFileArray() #276. 329*0c4d7b72SSadaf Ebrahimi </action> 330*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="DaGeRe, Gary Gregory"> 331*0c4d7b72SSadaf Ebrahimi Avoid Code Duplication: Reuse Sleep from ThreadMonitor #66. 332*0c4d7b72SSadaf Ebrahimi </action> 333*0c4d7b72SSadaf Ebrahimi <action issue="IO-750" dev="ggregory" type="fix" due-to="Sita Geßner, Sebastian Peters, Gary Gregory"> 334*0c4d7b72SSadaf Ebrahimi FileUtils.iterateFiles also lists directories. 335*0c4d7b72SSadaf Ebrahimi </action> 336*0c4d7b72SSadaf Ebrahimi <action issue="IO-721" dev="ggregory" type="fix" due-to="Dirk Heinrichs, Gary Gregory"> 337*0c4d7b72SSadaf Ebrahimi Wrong exception message in FileUtils.setLastModified(File, File). 338*0c4d7b72SSadaf Ebrahimi </action> 339*0c4d7b72SSadaf Ebrahimi <action issue="IO-717" dev="ggregory" type="fix" due-to="Marcono1234, Gary Gregory"> 340*0c4d7b72SSadaf Ebrahimi Infinite loop in ReaderInputStream instead of throwing exception for CodingErrorAction.REPORT. 341*0c4d7b72SSadaf Ebrahimi </action> 342*0c4d7b72SSadaf Ebrahimi <action issue="IO-716" dev="ggregory" type="fix" due-to="Marcono1234, Gary Gregory"> 343*0c4d7b72SSadaf Ebrahimi ReaderInputStream enter infinite loop for too small buffer sizes. 344*0c4d7b72SSadaf Ebrahimi </action> 345*0c4d7b72SSadaf Ebrahimi <action issue="IO-638" dev="ggregory" type="fix" due-to="Thayne McCombs, Gary Gregory"> 346*0c4d7b72SSadaf Ebrahimi Infinite loop in CharSequenceInputStream.read for 4-byte characters with UTF-8 and 3-byte buffer. 347*0c4d7b72SSadaf Ebrahimi </action> 348*0c4d7b72SSadaf Ebrahimi <action issue="IO-638" dev="ggregory" type="fix" due-to="Gary Gregory"> 349*0c4d7b72SSadaf Ebrahimi PathUtils.setReadOnly(Path, boolean, LinkOption...) should add READ_* file attributes when using POSIX. 350*0c4d7b72SSadaf Ebrahimi </action> 351*0c4d7b72SSadaf Ebrahimi <action issue="IO-638" dev="ggregory" type="fix" due-to="Gary Gregory"> 352*0c4d7b72SSadaf Ebrahimi PathUtils.setReadOnly(Path, boolean, LinkOption...) readOnly argument is always assumed true on POSIX. 353*0c4d7b72SSadaf Ebrahimi </action> 354*0c4d7b72SSadaf Ebrahimi <action issue="IO-729" dev="ggregory" type="fix" due-to="Rob Spoor, Gary Gregory"> 355*0c4d7b72SSadaf Ebrahimi Prevent IllegalArgumentExceptions in BrokenInputStream/Reader/OutputStream/Writer #278. 356*0c4d7b72SSadaf Ebrahimi </action> 357*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 358*0c4d7b72SSadaf Ebrahimi FileUtils.copyURLToFile(URL, File, int, int) leaks its URLConnection. 359*0c4d7b72SSadaf Ebrahimi Called by FileUtils.copyURLToFile(URL, File). 360*0c4d7b72SSadaf Ebrahimi </action> 361*0c4d7b72SSadaf Ebrahimi <action issue="IO-714" dev="ggregory" type="fix" due-to="kevinwang1975, Gary Gregory"> 362*0c4d7b72SSadaf Ebrahimi Fixed ReaderInputStream not calling CharsetEncoder.flush issue #283. 363*0c4d7b72SSadaf Ebrahimi </action> 364*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Arturo Bernal"> 365*0c4d7b72SSadaf Ebrahimi Minor changes #287. 366*0c4d7b72SSadaf Ebrahimi </action> 367*0c4d7b72SSadaf Ebrahimi <action issue="IO-756" dev="ggregory" type="fix" due-to="wodencafe, Gary Gregory, Bruno P. Kinoshita"> 368*0c4d7b72SSadaf Ebrahimi Update FileWriterWithEncoding to extend ProxyWriter #296. 369*0c4d7b72SSadaf Ebrahimi </action> 370*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 371*0c4d7b72SSadaf Ebrahimi Initialize the message of an IOExceptionList to a default if null. 372*0c4d7b72SSadaf Ebrahimi </action> 373*0c4d7b72SSadaf Ebrahimi <action issue="IO-751" dev="ggregory" type="fix" due-to="Gary Gregory, Richard Cyganiak"> 374*0c4d7b72SSadaf Ebrahimi When deleting symlinks, File/PathUtils.deleteDirectory() changes file permissions of the target. 375*0c4d7b72SSadaf Ebrahimi </action> 376*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 377*0c4d7b72SSadaf Ebrahimi ReaderInputStream maps null Charset, Charset name, and CharsetEncoder to the platform default instead of throwing a NullPointerException. 378*0c4d7b72SSadaf Ebrahimi </action> 379*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 380*0c4d7b72SSadaf Ebrahimi CharSequenceInputStream maps null Charset and Charset name to the platform default instead of throwing a NullPointerException. 381*0c4d7b72SSadaf Ebrahimi </action> 382*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 383*0c4d7b72SSadaf Ebrahimi WriterOutputStream maps null Charset, Charset name, and CharsetEncoder name to the platform default instead of throwing a NullPointerException. 384*0c4d7b72SSadaf Ebrahimi </action> 385*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Chad Wilson, Gary Gregory"> 386*0c4d7b72SSadaf Ebrahimi FileUtils.copyURLToFile should create target parent directories and overwrite target file #319. 387*0c4d7b72SSadaf Ebrahimi </action> 388*0c4d7b72SSadaf Ebrahimi <action issue="IO-484" dev="ggregory" type="fix" due-to="Marcono1234, Gary Gregory"> 389*0c4d7b72SSadaf Ebrahimi Fix incorrect FilenameUtils Javadoc for null bytes #310. 390*0c4d7b72SSadaf Ebrahimi </action> 391*0c4d7b72SSadaf Ebrahimi <action issue="IO-484" dev="ggregory" type="fix" due-to="Arturo Bernal"> 392*0c4d7b72SSadaf Ebrahimi Change to uppercase variable constant. #323. 393*0c4d7b72SSadaf Ebrahimi </action> 394*0c4d7b72SSadaf Ebrahimi <action issue="IO-484" dev="ggregory" type="fix" due-to="David Huang, Gary Gregory"> 395*0c4d7b72SSadaf Ebrahimi IOCase.isCaseSensitive(IOCase) result is backward #325. 396*0c4d7b72SSadaf Ebrahimi </action> 397*0c4d7b72SSadaf Ebrahimi <action issue="IO-758" dev="ggregory" type="fix" due-to="Marcono1234, Gary Gregory"> 398*0c4d7b72SSadaf Ebrahimi Deprecate PathUtils.NOFOLLOW_LINK_OPTION_ARRAY in favor of noFollowLinkOptionArray(). 399*0c4d7b72SSadaf Ebrahimi </action> 400*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Marcono1234, Gary Gregory"> 401*0c4d7b72SSadaf Ebrahimi Improve ReaderInputStream documentation #291. 402*0c4d7b72SSadaf Ebrahimi </action> 403*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="richarda23"> 404*0c4d7b72SSadaf Ebrahimi Fix misleading comments in FileFilterTest #334. 405*0c4d7b72SSadaf Ebrahimi </action> 406*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Diego Marcilio"> 407*0c4d7b72SSadaf Ebrahimi Add missing Javadoc for exceptions thrown for invalid arguments #339. 408*0c4d7b72SSadaf Ebrahimi </action> 409*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="richarda23"> 410*0c4d7b72SSadaf Ebrahimi FileFilterTest minor fixes #340. 411*0c4d7b72SSadaf Ebrahimi </action> 412*0c4d7b72SSadaf Ebrahimi <action issue="IO-764" dev="ggregory" type="fix" due-to="DaGeRe, Gary Gregory"> 413*0c4d7b72SSadaf Ebrahimi IOUtils.write() throws OutOfMemoryError/NegativeArraySizeException while writing big strings #343. 414*0c4d7b72SSadaf Ebrahimi </action> 415*0c4d7b72SSadaf Ebrahimi <action issue="IO-768" dev="ggregory" type="fix" due-to="Marcono1234, Michael Osipov"> 416*0c4d7b72SSadaf Ebrahimi Add reserved Windows file names CONIN$ and CONOUT$ to FileSystem #355. 417*0c4d7b72SSadaf Ebrahimi </action> 418*0c4d7b72SSadaf Ebrahimi <action issue="IO-773" dev="ggregory" type="fix" due-to="Dominik Reinarz, Gary Gregory"> 419*0c4d7b72SSadaf Ebrahimi RegexFileFilter is no longer Serializable. 420*0c4d7b72SSadaf Ebrahimi </action> 421*0c4d7b72SSadaf Ebrahimi <action issue="IO-763" dev="ggregory" type="fix" due-to="Richard Adams, Gary Gregory"> 422*0c4d7b72SSadaf Ebrahimi [Javadoc] FileFilterUtils doc does not match impl: missing some file filters. 423*0c4d7b72SSadaf Ebrahimi </action> 424*0c4d7b72SSadaf Ebrahimi <action issue="IO-762" dev="ggregory" type="fix" due-to="Leonidas Chiron, Gary Gregory"> 425*0c4d7b72SSadaf Ebrahimi FileSystem.WINDOWS.isReservedFileName doesn't check for file extension. 426*0c4d7b72SSadaf Ebrahimi </action> 427*0c4d7b72SSadaf Ebrahimi <action issue="IO-772" dev="ggregory" type="fix" due-to="Dan Ziemba, Gary Gregory"> 428*0c4d7b72SSadaf Ebrahimi Confusing Javadoc on IOUtils#resourceToURL() and other resource* methods. 429*0c4d7b72SSadaf Ebrahimi </action> 430*0c4d7b72SSadaf Ebrahimi <action issue="IO-443" dev="ggregory" type="fix" due-to="Dan Ziemba, Gary Gregory"> 431*0c4d7b72SSadaf Ebrahimi FileUtils.copyFile methods throw an unnecessary "Failed to copy full contents from" exception. 432*0c4d7b72SSadaf Ebrahimi </action> 433*0c4d7b72SSadaf Ebrahimi <action issue="IO-564" dev="ggregory" type="fix" due-to="Hao Zhong, Bernd Eckenfels, Pascal Schumacher, Gary Gregory"> 434*0c4d7b72SSadaf Ebrahimi Pick up Javadoc from super for override write() methods in AbstractByteArrayOutputStream and ByteArrayOutputStream. 435*0c4d7b72SSadaf Ebrahimi </action> 436*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Marc Wrobel"> 437*0c4d7b72SSadaf Ebrahimi Fix minor typos #367. 438*0c4d7b72SSadaf Ebrahimi </action> 439*0c4d7b72SSadaf Ebrahimi <action issue="IO-776" dev="kinow" type="fix" due-to="Chris Povirk"> 440*0c4d7b72SSadaf Ebrahimi Fix parameters to requireNonNull call in DeferredOutputSteam #368. 441*0c4d7b72SSadaf Ebrahimi </action> 442*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 443*0c4d7b72SSadaf Ebrahimi Fix PathUtils.copyFileToDirectory(URL,Path,CopyOption[]). 444*0c4d7b72SSadaf Ebrahimi </action> 445*0c4d7b72SSadaf Ebrahimi <action issue="IO-386" dev="ggregory" type="fix" due-to="Sebb, Bernd Eckenfels, zhipengxu, Gary Gregory"> 446*0c4d7b72SSadaf Ebrahimi FileUtils.doCopyFile uses different methods to check the file sizes. 447*0c4d7b72SSadaf Ebrahimi </action> 448*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Michael Ernst"> 449*0c4d7b72SSadaf Ebrahimi Fix typos #375. 450*0c4d7b72SSadaf Ebrahimi </action> 451*0c4d7b72SSadaf Ebrahimi <action issue="IO-611" dev="ggregory" type="fix" due-to="Fedor Urvanov"> 452*0c4d7b72SSadaf Ebrahimi FilenameUtils.normalize javadoc and tests #383. 453*0c4d7b72SSadaf Ebrahimi </action> 454*0c4d7b72SSadaf Ebrahimi <action issue="IO-611" dev="ggregory" type="fix" due-to="ArdenL-Liu, Bruno P. Kinoshita, Gary Gregory"> 455*0c4d7b72SSadaf Ebrahimi Better docs in IOUtils and IOUtils.byteArray(int size) #374. 456*0c4d7b72SSadaf Ebrahimi </action> 457*0c4d7b72SSadaf Ebrahimi <action issue="IO-782" dev="ggregory" type="fix" due-to="Matteo Di Giovinazzo, Gary Gregory"> 458*0c4d7b72SSadaf Ebrahimi SequenceReader should close readers when its close method is called #391. 459*0c4d7b72SSadaf Ebrahimi </action> 460*0c4d7b72SSadaf Ebrahimi <action issue="IO-790" dev="ggregory" type="fix" due-to="Miguel Muñoz, Gary Gregory"> 461*0c4d7b72SSadaf Ebrahimi Fix symbolic link file filter #450. 462*0c4d7b72SSadaf Ebrahimi </action> 463*0c4d7b72SSadaf Ebrahimi <action issue="IO-790" dev="ggregory" type="fix" due-to="maxxedev, Gary Gregory, Bruno P. Kinoshita"> 464*0c4d7b72SSadaf Ebrahimi Apply nanoseconds precision for QueueInputStream timeout duration. #453. 465*0c4d7b72SSadaf Ebrahimi </action> 466*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Marcono1234"> 467*0c4d7b72SSadaf Ebrahimi Fix overflow for FileUtilsTest constants #456. 468*0c4d7b72SSadaf Ebrahimi </action> 469*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 470*0c4d7b72SSadaf Ebrahimi Serialization is deprecated and will be removed in 3.0. 471*0c4d7b72SSadaf Ebrahimi </action> 472*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 473*0c4d7b72SSadaf Ebrahimi FileSystemUtils.performCommand(String[], int, Duration): Use Locale.getDefault() instead of ENGLISH. 474*0c4d7b72SSadaf Ebrahimi </action> 475*0c4d7b72SSadaf Ebrahimi <!-- ADD --> 476*0c4d7b72SSadaf Ebrahimi <action type="add" dev="ggregory" due-to="Gary Gregory"> 477*0c4d7b72SSadaf Ebrahimi Add GitHub coverage.yml. 478*0c4d7b72SSadaf Ebrahimi </action> 479*0c4d7b72SSadaf Ebrahimi <action issue="IO-726" dev="ggregory" type="fix" due-to="shollander, Gary Gregory"> 480*0c4d7b72SSadaf Ebrahimi Add MemoryMappedFileInputStream #215. 481*0c4d7b72SSadaf Ebrahimi </action> 482*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 483*0c4d7b72SSadaf Ebrahimi Add BrokenReader.INSTANCE. 484*0c4d7b72SSadaf Ebrahimi </action> 485*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 486*0c4d7b72SSadaf Ebrahimi Add UncheckedBufferedReader. 487*0c4d7b72SSadaf Ebrahimi </action> 488*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 489*0c4d7b72SSadaf Ebrahimi Add UncheckedFilterReader. 490*0c4d7b72SSadaf Ebrahimi </action> 491*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 492*0c4d7b72SSadaf Ebrahimi Add UncheckedFilterWriter. 493*0c4d7b72SSadaf Ebrahimi </action> 494*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 495*0c4d7b72SSadaf Ebrahimi Add UncheckedFilterInputStream. 496*0c4d7b72SSadaf Ebrahimi </action> 497*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 498*0c4d7b72SSadaf Ebrahimi Add UncheckedFilterOutputStream. 499*0c4d7b72SSadaf Ebrahimi </action> 500*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 501*0c4d7b72SSadaf Ebrahimi Add BrokenInputStream.INSTANCE. 502*0c4d7b72SSadaf Ebrahimi </action> 503*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 504*0c4d7b72SSadaf Ebrahimi Add ClosedInputStream.INSTANCE and deprecate CLOSED_INPUT_STREAM. 505*0c4d7b72SSadaf Ebrahimi </action> 506*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 507*0c4d7b72SSadaf Ebrahimi Add ClosedReader.INSTANCE and deprecate CLOSED_READER. 508*0c4d7b72SSadaf Ebrahimi </action> 509*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 510*0c4d7b72SSadaf Ebrahimi Add BrokenWriter.INSTANCE. 511*0c4d7b72SSadaf Ebrahimi </action> 512*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 513*0c4d7b72SSadaf Ebrahimi Add ClosedOutputStream.INSTANCE and deprecate CLOSED_OUTPUT_STREAM. 514*0c4d7b72SSadaf Ebrahimi </action> 515*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 516*0c4d7b72SSadaf Ebrahimi Add ClosedWriter.INSTANCE and deprecate CLOSED_WRITER. 517*0c4d7b72SSadaf Ebrahimi </action> 518*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 519*0c4d7b72SSadaf Ebrahimi Add NullOutputStream.INSTANCE and deprecate NULL_OUTPUT_STREAM. 520*0c4d7b72SSadaf Ebrahimi </action> 521*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 522*0c4d7b72SSadaf Ebrahimi Add NullPrintStream.INSTANCE and deprecate NULL_PRINT_STREAM. 523*0c4d7b72SSadaf Ebrahimi </action> 524*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 525*0c4d7b72SSadaf Ebrahimi Add NullWriter.INSTANCE and deprecate NULL_WRITER. 526*0c4d7b72SSadaf Ebrahimi </action> 527*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 528*0c4d7b72SSadaf Ebrahimi Add NullInputStream.INSTANCE. 529*0c4d7b72SSadaf Ebrahimi </action> 530*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 531*0c4d7b72SSadaf Ebrahimi Add NullReader.INSTANCE. 532*0c4d7b72SSadaf Ebrahimi </action> 533*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 534*0c4d7b72SSadaf Ebrahimi Add PathUtils.readString(Path, Charset). 535*0c4d7b72SSadaf Ebrahimi </action> 536*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 537*0c4d7b72SSadaf Ebrahimi Add FileUtils.newOutputStream(File, boolean). 538*0c4d7b72SSadaf Ebrahimi </action> 539*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 540*0c4d7b72SSadaf Ebrahimi Add PathUtils.newOutputStream(Path, boolean). 541*0c4d7b72SSadaf Ebrahimi </action> 542*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 543*0c4d7b72SSadaf Ebrahimi Add UncheckedAppendable. 544*0c4d7b72SSadaf Ebrahimi </action> 545*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 546*0c4d7b72SSadaf Ebrahimi Add and reuse UncheckedIOExceptions. 547*0c4d7b72SSadaf Ebrahimi </action> 548*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 549*0c4d7b72SSadaf Ebrahimi Add PathUtils.getTempDirectory(). 550*0c4d7b72SSadaf Ebrahimi </action> 551*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 552*0c4d7b72SSadaf Ebrahimi Add FileSystem.getNameSeparator(). 553*0c4d7b72SSadaf Ebrahimi </action> 554*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 555*0c4d7b72SSadaf Ebrahimi Add FileSystem.normalizeSeparators(). 556*0c4d7b72SSadaf Ebrahimi </action> 557*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 558*0c4d7b72SSadaf Ebrahimi Add PathUtils.isNewer(Path, FileTime, LinkOption...). 559*0c4d7b72SSadaf Ebrahimi </action> 560*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 561*0c4d7b72SSadaf Ebrahimi Add PathUtils.isNewer(Path, Instant, LinkOption...). 562*0c4d7b72SSadaf Ebrahimi </action> 563*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 564*0c4d7b72SSadaf Ebrahimi Add AgeFileFilter.AgeFileFilter(Instant). 565*0c4d7b72SSadaf Ebrahimi Add AgeFileFilter.AgeFileFilter(Instant, boolean). 566*0c4d7b72SSadaf Ebrahimi </action> 567*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 568*0c4d7b72SSadaf Ebrahimi Add FileUtils.lastModifiedFileTime(File). 569*0c4d7b72SSadaf Ebrahimi </action> 570*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 571*0c4d7b72SSadaf Ebrahimi Add FileTimes. 572*0c4d7b72SSadaf Ebrahimi </action> 573*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 574*0c4d7b72SSadaf Ebrahimi Add PathUtils.waitFor(Path, Duration, LinkOption...). 575*0c4d7b72SSadaf Ebrahimi </action> 576*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 577*0c4d7b72SSadaf Ebrahimi Add org.apache.commons.io.input.Tailer.getDelayDuration(). 578*0c4d7b72SSadaf Ebrahimi </action> 579*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 580*0c4d7b72SSadaf Ebrahimi Add FileUtils.current(). 581*0c4d7b72SSadaf Ebrahimi </action> 582*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 583*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.setLastModifiedTime(Path) for more precision. 584*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.setLastModifiedTime(Path, Path) for more precision. 585*0c4d7b72SSadaf Ebrahimi </action> 586*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 587*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.isNewer(Path, ChronoZonedDateTime, LinkOption...) for more precision. 588*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.isNewer(Path, Path) for more precision. 589*0c4d7b72SSadaf Ebrahimi Add and use FileUtils.isNewer(File, FileTime) for more precision. 590*0c4d7b72SSadaf Ebrahimi </action> 591*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 592*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.isOlder(Path, FileTime, LinkOption...). 593*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.isOlder(Path, Instant, LinkOption...). 594*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.isOlder(Path, long, LinkOption...). 595*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.isOlder(Path, Path). 596*0c4d7b72SSadaf Ebrahimi </action> 597*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 598*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.sizeOf(Path). 599*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.sizeOfAsBigInteger(Path). 600*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.sizeOfDirectory(Path). 601*0c4d7b72SSadaf Ebrahimi Add and use PathUtils.sizeOfDirectoryAsBigInteger(Path). 602*0c4d7b72SSadaf Ebrahimi </action> 603*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 604*0c4d7b72SSadaf Ebrahimi Add and use IOCase.value(IOCase, IOCase). 605*0c4d7b72SSadaf Ebrahimi </action> 606*0c4d7b72SSadaf Ebrahimi <action dev="jonfreedman" type="add" due-to="Jon Freedman, Gary Gregory"> 607*0c4d7b72SSadaf Ebrahimi Add Tailer.Tailable interface to allow tailing of remote files for example using jCIFS. 608*0c4d7b72SSadaf Ebrahimi </action> 609*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 610*0c4d7b72SSadaf Ebrahimi Add and use RandomAccessFileMode. 611*0c4d7b72SSadaf Ebrahimi </action> 612*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 613*0c4d7b72SSadaf Ebrahimi Add PathUtils.writeString(Path, CharSequence, Charset, OpenOption...). 614*0c4d7b72SSadaf Ebrahimi </action> 615*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 616*0c4d7b72SSadaf Ebrahimi Add PathUtiFiles.getFileAttributeView() shorthands: 617*0c4d7b72SSadaf Ebrahimi - PathUtils.getAclFileAttributeView(Path, LinkOption...) 618*0c4d7b72SSadaf Ebrahimi - PathUtils.getDosFileAttributeView(Path, LinkOption...) 619*0c4d7b72SSadaf Ebrahimi - PathUtils.getPosixFileAttributeView(Path, LinkOption...) 620*0c4d7b72SSadaf Ebrahimi </action> 621*0c4d7b72SSadaf Ebrahimi <action issue="IO-747" dev="mgrigorov" type="add"> 622*0c4d7b72SSadaf Ebrahimi Make commons-io a JPMS module by adding module-info.class. 623*0c4d7b72SSadaf Ebrahimi </action> 624*0c4d7b72SSadaf Ebrahimi <action issue="IO-753" dev="ggregory" type="add" due-to="SebastianDietrich, Gary Gregory"> 625*0c4d7b72SSadaf Ebrahimi Add IOUtils method to copy output stream to input stream #281. 626*0c4d7b72SSadaf Ebrahimi </action> 627*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 628*0c4d7b72SSadaf Ebrahimi Add PathUtils.isPosix(Path, LinkOption...). #290 629*0c4d7b72SSadaf Ebrahimi </action> 630*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 631*0c4d7b72SSadaf Ebrahimi Add PathUtils.readAttributes(Path, Class, LinkOption...). #290 632*0c4d7b72SSadaf Ebrahimi </action> 633*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 634*0c4d7b72SSadaf Ebrahimi Add IOExceptionList.checkEmpty(List, Object). 635*0c4d7b72SSadaf Ebrahimi </action> 636*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 637*0c4d7b72SSadaf Ebrahimi Add IOBiConsumer, IOTriConsumer, IOComparator, IOUnaryOperator, IOBinaryOperator. 638*0c4d7b72SSadaf Ebrahimi </action> 639*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 640*0c4d7b72SSadaf Ebrahimi Add and reuse IOConsumer forAll(*), forEach(*), and forEachIndexed(*). 641*0c4d7b72SSadaf Ebrahimi </action> 642*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 643*0c4d7b72SSadaf Ebrahimi Add CharsetEncoders. 644*0c4d7b72SSadaf Ebrahimi </action> 645*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 646*0c4d7b72SSadaf Ebrahimi Add CharsetDecoders. 647*0c4d7b72SSadaf Ebrahimi </action> 648*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 649*0c4d7b72SSadaf Ebrahimi Add PathUtils.createParentDirectories(Path, LinkOption, FileAttribute...). 650*0c4d7b72SSadaf Ebrahimi </action> 651*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 652*0c4d7b72SSadaf Ebrahimi Update FileEntry to use FileTime instead of long for file time stamps. 653*0c4d7b72SSadaf Ebrahimi </action> 654*0c4d7b72SSadaf Ebrahimi <action issue="IO-680" dev="ggregory" type="add" due-to="XenoAmess, sebbASF, Gary Gregory"> 655*0c4d7b72SSadaf Ebrahimi Add more tests for IOUtils.contentEqualsIgnoreEOL #137. 656*0c4d7b72SSadaf Ebrahimi </action> 657*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 658*0c4d7b72SSadaf Ebrahimi Reduce boilerplate through new UncheckedIO class and friends in org.apache.commons.io.function. 659*0c4d7b72SSadaf Ebrahimi </action> 660*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 661*0c4d7b72SSadaf Ebrahimi Add PathUtils.touch(Path). 662*0c4d7b72SSadaf Ebrahimi </action> 663*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 664*0c4d7b72SSadaf Ebrahimi Add FileSystem.getIllegalFileNameCodePoints(). 665*0c4d7b72SSadaf Ebrahimi </action> 666*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Isira Seneviratne, Gary Gregory"> 667*0c4d7b72SSadaf Ebrahimi Add FileUtils.isFileNewer(File, ChronoLocalDate, OffsetTime). 668*0c4d7b72SSadaf Ebrahimi Add FileUtils.isFileNewer(File, OffsetDateTime). 669*0c4d7b72SSadaf Ebrahimi Add FileUtils.isFileOlder(File, ChronoLocalDate, OffsetTime). 670*0c4d7b72SSadaf Ebrahimi Add FileUtils.isFileOlder(File, OffsetDateTime). 671*0c4d7b72SSadaf Ebrahimi </action> 672*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 673*0c4d7b72SSadaf Ebrahimi Add IOBiConsumer.noop(). 674*0c4d7b72SSadaf Ebrahimi </action> 675*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 676*0c4d7b72SSadaf Ebrahimi Add IOUtils.closeQuietly(Iterable<Closeable>). 677*0c4d7b72SSadaf Ebrahimi Add IOUtils.closeQuietly(Stream<Closeable>). 678*0c4d7b72SSadaf Ebrahimi </action> 679*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 680*0c4d7b72SSadaf Ebrahimi Add Charsets.toCharset(Charset, Charset). 681*0c4d7b72SSadaf Ebrahimi Add Charsets.toCharset(String, Charset). 682*0c4d7b72SSadaf Ebrahimi </action> 683*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 684*0c4d7b72SSadaf Ebrahimi Add XmlStreamWriter(OutputStream, Charset). 685*0c4d7b72SSadaf Ebrahimi </action> 686*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 687*0c4d7b72SSadaf Ebrahimi Add PathUtils.getLastModifiedFileTime(*). 688*0c4d7b72SSadaf Ebrahimi </action> 689*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 690*0c4d7b72SSadaf Ebrahimi Add IOBiFunction, IOTriFunction, IOQuadFunction, IOPredicate, IOIterator, IOSpliterator, IOBaseStream, IOStream, FilesUncheck. 691*0c4d7b72SSadaf Ebrahimi </action> 692*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 693*0c4d7b72SSadaf Ebrahimi Add IOUtils.consume(Reader). 694*0c4d7b72SSadaf Ebrahimi </action> 695*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 696*0c4d7b72SSadaf Ebrahimi Add IOSupplier.asSupplier(). 697*0c4d7b72SSadaf Ebrahimi </action> 698*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 699*0c4d7b72SSadaf Ebrahimi Add IOFunction.asFunction(). 700*0c4d7b72SSadaf Ebrahimi </action> 701*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 702*0c4d7b72SSadaf Ebrahimi Add IOConsumer.asConsumer(). 703*0c4d7b72SSadaf Ebrahimi </action> 704*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 705*0c4d7b72SSadaf Ebrahimi Add TimestampedObserver.isClosed(). 706*0c4d7b72SSadaf Ebrahimi </action> 707*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 708*0c4d7b72SSadaf Ebrahimi IOExceptionList implements Iterable. 709*0c4d7b72SSadaf Ebrahimi </action> 710*0c4d7b72SSadaf Ebrahimi <action issue="IO-784" dev="ggregory" type="add" due-to="Fredrik Kjellberg, Gary Gregory"> 711*0c4d7b72SSadaf Ebrahimi Add support for Appendable to HexDump #418. 712*0c4d7b72SSadaf Ebrahimi </action> 713*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="DaGeRe, Gary Gregory"> 714*0c4d7b72SSadaf Ebrahimi Add and use ThreadUtils. 715*0c4d7b72SSadaf Ebrahimi </action> 716*0c4d7b72SSadaf Ebrahimi <action issue="IO-786" dev="ggregory" type="add" due-to="Gary Gregory"> 717*0c4d7b72SSadaf Ebrahimi Add UnsynchronizedFilterInputStream. 718*0c4d7b72SSadaf Ebrahimi </action> 719*0c4d7b72SSadaf Ebrahimi <action issue="IO-786" dev="ggregory" type="add" due-to="Gary Gregory, Benoit Tellier"> 720*0c4d7b72SSadaf Ebrahimi Add UnsynchronizedBufferedInputStream. 721*0c4d7b72SSadaf Ebrahimi </action> 722*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 723*0c4d7b72SSadaf Ebrahimi Add FileSystem.getBlockSize(). 724*0c4d7b72SSadaf Ebrahimi </action> 725*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 726*0c4d7b72SSadaf Ebrahimi Add builders and avoid creating more constructors for all permutations of current options. 727*0c4d7b72SSadaf Ebrahimi </action> 728*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory, maxxedev"> 729*0c4d7b72SSadaf Ebrahimi Refactor using new Supplier API IOUtils.toString(IOSupplier<InputStream>, Charset[, IOSupplier<String>]). 730*0c4d7b72SSadaf Ebrahimi </action> 731*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory, maxxedev"> 732*0c4d7b72SSadaf Ebrahimi Refactor using new Supplier API org.apache.commons.io.file.PathUtils.copy(IOSupplier<InputStream>, Path, CopyOption...). 733*0c4d7b72SSadaf Ebrahimi </action> 734*0c4d7b72SSadaf Ebrahimi <!-- UPDATE --> 735*0c4d7b72SSadaf Ebrahimi <action dev="kinow" type="update" due-to="Dependabot, Gary Gregory"> 736*0c4d7b72SSadaf Ebrahimi Bump actions/cache from 2.1.6 to 3.0.10 #307, #337, #393. 737*0c4d7b72SSadaf Ebrahimi </action> 738*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> 739*0c4d7b72SSadaf Ebrahimi Bump actions/checkout from 2.3.4 to 3.1.0 #286, #298, #330, #392. 740*0c4d7b72SSadaf Ebrahimi </action> 741*0c4d7b72SSadaf Ebrahimi <action dev="kinow" type="update" due-to="Dependabot"> 742*0c4d7b72SSadaf Ebrahimi Bump actions/setup-java from 2 to 3.6.0 #346, #397. 743*0c4d7b72SSadaf Ebrahimi </action> 744*0c4d7b72SSadaf Ebrahimi <action dev="kinow" type="update" due-to="Dependabot"> 745*0c4d7b72SSadaf Ebrahimi Bump github/codeql-action from 1 to 2 #353. 746*0c4d7b72SSadaf Ebrahimi </action> 747*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> 748*0c4d7b72SSadaf Ebrahimi Bump Maven Javadoc plugin from 3.2.0 to 3.4.1. 749*0c4d7b72SSadaf Ebrahimi </action> 750*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 751*0c4d7b72SSadaf Ebrahimi 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. 752*0c4d7b72SSadaf Ebrahimi </action> 753*0c4d7b72SSadaf Ebrahimi <action dev="kinow" type="update" due-to="Gary Gregory, Dependabot"> 754*0c4d7b72SSadaf Ebrahimi Bump spotbugs from 4.5.2 to 4.7.3 #313, #317, #357, #382, #398. 755*0c4d7b72SSadaf Ebrahimi </action> 756*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 757*0c4d7b72SSadaf Ebrahimi Bump JUnit from 5.7.2 to 5.8.2. 758*0c4d7b72SSadaf Ebrahimi </action> 759*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 760*0c4d7b72SSadaf Ebrahimi Bump maven-enforcer-plugin from 3.0.0-M3 to 3.3.0 #255, #363, #431, #446. 761*0c4d7b72SSadaf Ebrahimi </action> 762*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> 763*0c4d7b72SSadaf Ebrahimi Bump checkstyle from 8.44 to 9.3 #256, #257, #266, #279, #292. #308. 764*0c4d7b72SSadaf Ebrahimi </action> 765*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 766*0c4d7b72SSadaf Ebrahimi Bump junit-bom from 5.8.0-M1 to 5.9.1 #260, #271, #275, #309, #386. 767*0c4d7b72SSadaf Ebrahimi </action> 768*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> 769*0c4d7b72SSadaf Ebrahimi Bump mockito-inline from 3.11.2 to 4.11.0 #262, #264, #282, #306, #314, #331, #348, #359, #381, #399, #405, #414, #420. 770*0c4d7b72SSadaf Ebrahimi </action> 771*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 772*0c4d7b72SSadaf Ebrahimi Bump jmh.version from 1.32 to 1.36 #258, #316, #342, #404. 773*0c4d7b72SSadaf Ebrahimi </action> 774*0c4d7b72SSadaf Ebrahimi <action dev="kinow" type="update" due-to="Dependabot"> 775*0c4d7b72SSadaf Ebrahimi Bump moditect-maven-plugin from 1.0.0.RC1 to 1.0.0.Final #280, #439, #445. 776*0c4d7b72SSadaf Ebrahimi </action> 777*0c4d7b72SSadaf Ebrahimi <action dev="kinow" type="update" due-to="Dependabot, Gary Gregory"> 778*0c4d7b72SSadaf Ebrahimi Bump junit-pioneer from 1.4.2 to 1.9.1 #304. #335, #362, #402, #406, #409. 779*0c4d7b72SSadaf Ebrahimi </action> 780*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 781*0c4d7b72SSadaf Ebrahimi Bump japicmp-maven-plugin from 0.15.3 to 0.16.0. 782*0c4d7b72SSadaf Ebrahimi </action> 783*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> 784*0c4d7b72SSadaf Ebrahimi Bump commons-parent from 52 to 57 #388, #415, #421, #184. 785*0c4d7b72SSadaf Ebrahimi </action> 786*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 787*0c4d7b72SSadaf Ebrahimi Bump jacoco-maven-plugin from 0.8.7 to 0.8.8. 788*0c4d7b72SSadaf Ebrahimi </action> 789*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 790*0c4d7b72SSadaf Ebrahimi Bump maven-antrun-plugin from 3.0.0 to 3.1.0 #354. 791*0c4d7b72SSadaf Ebrahimi </action> 792*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 793*0c4d7b72SSadaf Ebrahimi Bump commons.surefire.version 3.0.0-M5 to 3.0.0-M7. 794*0c4d7b72SSadaf Ebrahimi </action> 795*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 796*0c4d7b72SSadaf Ebrahimi Bump PMD from 6.44.0 to 6.52.0. 797*0c4d7b72SSadaf Ebrahimi </action> 798*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 799*0c4d7b72SSadaf Ebrahimi Bump maven-pmd-plugin from 3.16.0 to 3.19.0. 800*0c4d7b72SSadaf Ebrahimi </action> 801*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 802*0c4d7b72SSadaf Ebrahimi Bump apache-rat from 0.13 to 0.14. 803*0c4d7b72SSadaf Ebrahimi </action> 804*0c4d7b72SSadaf Ebrahimi <action dev="kinow" type="update" due-to="Dependabot"> 805*0c4d7b72SSadaf Ebrahimi Bump exec-maven-plugin from 3.0.0 to 3.1.0 #369. 806*0c4d7b72SSadaf Ebrahimi </action> 807*0c4d7b72SSadaf Ebrahimi <action dev="kinow" type="update" due-to="Dependabot"> 808*0c4d7b72SSadaf Ebrahimi Bump maven-checkstyle-plugin from 3.1.2 to 3.2.0 #376. 809*0c4d7b72SSadaf Ebrahimi </action> 810*0c4d7b72SSadaf Ebrahimi <action dev="kinow" type="update" due-to="Dependabot"> 811*0c4d7b72SSadaf Ebrahimi Bump apache-rat-plugin from 0.14 to 0.15 #387. 812*0c4d7b72SSadaf Ebrahimi </action> 813*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 814*0c4d7b72SSadaf Ebrahimi Bump default buffer size for CharSequenceInputStream to IOUtils#DEFAULT_BUFFER_SIZE. 815*0c4d7b72SSadaf Ebrahimi </action> 816*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 817*0c4d7b72SSadaf Ebrahimi Bump default buffer size for ChunkedOutputStream to IOUtils#DEFAULT_BUFFER_SIZE. 818*0c4d7b72SSadaf Ebrahimi </action> 819*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 820*0c4d7b72SSadaf Ebrahimi Bump default buffer size for ChunkedWriter to IOUtils#DEFAULT_BUFFER_SIZE. 821*0c4d7b72SSadaf Ebrahimi </action> 822*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 823*0c4d7b72SSadaf Ebrahimi Bump default buffer size for ReaderInputStream to IOUtils#DEFAULT_BUFFER_SIZE. 824*0c4d7b72SSadaf Ebrahimi </action> 825*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 826*0c4d7b72SSadaf Ebrahimi Bump default buffer size for WriterOutputStream to IOUtils#DEFAULT_BUFFER_SIZE. 827*0c4d7b72SSadaf Ebrahimi </action> 828*0c4d7b72SSadaf Ebrahimi </release> 829*0c4d7b72SSadaf Ebrahimi <release version="2.11.0" date="2021-07-09" description="Java 8 is required."> 830*0c4d7b72SSadaf Ebrahimi <!-- FIX --> 831*0c4d7b72SSadaf Ebrahimi <action issue="IO-741" dev="ggregory" type="fix" due-to="Zach Sherman"> 832*0c4d7b72SSadaf Ebrahimi FileUtils.listFiles does not list matching files if File parameter is a symbolic link. 833*0c4d7b72SSadaf Ebrahimi </action> 834*0c4d7b72SSadaf Ebrahimi <action issue="IO-724" dev="ggregory" type="fix" due-to="liran2000"> 835*0c4d7b72SSadaf Ebrahimi FileUtils#deleteDirectory(File) exception Javadoc inaccurate update #245. 836*0c4d7b72SSadaf Ebrahimi </action> 837*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Arturo Bernal"> 838*0c4d7b72SSadaf Ebrahimi Minor changes #243. 839*0c4d7b72SSadaf Ebrahimi </action> 840*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Arturo Bernal"> 841*0c4d7b72SSadaf Ebrahimi Replace construction of FileInputStream and FileOutputStream objects with Files NIO APIs. #221. 842*0c4d7b72SSadaf Ebrahimi </action> 843*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 844*0c4d7b72SSadaf Ebrahimi Fix IndexOutOfBoundsException in IOExceptionList constructors. 845*0c4d7b72SSadaf Ebrahimi </action> 846*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 847*0c4d7b72SSadaf Ebrahimi Remove IOException from the method signatures that no longer throw IOException. 848*0c4d7b72SSadaf Ebrahimi This maintains binary compatibility but not source compatibility. 849*0c4d7b72SSadaf Ebrahimi - FilenameUtils 850*0c4d7b72SSadaf Ebrahimi directoryContains(String, String) 851*0c4d7b72SSadaf Ebrahimi - BoundedReader 852*0c4d7b72SSadaf Ebrahimi BoundedReader(java.io.Reader, int) 853*0c4d7b72SSadaf Ebrahimi - IOUtils 854*0c4d7b72SSadaf Ebrahimi lineIterator(java.io.InputStream, Charset) 855*0c4d7b72SSadaf Ebrahimi lineIterator(java.io.InputStream, String) 856*0c4d7b72SSadaf Ebrahimi toByteArray(String) 857*0c4d7b72SSadaf Ebrahimi toInputStream(CharSequence, String) 858*0c4d7b72SSadaf Ebrahimi toInputStream(String, String) 859*0c4d7b72SSadaf Ebrahimi toString(byte[]) 860*0c4d7b72SSadaf Ebrahimi toString(byte[], String) 861*0c4d7b72SSadaf Ebrahimi </action> 862*0c4d7b72SSadaf Ebrahimi <!-- ADD --> 863*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 864*0c4d7b72SSadaf Ebrahimi Add SymbolicLinkFileFilter. 865*0c4d7b72SSadaf Ebrahimi </action> 866*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="trncate"> 867*0c4d7b72SSadaf Ebrahimi Add test to make sure the setter of AndFileFilter works correctly #244. 868*0c4d7b72SSadaf Ebrahimi </action> 869*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 870*0c4d7b72SSadaf Ebrahimi Add XmlStreamReader(Path). 871*0c4d7b72SSadaf Ebrahimi </action> 872*0c4d7b72SSadaf Ebrahimi <!-- UPDATE --> 873*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 874*0c4d7b72SSadaf Ebrahimi Bump mockito-inline from 3.11.0 to 3.11.2 #247. 875*0c4d7b72SSadaf Ebrahimi </action> 876*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 877*0c4d7b72SSadaf Ebrahimi Bump jmh.version from 1.27 to 1.32 #237. 878*0c4d7b72SSadaf Ebrahimi </action> 879*0c4d7b72SSadaf Ebrahimi </release> 880*0c4d7b72SSadaf Ebrahimi <!-- The release date is the date RC is cut --> 881*0c4d7b72SSadaf Ebrahimi <release version="2.10.0" date="2021-06-10" description="Java 8 is required."> 882*0c4d7b72SSadaf Ebrahimi <!-- FIX --> 883*0c4d7b72SSadaf Ebrahimi <action issue="IO-733" dev="ggregory" type="fix" due-to="Jim Sellers, Gary Gregory"> 884*0c4d7b72SSadaf Ebrahimi RegexFileFilter uses the path and file name instead of just the file name. 885*0c4d7b72SSadaf Ebrahimi </action> 886*0c4d7b72SSadaf Ebrahimi <action issue="IO-734" dev="ggregory" type="fix" due-to="Eric Norman"> 887*0c4d7b72SSadaf Ebrahimi The OSGi manifest now contains sun.* import packages #239. 888*0c4d7b72SSadaf Ebrahimi </action> 889*0c4d7b72SSadaf Ebrahimi <action issue="IO-585" dev="ggregory" type="fix" due-to="Adam McClenaghan"> 890*0c4d7b72SSadaf Ebrahimi Sanitize double slash after prefix #79. 891*0c4d7b72SSadaf Ebrahimi </action> 892*0c4d7b72SSadaf Ebrahimi <!-- ADD --> 893*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 894*0c4d7b72SSadaf Ebrahimi Add and use RegexFileFilter.toString(). 895*0c4d7b72SSadaf Ebrahimi </action> 896*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 897*0c4d7b72SSadaf Ebrahimi Add and use RegexFileFilter.RegexFileFilter(Pattern, Function<Path>, String>) 898*0c4d7b72SSadaf Ebrahimi </action> 899*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 900*0c4d7b72SSadaf Ebrahimi Add and use IOCase.isCaseSensitive(IOCase). 901*0c4d7b72SSadaf Ebrahimi </action> 902*0c4d7b72SSadaf Ebrahimi <!-- UPDATES --> 903*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 904*0c4d7b72SSadaf Ebrahimi Bump actions/cache from 2.1.5 to 2.1.6 #238. 905*0c4d7b72SSadaf Ebrahimi </action> 906*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 907*0c4d7b72SSadaf Ebrahimi Bump junit-pioneer from 1.4.1 to 1.4.2 #240. 908*0c4d7b72SSadaf Ebrahimi </action> 909*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 910*0c4d7b72SSadaf Ebrahimi Bump checkstyle from 8.42 to 8.44 #241, #248. 911*0c4d7b72SSadaf Ebrahimi </action> 912*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 913*0c4d7b72SSadaf Ebrahimi Bump mockito-inline from 3.10.0 to 3.11.0 #242. 914*0c4d7b72SSadaf Ebrahimi </action> 915*0c4d7b72SSadaf Ebrahimi </release> 916*0c4d7b72SSadaf Ebrahimi <release version="2.9.0" date="2021-05-22" description="Java 8 is required."> 917*0c4d7b72SSadaf Ebrahimi <!-- FIX --> 918*0c4d7b72SSadaf Ebrahimi <action issue="IO-686" dev="ggregory" type="fix" due-to="Alan Moffat, Gary Gregory"> 919*0c4d7b72SSadaf Ebrahimi IOUtils.toByteArray(InputStream) Javadoc does not match code. 920*0c4d7b72SSadaf Ebrahimi </action> 921*0c4d7b72SSadaf Ebrahimi <action issue="IO-689" dev="aherbert" type="fix" due-to="Uwe Schindler"> 922*0c4d7b72SSadaf Ebrahimi FileUtils: Remove Instant->ZonedDateTime->Instant round-trip. 923*0c4d7b72SSadaf Ebrahimi </action> 924*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Michael Ernst, Gary Gregory"> 925*0c4d7b72SSadaf Ebrahimi Make FilenameUtils.equals() not throw an exception #154. 926*0c4d7b72SSadaf Ebrahimi </action> 927*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Jan Peter Stotz, Bernd Eckenfels, Gary Gregory"> 928*0c4d7b72SSadaf Ebrahimi Un-deprecate IOUtils.closeQuietly() methods. 929*0c4d7b72SSadaf Ebrahimi </action> 930*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Michiel Kalkman"> 931*0c4d7b72SSadaf Ebrahimi FileUtils#copyDirectory(File, File, FileFilter, preserveFileDate) clean up #163. 932*0c4d7b72SSadaf Ebrahimi </action> 933*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 934*0c4d7b72SSadaf Ebrahimi AccumulatorPathVisitor does not track directories properly. 935*0c4d7b72SSadaf Ebrahimi </action> 936*0c4d7b72SSadaf Ebrahimi <action issue="IO-597" dev="ggregory" type="fix" due-to="Gary Gregory, Arvind, Rob Spoor"> 937*0c4d7b72SSadaf Ebrahimi FileUtils.iterateFiles runs out of memory when executed for a directory with large number of files. 938*0c4d7b72SSadaf Ebrahimi Re-implement FileUtils' iterateFiles(), iterateFilesAndDirs(), listFiles(), listFilesAndDirs() to use NIO 939*0c4d7b72SSadaf Ebrahimi file tree walking instead of IO file listings to avoid memory consumption issues on large file trees. 940*0c4d7b72SSadaf Ebrahimi </action> 941*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 942*0c4d7b72SSadaf Ebrahimi FileUtils.forceDelete(File) actually forces deletion of read-only files as it did in version 2.6. 943*0c4d7b72SSadaf Ebrahimi </action> 944*0c4d7b72SSadaf Ebrahimi <action issue="IO-692" dev="ebourg" type="fix" due-to="Matthew Rooney, Emmanuel Bourg"> 945*0c4d7b72SSadaf Ebrahimi PathUtils.deleteFile() no longer throws a NoSuchFileException when applied on a symbolic link pointing 946*0c4d7b72SSadaf Ebrahimi to a file that doesn't exist. 947*0c4d7b72SSadaf Ebrahimi </action> 948*0c4d7b72SSadaf Ebrahimi <action issue="IO-694" dev="ggregory" type="fix" due-to="Tan Yee Fan, Gary Gregory"> 949*0c4d7b72SSadaf Ebrahimi Behavior change in FileUtils.copyDirectory() file last modified timestamp preservation. Match Javadoc to code. 950*0c4d7b72SSadaf Ebrahimi </action> 951*0c4d7b72SSadaf Ebrahimi <action issue="IO-600" dev="ggregory" type="fix" due-to="Abhyankar Chaubey, Gary Gregory"> 952*0c4d7b72SSadaf Ebrahimi Fix getPrefixLength method for Linux filename #179. 953*0c4d7b72SSadaf Ebrahimi </action> 954*0c4d7b72SSadaf Ebrahimi <action issue="IO-699" dev="ggregory" type="fix" due-to="tza, Gary Gregory"> 955*0c4d7b72SSadaf Ebrahimi Wrong logging in FileUtils.setLastModified. 956*0c4d7b72SSadaf Ebrahimi </action> 957*0c4d7b72SSadaf Ebrahimi <action issue="IO-686" dev="ggregory" type="fix" due-to="Alan Moffat, Sebb, Gary Gregory"> 958*0c4d7b72SSadaf Ebrahimi IOUtils.toByteArray(InputStream) Javadoc does not match code. 959*0c4d7b72SSadaf Ebrahimi </action> 960*0c4d7b72SSadaf Ebrahimi <action issue="IO-688" dev="ggregory" type="fix" due-to="Michael Ernst, Gary Gregory"> 961*0c4d7b72SSadaf Ebrahimi CopyUtils deprecation message gives wrong version. 962*0c4d7b72SSadaf Ebrahimi </action> 963*0c4d7b72SSadaf Ebrahimi <action issue="IO-701" dev="ggregory" type="fix" due-to="Gary Gregory"> 964*0c4d7b72SSadaf Ebrahimi Make PathUtils.setReadOnly deal with LinuxDosFileAttributeView #186. 965*0c4d7b72SSadaf Ebrahimi </action> 966*0c4d7b72SSadaf Ebrahimi <action issue="IO-702" dev="ggregory" type="fix" due-to="Boris Unckel, Gary Gregory"> 967*0c4d7b72SSadaf Ebrahimi FileUtils.forceDelete does not delete invalid links. #187. 968*0c4d7b72SSadaf Ebrahimi </action> 969*0c4d7b72SSadaf Ebrahimi <action issue="IO-690" dev="ggregory" type="fix" due-to="Chris Heisterkamp, Gary Gregory"> 970*0c4d7b72SSadaf Ebrahimi IOUtils.toByteArray(null) no longer throws a NullPointerException. 971*0c4d7b72SSadaf Ebrahimi </action> 972*0c4d7b72SSadaf Ebrahimi <action issue="IO-705" dev="ggregory" type="fix" due-to="Hao Zhong, Gary Gregory"> 973*0c4d7b72SSadaf Ebrahimi MarkShieldInputStream#reset should throw UnsupportedOperationException. 974*0c4d7b72SSadaf Ebrahimi </action> 975*0c4d7b72SSadaf Ebrahimi <action issue="IO-705" dev="ggregory" type="fix" due-to="Hao Zhong, Gary Gregory"> 976*0c4d7b72SSadaf Ebrahimi LockableFileWriter.close() should fail when the lock file cannot be deleted. 977*0c4d7b72SSadaf Ebrahimi </action> 978*0c4d7b72SSadaf Ebrahimi <action issue="IO-705" dev="ggregory" type="fix" due-to="Hao Zhong, Gary Gregory"> 979*0c4d7b72SSadaf Ebrahimi Fix infinite loops in ObservableInputStream read(*) when an exception is caught but not re-thrown. 980*0c4d7b72SSadaf Ebrahimi </action> 981*0c4d7b72SSadaf Ebrahimi <action issue="IO-719" dev="ggregory" type="fix" due-to="Andrew Shcheglov, Gary Gregory"> 982*0c4d7b72SSadaf Ebrahimi Fixed error of copying directories between different file systems #203. 983*0c4d7b72SSadaf Ebrahimi </action> 984*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Felix Rilling"> 985*0c4d7b72SSadaf Ebrahimi Fix Typos in JavaDoc, Comments and Tests #201. 986*0c4d7b72SSadaf Ebrahimi </action> 987*0c4d7b72SSadaf Ebrahimi <action issue="IO-718" dev="ggregory" type="fix" due-to="Robert Cooper, Gary Gregory"> 988*0c4d7b72SSadaf Ebrahimi FileUtils.checksumCRC32 and FileUtils.checksum are not thread safe. 989*0c4d7b72SSadaf Ebrahimi </action> 990*0c4d7b72SSadaf Ebrahimi <action issue="IO-720" dev="ggregory" type="fix" due-to="XenoAmess"> 991*0c4d7b72SSadaf Ebrahimi Fix error about usage of DirectBuffer in JRE 16/17 #205. 992*0c4d7b72SSadaf Ebrahimi </action> 993*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Rob Spoor, Gary Gregory"> 994*0c4d7b72SSadaf Ebrahimi Prevent infinite loop with AbstractCharacterFilterReader if EOF is filtered out #226. 995*0c4d7b72SSadaf Ebrahimi </action> 996*0c4d7b72SSadaf Ebrahimi <action issue="IO-429" dev="ggregory" type="fix" due-to="Ivan Leskin, Ivan Leskin"> 997*0c4d7b72SSadaf Ebrahimi Check for long streams in IOUtils.toByteArray #175. 998*0c4d7b72SSadaf Ebrahimi </action> 999*0c4d7b72SSadaf Ebrahimi <!-- ADD --> 1000*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1001*0c4d7b72SSadaf Ebrahimi Add FileSystemProviders class. 1002*0c4d7b72SSadaf Ebrahimi </action> 1003*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1004*0c4d7b72SSadaf Ebrahimi Let org.apache.commons.io.filefilter classes work with java.nio.file.Files.walk* APIs. 1005*0c4d7b72SSadaf Ebrahimi </action> 1006*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1007*0c4d7b72SSadaf Ebrahimi Let org.apache.commons.io.filefilter classes work with java.nio.file.Files#newDirectoryStream(Path, DirectoryStream.Filter). 1008*0c4d7b72SSadaf Ebrahimi </action> 1009*0c4d7b72SSadaf Ebrahimi <action issue="IO-510" dev="ggregory" type="add" due-to="Gary Gregory, Apache Spark, David Mollitor"> 1010*0c4d7b72SSadaf Ebrahimi Add and adapt ReadAheadInputStream and BufferedFileChannelInputStream from Apache Spark. 1011*0c4d7b72SSadaf Ebrahimi </action> 1012*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1013*0c4d7b72SSadaf Ebrahimi Add PathUtils.createParentDirectories(Path, FileAttribute...). 1014*0c4d7b72SSadaf Ebrahimi </action> 1015*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Rob Spoor, Gary Gregory"> 1016*0c4d7b72SSadaf Ebrahimi Add factory methods to CloseShieldInputStream, CloseShieldReader, CloseShieldOutputStream, CloseShieldWriter, #173. 1017*0c4d7b72SSadaf Ebrahimi </action> 1018*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="maxxedev, Gary Gregory"> 1019*0c4d7b72SSadaf Ebrahimi Add QueueInputStream and QueueOutputStream as simpler alternatives to PipedInputStream and PipedOutputStream #171. 1020*0c4d7b72SSadaf Ebrahimi </action> 1021*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1022*0c4d7b72SSadaf Ebrahimi Add StandardLineSeparator. 1023*0c4d7b72SSadaf Ebrahimi </action> 1024*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1025*0c4d7b72SSadaf Ebrahimi Replace magic numbers with constants with the new IOUtils.CR and LF. 1026*0c4d7b72SSadaf Ebrahimi </action> 1027*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1028*0c4d7b72SSadaf Ebrahimi Add FileSystem#supportsDriveLetter(). 1029*0c4d7b72SSadaf Ebrahimi </action> 1030*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1031*0c4d7b72SSadaf Ebrahimi Add FileUtils.delete(File). 1032*0c4d7b72SSadaf Ebrahimi </action> 1033*0c4d7b72SSadaf Ebrahimi <action issue="IO-700" dev="ggregory" type="add" due-to="Gary Gregory"> 1034*0c4d7b72SSadaf Ebrahimi Add FileUtils.moveFile(File, File, CopyOption...) #185. 1035*0c4d7b72SSadaf Ebrahimi </action> 1036*0c4d7b72SSadaf Ebrahimi <action issue="IO-700" dev="ggregory" type="add" due-to="Gary Gregory"> 1037*0c4d7b72SSadaf Ebrahimi Add FileUtils.isEmptyDirectory(File). 1038*0c4d7b72SSadaf Ebrahimi </action> 1039*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1040*0c4d7b72SSadaf Ebrahimi Add FileUtils.lastModified[Unchecked](File) to workaround https://bugs.openjdk.java.net/browse/JDK-8177809. 1041*0c4d7b72SSadaf Ebrahimi </action> 1042*0c4d7b72SSadaf Ebrahimi <action issue="IO-709" dev="ggregory" type="add" due-to="Boris Unckel, Gary Gregory"> 1043*0c4d7b72SSadaf Ebrahimi Add null safe variants of isDirectory and isRegularFile. 1044*0c4d7b72SSadaf Ebrahimi </action> 1045*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1046*0c4d7b72SSadaf Ebrahimi Add and use IOExceptionList(String, List). 1047*0c4d7b72SSadaf Ebrahimi </action> 1048*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1049*0c4d7b72SSadaf Ebrahimi Add and use ObservableInputStream.ObservableInputStream(InputStream, Observer...). 1050*0c4d7b72SSadaf Ebrahimi </action> 1051*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1052*0c4d7b72SSadaf Ebrahimi Make ObservableInputStream.getObservers() public. 1053*0c4d7b72SSadaf Ebrahimi </action> 1054*0c4d7b72SSadaf Ebrahimi <action issue="IO-706" dev="ggregory" type="add" due-to="Gary Gregory"> 1055*0c4d7b72SSadaf Ebrahimi Add TimestampedObserver. 1056*0c4d7b72SSadaf Ebrahimi </action> 1057*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1058*0c4d7b72SSadaf Ebrahimi Add and use IOUtils.byteArray(*). 1059*0c4d7b72SSadaf Ebrahimi </action> 1060*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1061*0c4d7b72SSadaf Ebrahimi Make public and reuse IOUtils.EMPTY_BYTE_ARRAY. 1062*0c4d7b72SSadaf Ebrahimi </action> 1063*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1064*0c4d7b72SSadaf Ebrahimi Add IOUtils.copy(URL, File). 1065*0c4d7b72SSadaf Ebrahimi </action> 1066*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1067*0c4d7b72SSadaf Ebrahimi Add copy(URL, OutputStream). 1068*0c4d7b72SSadaf Ebrahimi </action> 1069*0c4d7b72SSadaf Ebrahimi <action issue="IO-651" dev="ggregory" type="add" due-to="jmark109, Gary Gregory"> 1070*0c4d7b72SSadaf Ebrahimi Add DeferredFileOutputStream.toInputStream() #206. 1071*0c4d7b72SSadaf Ebrahimi </action> 1072*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1073*0c4d7b72SSadaf Ebrahimi Add CharacterSetFilterReader.CharacterSetFilterReader(Reader, Integer...). 1074*0c4d7b72SSadaf Ebrahimi </action> 1075*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Rob Spoor, Gary Gregory"> 1076*0c4d7b72SSadaf Ebrahimi Add AbstractCharacterFilterReader(Reader, IntPredicate), #227. 1077*0c4d7b72SSadaf Ebrahimi Add CharacterFilterReader(Reader, IntPredicate), #227. 1078*0c4d7b72SSadaf Ebrahimi Add CharacterFilterReaderIntPredicateTest, #227. 1079*0c4d7b72SSadaf Ebrahimi </action> 1080*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1081*0c4d7b72SSadaf Ebrahimi Add IOConsumer.noop(). 1082*0c4d7b72SSadaf Ebrahimi </action> 1083*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1084*0c4d7b72SSadaf Ebrahimi Add constructor ThresholdingOutputStream(int, IOConsumer, IOFunction) and make the class concrete. 1085*0c4d7b72SSadaf Ebrahimi </action> 1086*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="nstdspace, Gary Gregory"> 1087*0c4d7b72SSadaf Ebrahimi Add constructor accepting collection of file alteration observers #236. 1088*0c4d7b72SSadaf Ebrahimi </action> 1089*0c4d7b72SSadaf Ebrahimi <!-- UPDATES --> 1090*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1091*0c4d7b72SSadaf Ebrahimi Update junit-jupiter from 5.6.2 to 5.7.0 #153. 1092*0c4d7b72SSadaf Ebrahimi </action> 1093*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1094*0c4d7b72SSadaf Ebrahimi Update mockito-core from 3.5.9 to 3.10.0, #152, #155, #157, #166, #167, #169, #182. 1095*0c4d7b72SSadaf Ebrahimi </action> 1096*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1097*0c4d7b72SSadaf Ebrahimi Bump mockito-inline from 3.7.0 to 3.10.0 #188, #207, #230. 1098*0c4d7b72SSadaf Ebrahimi </action> 1099*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 1100*0c4d7b72SSadaf Ebrahimi Update commons.jacoco.version 0.8.5 to 0.8.7, fixes Java 15 builds and up. 1101*0c4d7b72SSadaf Ebrahimi </action> 1102*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1103*0c4d7b72SSadaf Ebrahimi Update spotbugs from 4.1.2 to 4.5.0, #158, #164, #165, #180, #199, #213, #224, #302. 1104*0c4d7b72SSadaf Ebrahimi </action> 1105*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1106*0c4d7b72SSadaf Ebrahimi Bump spotbugs-maven-plugin from 4.0.4 to 4.2.3, #161, #172, #223. 1107*0c4d7b72SSadaf Ebrahimi </action> 1108*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> 1109*0c4d7b72SSadaf Ebrahimi Update org.junit-pioneer:junit-pioneer 0.9.0 -> 1.4,1, #159, #162, #170, #189, #191, #210, #229. 1110*0c4d7b72SSadaf Ebrahimi </action> 1111*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1112*0c4d7b72SSadaf Ebrahimi Update actions/checkout from v2.3.2 to v2.3.4, #156, #168. 1113*0c4d7b72SSadaf Ebrahimi </action> 1114*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> 1115*0c4d7b72SSadaf Ebrahimi Bump actions/setup-java from v1.4.2 to v2 #160. 1116*0c4d7b72SSadaf Ebrahimi </action> 1117*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 1118*0c4d7b72SSadaf Ebrahimi Update maven-surefire-plugin from 2.22.2 to 3.0.0-M5. 1119*0c4d7b72SSadaf Ebrahimi </action> 1120*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Arturo Bernal"> 1121*0c4d7b72SSadaf Ebrahimi Minor improvements, #176, 177, #190. 1122*0c4d7b72SSadaf Ebrahimi </action> 1123*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 1124*0c4d7b72SSadaf Ebrahimi Update commons.japicmp.version 0.14.4 -> 0.15.3. 1125*0c4d7b72SSadaf Ebrahimi </action> 1126*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Michiel Kalkman"> 1127*0c4d7b72SSadaf Ebrahimi Tiny performance improvement in FileUtils#moveDirectoryToDirectory() #174. 1128*0c4d7b72SSadaf Ebrahimi </action> 1129*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1130*0c4d7b72SSadaf Ebrahimi Bump checkstyle from 8.38 to 8.42 #689, #209, #225. 1131*0c4d7b72SSadaf Ebrahimi </action> 1132*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1133*0c4d7b72SSadaf Ebrahimi Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #198. 1134*0c4d7b72SSadaf Ebrahimi </action> 1135*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1136*0c4d7b72SSadaf Ebrahimi Bump jimfs from 1.1 to 1.2 #183. 1137*0c4d7b72SSadaf Ebrahimi </action> 1138*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="XenoAmess, Gary Gregory"> 1139*0c4d7b72SSadaf Ebrahimi Improve performance of IOUtils.contentEquals(InputStream, InputStream). 1140*0c4d7b72SSadaf Ebrahimi </action> 1141*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="XenoAmess, Gary Gregory"> 1142*0c4d7b72SSadaf Ebrahimi Improve performance of IOUtils.contentEquals(Reader, Reader). 1143*0c4d7b72SSadaf Ebrahimi </action> 1144*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1145*0c4d7b72SSadaf Ebrahimi Bump actions/cache from v2 to v2.1.5 #202, #228. 1146*0c4d7b72SSadaf Ebrahimi </action> 1147*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1148*0c4d7b72SSadaf Ebrahimi Bump junit-bom from 5.7.0 to 5.7.2 #200, #232. 1149*0c4d7b72SSadaf Ebrahimi </action> 1150*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Gary Gregory"> 1151*0c4d7b72SSadaf Ebrahimi Update from Apache Commons Lang 3.11 to 3.12.0. 1152*0c4d7b72SSadaf Ebrahimi </action> 1153*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Arturo Bernal"> 1154*0c4d7b72SSadaf Ebrahimi Minor improvements #233. 1155*0c4d7b72SSadaf Ebrahimi </action> 1156*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Arturo Bernal"> 1157*0c4d7b72SSadaf Ebrahimi Simplify Assertions in tests #234. 1158*0c4d7b72SSadaf Ebrahimi </action> 1159*0c4d7b72SSadaf Ebrahimi </release> 1160*0c4d7b72SSadaf Ebrahimi <!-- The release date is the date RC is cut --> 1161*0c4d7b72SSadaf Ebrahimi <release version="2.8.0" date="2020-09-05" description="Java 8 is required."> 1162*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1163*0c4d7b72SSadaf Ebrahimi Add org.apache.commons.io.input.CircularInputStream. 1164*0c4d7b72SSadaf Ebrahimi </action> 1165*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1166*0c4d7b72SSadaf Ebrahimi Add org.apache.commons.io.file.PathUtils.cleanDirectory(Path, FileVisitOption...). 1167*0c4d7b72SSadaf Ebrahimi </action> 1168*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1169*0c4d7b72SSadaf Ebrahimi Add org.apache.commons.io.file.PathUtils.deleteDirectory(Path, FileVisitOption...). 1170*0c4d7b72SSadaf Ebrahimi </action> 1171*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1172*0c4d7b72SSadaf Ebrahimi Add NullAppendable. 1173*0c4d7b72SSadaf Ebrahimi </action> 1174*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Rob Spoor, Jochen Wiedmann"> 1175*0c4d7b72SSadaf Ebrahimi CharSequenceReader.skip should return 0 instead of EOF on stream end #123. 1176*0c4d7b72SSadaf Ebrahimi </action> 1177*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Rob Spoor"> 1178*0c4d7b72SSadaf Ebrahimi Implement CharSequenceReader.ready() #122. 1179*0c4d7b72SSadaf Ebrahimi </action> 1180*0c4d7b72SSadaf Ebrahimi <action issue="IO-669" dev="ggregory" type="fix" due-to="XenoAmess, Gary Gregory"> 1181*0c4d7b72SSadaf Ebrahimi Fix code smells; fix typos #115. 1182*0c4d7b72SSadaf Ebrahimi </action> 1183*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Jerome Wolff, Gary Gregory"> 1184*0c4d7b72SSadaf Ebrahimi Add caching for required charsets #120. 1185*0c4d7b72SSadaf Ebrahimi </action> 1186*0c4d7b72SSadaf Ebrahimi <action issue="IO-673" type="fix" dev="ggregory" due-to="Jerome Wolff"> 1187*0c4d7b72SSadaf Ebrahimi Make some simplifications #121. 1188*0c4d7b72SSadaf Ebrahimi </action> 1189*0c4d7b72SSadaf Ebrahimi <action issue="IO-674" dev="ggregory" type="fix" due-to="Gary Gregory"> 1190*0c4d7b72SSadaf Ebrahimi InfiniteCircularInputStream is not infinite if its input buffer contains -1. 1191*0c4d7b72SSadaf Ebrahimi </action> 1192*0c4d7b72SSadaf Ebrahimi <action issue="IO-675" dev="ggregory" type="fix" due-to="Gary Gregory"> 1193*0c4d7b72SSadaf Ebrahimi InfiniteCircularInputStream throws a divide-by-zero exception when reading if its input buffer is size 0. 1194*0c4d7b72SSadaf Ebrahimi </action> 1195*0c4d7b72SSadaf Ebrahimi <action issue="IO-677" dev="ggregory" type="fix" due-to="Gary Gregory"> 1196*0c4d7b72SSadaf Ebrahimi FileSystem.getCurrent() does not return the correct enum. 1197*0c4d7b72SSadaf Ebrahimi </action> 1198*0c4d7b72SSadaf Ebrahimi <action issue="IO-679" dev="ggregory" type="fix" due-to="proneel"> 1199*0c4d7b72SSadaf Ebrahimi input.AbstractCharacterFilterReader passes count of chars read #132. 1200*0c4d7b72SSadaf Ebrahimi </action> 1201*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1202*0c4d7b72SSadaf Ebrahimi Add PathUtils.getAclEntryList(Path). 1203*0c4d7b72SSadaf Ebrahimi </action> 1204*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1205*0c4d7b72SSadaf Ebrahimi Null-guard IOUtils.close(Closeable, IOConsumer). 1206*0c4d7b72SSadaf Ebrahimi </action> 1207*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1208*0c4d7b72SSadaf Ebrahimi Add ReversedLinesFileReader.readLines(int). 1209*0c4d7b72SSadaf Ebrahimi </action> 1210*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1211*0c4d7b72SSadaf Ebrahimi Add ReversedLinesFileReader.toString(int). 1212*0c4d7b72SSadaf Ebrahimi </action> 1213*0c4d7b72SSadaf Ebrahimi <action issue="IO-684" dev="ggregory" type="add" due-to="Gary Gregory, Robin Jansohn"> 1214*0c4d7b72SSadaf Ebrahimi Add PathUtils.delete(Path, DeleteOption...). 1215*0c4d7b72SSadaf Ebrahimi Add PathUtils.deleteDirectory(Path, DeleteOption...). 1216*0c4d7b72SSadaf Ebrahimi Add PathUtils.deleteFile(Path, DeleteOption...). 1217*0c4d7b72SSadaf Ebrahimi Add PathUtils.setReadOnly(Path, boolean, LinkOption...). 1218*0c4d7b72SSadaf Ebrahimi Add CleaningPathVisitor.CleaningPathVisitor(PathCounters, DeleteOption[], String...). 1219*0c4d7b72SSadaf Ebrahimi Add DeletingPathVisitor.DeletingPathVisitor(PathCounters, DeleteOption[], String...). 1220*0c4d7b72SSadaf Ebrahimi </action> 1221*0c4d7b72SSadaf Ebrahimi <action issue="IO-683" dev="sebb" type="fix"> 1222*0c4d7b72SSadaf Ebrahimi CircularBufferInputStream.read() fails to convert byte to unsigned int 1223*0c4d7b72SSadaf Ebrahimi </action> 1224*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="fix" due-to="Gary Gregory"> 1225*0c4d7b72SSadaf Ebrahimi Fix SpotBugs issues in org.apache.commons.io.FileUtils. 1226*0c4d7b72SSadaf Ebrahimi </action> 1227*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1228*0c4d7b72SSadaf Ebrahimi Add RandomAccessFileInputStream. 1229*0c4d7b72SSadaf Ebrahimi </action> 1230*0c4d7b72SSadaf Ebrahimi <action issue="IO-681" dev="sebb" type="add"> 1231*0c4d7b72SSadaf Ebrahimi IOUtils.close(Closeable) should allow a list of closeables. 1232*0c4d7b72SSadaf Ebrahimi </action> 1233*0c4d7b72SSadaf Ebrahimi <action issue="IO-672" dev="sebb" type="fix"> 1234*0c4d7b72SSadaf Ebrahimi Copying a File sets last modified date to 01 January 1970. 1235*0c4d7b72SSadaf Ebrahimi </action> 1236*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1237*0c4d7b72SSadaf Ebrahimi Add IOUtils.consume(InputStream). 1238*0c4d7b72SSadaf Ebrahimi </action> 1239*0c4d7b72SSadaf Ebrahimi <action issue="IO-676" dev="ggregory" type="add" due-to="Isira Seneviratne, Gary Gregory"> 1240*0c4d7b72SSadaf Ebrahimi Add isFileNewer() and isFileOlder() methods that support the Java 8 Date/Time API. #124. 1241*0c4d7b72SSadaf Ebrahimi </action> 1242*0c4d7b72SSadaf Ebrahimi <action issue="IO-676" dev="ggregory" type="fix" due-to="Michael Ernst, Gary Gregory"> 1243*0c4d7b72SSadaf Ebrahimi Prevent NullPointerException in ReversedLinesFileReader constructors #117. 1244*0c4d7b72SSadaf Ebrahimi </action> 1245*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Adam Retter, Gary Gregory"> 1246*0c4d7b72SSadaf Ebrahimi Add a MarkShieldInputStream #119. 1247*0c4d7b72SSadaf Ebrahimi </action> 1248*0c4d7b72SSadaf Ebrahimi <!-- UPDATES --> 1249*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" due-to="Gary Gregory"> 1250*0c4d7b72SSadaf Ebrahimi Deprecate IOUtils.LINE_SEPARATOR in favor of Java 7's System.lineSeparator(). 1251*0c4d7b72SSadaf Ebrahimi </action> 1252*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 1253*0c4d7b72SSadaf Ebrahimi Replace FindBugs with SpotBugs. 1254*0c4d7b72SSadaf Ebrahimi </action> 1255*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 1256*0c4d7b72SSadaf Ebrahimi maven-checkstyle-plugin 3.1.0 -> 3.1.1. 1257*0c4d7b72SSadaf Ebrahimi </action> 1258*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 1259*0c4d7b72SSadaf Ebrahimi Update tests from org.apache.commons:commons-lang3 3.10 to 3.11. 1260*0c4d7b72SSadaf Ebrahimi </action> 1261*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 1262*0c4d7b72SSadaf Ebrahimi Update commons-parent from 50 to 51 #129. 1263*0c4d7b72SSadaf Ebrahimi </action> 1264*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 1265*0c4d7b72SSadaf Ebrahimi Update actions/checkout from v1 to v2.3.1 #126. 1266*0c4d7b72SSadaf Ebrahimi </action> 1267*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 1268*0c4d7b72SSadaf Ebrahimi Update junit-pioneer from 0.6.0 to 0.9.0, #127, #135, #138. 1269*0c4d7b72SSadaf Ebrahimi </action> 1270*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Gary Gregory"> 1271*0c4d7b72SSadaf Ebrahimi Update mockito-core from 3.3.3 to 3.5.9 #128, #133, #145, #149, #151. 1272*0c4d7b72SSadaf Ebrahimi </action> 1273*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1274*0c4d7b72SSadaf Ebrahimi Update spotbugs from 4.0.6 to 4.6.0 #134, #332. 1275*0c4d7b72SSadaf Ebrahimi </action> 1276*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1277*0c4d7b72SSadaf Ebrahimi Update actions/checkout from v2.3.1 to v2.3.2 #140. 1278*0c4d7b72SSadaf Ebrahimi </action> 1279*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Dependabot"> 1280*0c4d7b72SSadaf Ebrahimi Update actions/setup-java from v1.4.0 to v1.4.2 #141, #148. 1281*0c4d7b72SSadaf Ebrahimi </action> 1282*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Gary Gregory"> 1283*0c4d7b72SSadaf Ebrahimi Update com.github.siom79.japicmp:japicmp-maven-plugin 0.14.3 -> 0.14.4. 1284*0c4d7b72SSadaf Ebrahimi </action> 1285*0c4d7b72SSadaf Ebrahimi </release> 1286*0c4d7b72SSadaf Ebrahimi <!-- The release date is the date RC is cut --> 1287*0c4d7b72SSadaf Ebrahimi <release version="2.7" date="2020-05-24" description="Java 8 is required."> 1288*0c4d7b72SSadaf Ebrahimi <action issue="IO-589" dev="sebb" type="fix"> 1289*0c4d7b72SSadaf Ebrahimi Some tests fail if the base path contains a space. 1290*0c4d7b72SSadaf Ebrahimi </action> 1291*0c4d7b72SSadaf Ebrahimi <action dev="jochen" type="add"> 1292*0c4d7b72SSadaf Ebrahimi Adding the CircularBufferInputStream, and the PeekableInputStream. 1293*0c4d7b72SSadaf Ebrahimi </action> 1294*0c4d7b72SSadaf Ebrahimi <action issue="IO-582" dev="jochen" type="fix" due-to="Bruno Palos"> 1295*0c4d7b72SSadaf Ebrahimi Make methods in ObservableInputStream.Observer public. 1296*0c4d7b72SSadaf Ebrahimi </action> 1297*0c4d7b72SSadaf Ebrahimi <action issue="IO-535" dev="pschumacher" type="fix" due-to="Svetlin Zarev, Anthony Raymond"> 1298*0c4d7b72SSadaf Ebrahimi Thread bug in FileAlterationMonitor#stop(int). 1299*0c4d7b72SSadaf Ebrahimi </action> 1300*0c4d7b72SSadaf Ebrahimi <action issue="IO-553" dev="ggregory" type="add"> 1301*0c4d7b72SSadaf Ebrahimi Add org.apache.commons.io.FilenameUtils.isIllegalWindowsFileName(char). 1302*0c4d7b72SSadaf Ebrahimi </action> 1303*0c4d7b72SSadaf Ebrahimi <action issue="IO-557" dev="pschumacher" type="fix" due-to="luccioman"> 1304*0c4d7b72SSadaf Ebrahimi Perform locale independent upper case conversions. 1305*0c4d7b72SSadaf Ebrahimi </action> 1306*0c4d7b72SSadaf Ebrahimi <action issue="IO-570" dev="ggregory" type="fix" due-to="Pranet Verma"> 1307*0c4d7b72SSadaf Ebrahimi Missing Javadoc in FilenameUtils causing Travis-CI build to fail. 1308*0c4d7b72SSadaf Ebrahimi </action> 1309*0c4d7b72SSadaf Ebrahimi <action issue="IO-571" dev="ggregory" type="fix" due-to="pranet"> 1310*0c4d7b72SSadaf Ebrahimi Remove redundant isDirectory() check in org.apache.commons.io.FileUtils.listFilesAndDirs(File, IOFileFilter, IOFileFilter). 1311*0c4d7b72SSadaf Ebrahimi </action> 1312*0c4d7b72SSadaf Ebrahimi <action issue="IO-572" dev="ggregory" type="update" due-to="Pranet Verma"> 1313*0c4d7b72SSadaf Ebrahimi Refactor duplicate code in org.apache.commons.io.FileUtils. 1314*0c4d7b72SSadaf Ebrahimi </action> 1315*0c4d7b72SSadaf Ebrahimi <action issue="IO-577" dev="ggregory" type="add" due-to="Gary Gregory"> 1316*0c4d7b72SSadaf Ebrahimi Add readers to filter out given characters: CharacterSetFilterReader and CharacterFilterReader. 1317*0c4d7b72SSadaf Ebrahimi </action> 1318*0c4d7b72SSadaf Ebrahimi <action issue="IO-559" type="fix"> 1319*0c4d7b72SSadaf Ebrahimi FilenameUtils.normalize now verifies hostname syntax in UNC path. 1320*0c4d7b72SSadaf Ebrahimi </action> 1321*0c4d7b72SSadaf Ebrahimi <action issue="IO-580" dev="ggregory" type="update"> 1322*0c4d7b72SSadaf Ebrahimi Update org.apache.commons.io.FilenameUtils.isExtension(String, String[]) to use var args. 1323*0c4d7b72SSadaf Ebrahimi </action> 1324*0c4d7b72SSadaf Ebrahimi <action issue="IO-554" dev="ggregory" type="fix" due-to="Michele Mariotti"> 1325*0c4d7b72SSadaf Ebrahimi FileUtils.copyToFile(InputStream source, File destination) should not close input stream. 1326*0c4d7b72SSadaf Ebrahimi </action> 1327*0c4d7b72SSadaf Ebrahimi <action issue="IO-594" dev="ggregory" type="add" due-to="Gary Gregory"> 1328*0c4d7b72SSadaf Ebrahimi Add IOUtils copy methods with java.lang.Appendable as the target. 1329*0c4d7b72SSadaf Ebrahimi </action> 1330*0c4d7b72SSadaf Ebrahimi <action issue="IO-604" dev="ggregory" type="fix" due-to="Gary Gregory"> 1331*0c4d7b72SSadaf Ebrahimi FileUtils.doCopyFile(File, File, boolean) can throw ClosedByInterruptException. 1332*0c4d7b72SSadaf Ebrahimi </action> 1333*0c4d7b72SSadaf Ebrahimi <action issue="IO-605" dev="ggregory" type="add" due-to="Gary Gregory"> 1334*0c4d7b72SSadaf Ebrahimi Add class CanExecuteFileFilter. 1335*0c4d7b72SSadaf Ebrahimi </action> 1336*0c4d7b72SSadaf Ebrahimi <action issue="IO-701" dev="ggregory" type="update" due-to="Raymond Tan"> 1337*0c4d7b72SSadaf Ebrahimi Make array declaration in ThresholdingOutputStream consistent with other array declarations in the library #77. 1338*0c4d7b72SSadaf Ebrahimi </action> 1339*0c4d7b72SSadaf Ebrahimi <action issue="IO-578" dev="ggregory" type="add" due-to="Mark Chesney"> 1340*0c4d7b72SSadaf Ebrahimi Support java.nio.Path and non-default file systems for ReversedLinesFileReader (#62). 1341*0c4d7b72SSadaf Ebrahimi </action> 1342*0c4d7b72SSadaf Ebrahimi <action issue="IO-608" dev="ggregory" type="add" due-to="Gary Gregory"> 1343*0c4d7b72SSadaf Ebrahimi Add a convenience NullPrintStream. 1344*0c4d7b72SSadaf Ebrahimi </action> 1345*0c4d7b72SSadaf Ebrahimi <action issue="IO-607" dev="ggregory" type="update" due-to="Gary Gregory"> 1346*0c4d7b72SSadaf Ebrahimi Update from Java 7 to Java 8. 1347*0c4d7b72SSadaf Ebrahimi </action> 1348*0c4d7b72SSadaf Ebrahimi <action issue="IO-610" dev="ggregory" type="update" due-to="Sebastian"> 1349*0c4d7b72SSadaf Ebrahimi Remove throws IOException in method isSymlink() #80. 1350*0c4d7b72SSadaf Ebrahimi </action> 1351*0c4d7b72SSadaf Ebrahimi <action issue="IO-612" dev="ggregory" type="add" due-to="Rob Spoor, Gary Gregory"> 1352*0c4d7b72SSadaf Ebrahimi Add class TeeReader. 1353*0c4d7b72SSadaf Ebrahimi </action> 1354*0c4d7b72SSadaf Ebrahimi <action issue="IO-613" dev="ggregory" type="add" due-to="Rob Spoor, Gary Gregory"> 1355*0c4d7b72SSadaf Ebrahimi Add classes ClosedReader and CloseShieldReader. #84. 1356*0c4d7b72SSadaf Ebrahimi </action> 1357*0c4d7b72SSadaf Ebrahimi <action issue="IO-614" dev="ggregory" type="add" due-to="Rob Spoor"> 1358*0c4d7b72SSadaf Ebrahimi Add classes TaggedWriter, ClosedWriter and BrokenWriter. #86. 1359*0c4d7b72SSadaf Ebrahimi </action> 1360*0c4d7b72SSadaf Ebrahimi <action issue="IO-615" dev="ggregory" type="add" due-to="Gary Gregory, Rob Spoor"> 1361*0c4d7b72SSadaf Ebrahimi Add classes TeeWriter, FilterCollectionWriter, ProxyCollectionWriter, IOExceptionList, IOIndexedException. 1362*0c4d7b72SSadaf Ebrahimi </action> 1363*0c4d7b72SSadaf Ebrahimi <action issue="IO-616" dev="ggregory" type="add" due-to="Rob Spoor"> 1364*0c4d7b72SSadaf Ebrahimi Add class AppendableWriter. #87. 1365*0c4d7b72SSadaf Ebrahimi </action> 1366*0c4d7b72SSadaf Ebrahimi <action issue="IO-617" dev="ggregory" type="add" due-to="Rob Spoor, Gary Gregory"> 1367*0c4d7b72SSadaf Ebrahimi Add class CloseShieldWriter. #83. 1368*0c4d7b72SSadaf Ebrahimi </action> 1369*0c4d7b72SSadaf Ebrahimi <action issue="IO-618" dev="ggregory" type="add" due-to="Rob Spoor"> 1370*0c4d7b72SSadaf Ebrahimi Add classes Added TaggedReader, ClosedReader and BrokenReader. #85. 1371*0c4d7b72SSadaf Ebrahimi </action> 1372*0c4d7b72SSadaf Ebrahimi <action issue="IO-619" dev="ggregory" type="add" due-to="Rob Spoor"> 1373*0c4d7b72SSadaf Ebrahimi Support sub sequences in CharSequenceReader. #91. 1374*0c4d7b72SSadaf Ebrahimi </action> 1375*0c4d7b72SSadaf Ebrahimi <action issue="IO-625" dev="ggregory" type="fix" due-to="Mikko Maunu"> 1376*0c4d7b72SSadaf Ebrahimi Corrected misleading exception message for FileUtils.copyDirectoryToDirectory. 1377*0c4d7b72SSadaf Ebrahimi </action> 1378*0c4d7b72SSadaf Ebrahimi <action issue="IO-626" dev="ggregory" type="fix" due-to="Yuji Konishi"> 1379*0c4d7b72SSadaf Ebrahimi A mistake in the FilenameUtils.concat()'s Javadoc about an absolute path. 1380*0c4d7b72SSadaf Ebrahimi </action> 1381*0c4d7b72SSadaf Ebrahimi <action issue="IO-628" dev="ggregory" type="update" due-to="Allon Mureinik"> 1382*0c4d7b72SSadaf Ebrahimi Migration to JUnit Jupiter #97. 1383*0c4d7b72SSadaf Ebrahimi </action> 1384*0c4d7b72SSadaf Ebrahimi <action issue="IO-630" dev="ggregory" type="update" due-to="Gary Gregory"> 1385*0c4d7b72SSadaf Ebrahimi Deprecate org.apache.commons.io.output.NullOutputStream.NullOutputStream() in favor of org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM. 1386*0c4d7b72SSadaf Ebrahimi </action> 1387*0c4d7b72SSadaf Ebrahimi <action issue="IO-631" dev="ggregory" type="add" due-to="Gary Gregory"> 1388*0c4d7b72SSadaf Ebrahimi Add a CountingFileVisitor (as the basis for a forthcoming DeletingFileVisitor). 1389*0c4d7b72SSadaf Ebrahimi </action> 1390*0c4d7b72SSadaf Ebrahimi <action issue="IO-632" dev="ggregory" type="add" due-to="Gary Gregory"> 1391*0c4d7b72SSadaf Ebrahimi Add PathUtils for operations on NIO Path. 1392*0c4d7b72SSadaf Ebrahimi </action> 1393*0c4d7b72SSadaf Ebrahimi <action issue="IO-633" dev="ggregory" type="add" due-to="Gary Gregory"> 1394*0c4d7b72SSadaf Ebrahimi Add DeletingFileVisitor. 1395*0c4d7b72SSadaf Ebrahimi </action> 1396*0c4d7b72SSadaf Ebrahimi <action issue="IO-629" dev="ggregory" type="update" due-to="Ian Springer, Ian Springer, Gary Gregory"> 1397*0c4d7b72SSadaf Ebrahimi FileUtils#forceDelete should use Files#delete rather than File#delete so exception messages includes reason for failure. 1398*0c4d7b72SSadaf Ebrahimi </action> 1399*0c4d7b72SSadaf Ebrahimi <action issue="IO-634" dev="ggregory" type="update" due-to="Václav Haisman, Bruno P. Kinoshita, Gary Gregory"> 1400*0c4d7b72SSadaf Ebrahimi Make getCause synchronized and use a Deque instead of a Stack #64. 1401*0c4d7b72SSadaf Ebrahimi </action> 1402*0c4d7b72SSadaf Ebrahimi <action issue="IO-635" dev="ggregory" type="add" due-to="Gary Gregory"> 1403*0c4d7b72SSadaf Ebrahimi Add org.apache.commons.io.IOUtils.close(Closeable). 1404*0c4d7b72SSadaf Ebrahimi </action> 1405*0c4d7b72SSadaf Ebrahimi <action issue="IO-636" dev="ggregory" type="add" due-to="Gary Gregory"> 1406*0c4d7b72SSadaf Ebrahimi Add and reuse org.apache.commons.io.IOUtils.closeQuitely(Closeable, Consumer<IOException>). 1407*0c4d7b72SSadaf Ebrahimi Add and reuse org.apache.commons.io.IOUtils.close(Closeable, IOConsumer<IOException>). 1408*0c4d7b72SSadaf Ebrahimi </action> 1409*0c4d7b72SSadaf Ebrahimi <action issue="IO-640" dev="ggregory" type="fix" due-to="Gary Gregory"> 1410*0c4d7b72SSadaf Ebrahimi NPE in org.apache.commons.io.IOUtils.contentEquals(InputStream, InputStream) when only one input is null. 1411*0c4d7b72SSadaf Ebrahimi </action> 1412*0c4d7b72SSadaf Ebrahimi <action issue="IO-641" dev="ggregory" type="fix" due-to="Gary Gregory"> 1413*0c4d7b72SSadaf Ebrahimi NPE in org.apache.commons.io.IOUtils.contentEquals(Reader, Reader) when only one input is null. 1414*0c4d7b72SSadaf Ebrahimi </action> 1415*0c4d7b72SSadaf Ebrahimi <action issue="IO-643" dev="ggregory" type="fix" due-to="Gary Gregory"> 1416*0c4d7b72SSadaf Ebrahimi NPE in org.apache.commons.io.IOUtils.contentEqualsIgnoreEOL(Reader, Reader) when only one input is null. 1417*0c4d7b72SSadaf Ebrahimi </action> 1418*0c4d7b72SSadaf Ebrahimi <action issue="IO-644" dev="ggregory" type="fix" due-to="Gary Gregory"> 1419*0c4d7b72SSadaf Ebrahimi NPE in org.apache.commons.io.FileUtils.contentEqualsIgnoreEOL(File, File) when only one input is null. 1420*0c4d7b72SSadaf Ebrahimi </action> 1421*0c4d7b72SSadaf Ebrahimi <action issue="IO-645" dev="ggregory" type="add" due-to="Gary Gregory"> 1422*0c4d7b72SSadaf Ebrahimi Add org.apache.commons.io.file.PathUtils.fileContentEquals(Path, Path, OpenOption...). 1423*0c4d7b72SSadaf Ebrahimi </action> 1424*0c4d7b72SSadaf Ebrahimi <action issue="IO-458" dev="ggregory" type="add" due-to="Gary Gregory, Joshua Gitlin"> 1425*0c4d7b72SSadaf Ebrahimi Add a SequenceReader similar to java.io.SequenceInputStream. 1426*0c4d7b72SSadaf Ebrahimi </action> 1427*0c4d7b72SSadaf Ebrahimi <action issue="IO-648" dev="ggregory" type="add" due-to="Gary Gregory"> 1428*0c4d7b72SSadaf Ebrahimi Implement directory content equality. 100#. 1429*0c4d7b72SSadaf Ebrahimi </action> 1430*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Gary Gregory"> 1431*0c4d7b72SSadaf Ebrahimi Update tests from Apache Commons Lang 3.9 to 3.10. 1432*0c4d7b72SSadaf Ebrahimi </action> 1433*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Gary Gregory"> 1434*0c4d7b72SSadaf Ebrahimi Update tests org.junit-pioneer:junit-pioneer 0.3.0 -> 0.6.0. 1435*0c4d7b72SSadaf Ebrahimi </action> 1436*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Gary Gregory"> 1437*0c4d7b72SSadaf Ebrahimi Update tests org.junit.jupiter:junit-jupiter 5.5.2 -> 5.6.2. 1438*0c4d7b72SSadaf Ebrahimi </action> 1439*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Gary Gregory"> 1440*0c4d7b72SSadaf Ebrahimi Update tests org.mockito:mockito-core 3.0.0 -> 3.3.3. 1441*0c4d7b72SSadaf Ebrahimi </action> 1442*0c4d7b72SSadaf Ebrahimi <action issue="IO-648" dev="ggregory" type="add" due-to="Adam Retter, Alex Herbert, Gary Gregory"> 1443*0c4d7b72SSadaf Ebrahimi Refactor ByteArrayOutputStream into synchronized and unsynchronized versions #108. 1444*0c4d7b72SSadaf Ebrahimi </action> 1445*0c4d7b72SSadaf Ebrahimi <action issue="IO-662" dev="ggregory" type="add" due-to="Adam Retter, Gary Gregory"> 1446*0c4d7b72SSadaf Ebrahimi Refactor ByteArrayOutputStream into synchronized and unsynchronized versions #108. 1447*0c4d7b72SSadaf Ebrahimi </action> 1448*0c4d7b72SSadaf Ebrahimi <action issue="IO-664" dev="ggregory" type="fix" due-to="Gary Gregory"> 1449*0c4d7b72SSadaf Ebrahimi org.apache.commons.io.FileUtils.copyURLToFile(*) open but do not close streams. 1450*0c4d7b72SSadaf Ebrahimi </action> 1451*0c4d7b72SSadaf Ebrahimi <action issue="IO-666" dev="ggregory" type="update" due-to="Gary Gregory"> 1452*0c4d7b72SSadaf Ebrahimi Normalize internal buffers to 8192 bytes. 1453*0c4d7b72SSadaf Ebrahimi </action> 1454*0c4d7b72SSadaf Ebrahimi <action issue="IO-665" dev="ggregory" type="update" due-to="Otto Fowler, Gary Gregory"> 1455*0c4d7b72SSadaf Ebrahimi Ensure that passing a null InputStream results in NPE with tests #112. 1456*0c4d7b72SSadaf Ebrahimi </action> 1457*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Gary Gregory"> 1458*0c4d7b72SSadaf Ebrahimi commons.jacoco.version 0.8.4 -> 0.8.5. 1459*0c4d7b72SSadaf Ebrahimi </action> 1460*0c4d7b72SSadaf Ebrahimi <action type="update" dev="ggregory" due-to="Gary Gregory"> 1461*0c4d7b72SSadaf Ebrahimi com.github.siom79.japicmp:japicmp-maven-plugin 0.14.1 -> 0.14.3. 1462*0c4d7b72SSadaf Ebrahimi </action> 1463*0c4d7b72SSadaf Ebrahimi <action issue="IO-667" dev="ggregory" type="update" due-to="Adam Retter, Gary Gregory"> 1464*0c4d7b72SSadaf Ebrahimi Add functional interfaces IOFunction and IOSupplier #110. 1465*0c4d7b72SSadaf Ebrahimi </action> 1466*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="Rob Spoor, Gary Gregory"> 1467*0c4d7b72SSadaf Ebrahimi Support sub sequences in CharSequenceReader #91. 1468*0c4d7b72SSadaf Ebrahimi </action> 1469*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="update" due-to="dengliming"> 1470*0c4d7b72SSadaf Ebrahimi Remove deprecated sudo setting. #113. 1471*0c4d7b72SSadaf Ebrahimi </action> 1472*0c4d7b72SSadaf Ebrahimi </release> 1473*0c4d7b72SSadaf Ebrahimi 1474*0c4d7b72SSadaf Ebrahimi <release version="2.6" date="2017-10-15" description="Java 7 required, Java 9 supported."> 1475*0c4d7b72SSadaf Ebrahimi <action issue="IO-553" dev="britter" type="update" due-to="Michael Ernst"> 1476*0c4d7b72SSadaf Ebrahimi Make code style of hasBOM() consistent with getBOMCharsetName() 1477*0c4d7b72SSadaf Ebrahimi </action> 1478*0c4d7b72SSadaf Ebrahimi <action issue="IO-546" dev="pschumacher" type="fix" due-to="Tomas Celaya"> 1479*0c4d7b72SSadaf Ebrahimi ClosedOutputStream#flush should throw 1480*0c4d7b72SSadaf Ebrahimi </action> 1481*0c4d7b72SSadaf Ebrahimi <action issue="IO-551" dev="britter" type="add"> 1482*0c4d7b72SSadaf Ebrahimi Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility 1483*0c4d7b72SSadaf Ebrahimi </action> 1484*0c4d7b72SSadaf Ebrahimi <action issue="IO-550" dev="kinow" type="fix" due-to="Jimi Adrian"> 1485*0c4d7b72SSadaf Ebrahimi Documentation issue, fix 404 Javadoc issues in the description page 1486*0c4d7b72SSadaf Ebrahimi </action> 1487*0c4d7b72SSadaf Ebrahimi <action issue="IO-542" dev="pschumacher" type="update" due-to="Ilmars Poikans"> 1488*0c4d7b72SSadaf Ebrahimi FileUtils#readFileToByteArray: optimize reading of files with known size 1489*0c4d7b72SSadaf Ebrahimi </action> 1490*0c4d7b72SSadaf Ebrahimi <action issue="IO-547" dev="ggregory" type="update" due-to="Nikhil Shinde, Michael Ernst, Gary Greory"> 1491*0c4d7b72SSadaf Ebrahimi Throw a IllegalArgumentException instead of NullPointerException in FileSystemUtils.freeSpaceWindows(). 1492*0c4d7b72SSadaf Ebrahimi </action> 1493*0c4d7b72SSadaf Ebrahimi <action issue="IO-367" dev="pschumacher" type="add" due-to="James Sawle"> 1494*0c4d7b72SSadaf Ebrahimi Add convenience methods for copyToDirectory 1495*0c4d7b72SSadaf Ebrahimi </action> 1496*0c4d7b72SSadaf Ebrahimi <action issue="IO-442" dev="pschumacher" type="fix" due-to="Simon Robinson"> 1497*0c4d7b72SSadaf Ebrahimi Javadoc contradictory for FileFilterUtils.ageFileFilter(cutoff) and the filter it constructs: AgeFileFilter(cutoff) 1498*0c4d7b72SSadaf Ebrahimi </action> 1499*0c4d7b72SSadaf Ebrahimi <action issue="IO-534" dev="sebb" type="fix"> 1500*0c4d7b72SSadaf Ebrahimi FileUtilTestCase.testForceDeleteDir() should not delete testDirectory parent 1501*0c4d7b72SSadaf Ebrahimi </action> 1502*0c4d7b72SSadaf Ebrahimi <action issue="IO-528" dev="pschumacher" type="fix" due-to="Dave Moten"> 1503*0c4d7b72SSadaf Ebrahimi fix Tailer.run race condition runaway logging 1504*0c4d7b72SSadaf Ebrahimi </action> 1505*0c4d7b72SSadaf Ebrahimi <action issue="IO-483" dev="kinow" type="fix" due-to="Marko Vasic"> 1506*0c4d7b72SSadaf Ebrahimi getPrefixLength return -1 if Unix file contains colon 1507*0c4d7b72SSadaf Ebrahimi </action> 1508*0c4d7b72SSadaf Ebrahimi <action issue="IO-520" dev="pschumacher" type="fix"> 1509*0c4d7b72SSadaf Ebrahimi FileUtilsTestCase#testContentEqualsIgnoreEOL fails on Windows 1510*0c4d7b72SSadaf Ebrahimi </action> 1511*0c4d7b72SSadaf Ebrahimi <action issue="IO-516" dev="pschumacher" type="fix" due-to="Jason Pyeron"> 1512*0c4d7b72SSadaf Ebrahimi .gitattributes not correctly applied 1513*0c4d7b72SSadaf Ebrahimi </action> 1514*0c4d7b72SSadaf Ebrahimi <action issue="IO-515" dev="ggregory" type="fix" due-to="Brett Lounsbury, Gary Gregory"> 1515*0c4d7b72SSadaf Ebrahimi Allow Specifying Initial Buffer Size of DeferredFileOutputStream. 1516*0c4d7b72SSadaf Ebrahimi </action> 1517*0c4d7b72SSadaf Ebrahimi <action issue="IO-512" dev="ggregory" type="fix" due-to="Ralf Hauser"> 1518*0c4d7b72SSadaf Ebrahimi ThresholdingOutputStream.thresholdReached() results in FileNotFoundException. 1519*0c4d7b72SSadaf Ebrahimi </action> 1520*0c4d7b72SSadaf Ebrahimi <action issue="IO-511" dev="britter" type="fix" due-to="Ahmet Celik"> 1521*0c4d7b72SSadaf Ebrahimi After a few unit tests, a few newly created directories not cleaned completely. 1522*0c4d7b72SSadaf Ebrahimi </action> 1523*0c4d7b72SSadaf Ebrahimi <action issue="IO-502" dev="ggregory" type="fix" due-to="Christian Schulte"> 1524*0c4d7b72SSadaf Ebrahimi Exceptions are suppressed incorrectly when copying files. 1525*0c4d7b72SSadaf Ebrahimi </action> 1526*0c4d7b72SSadaf Ebrahimi <action issue="IO-503" dev="ggregory" type="fix"> 1527*0c4d7b72SSadaf Ebrahimi Update platform requirement to Java 7. 1528*0c4d7b72SSadaf Ebrahimi </action> 1529*0c4d7b72SSadaf Ebrahimi <action issue="IO-537" dev="ggregory" type="fix" due-to="Borys Zibrov"> 1530*0c4d7b72SSadaf Ebrahimi BOMInputStream shouldn't sort array of BOMs in-place. 1531*0c4d7b72SSadaf Ebrahimi </action> 1532*0c4d7b72SSadaf Ebrahimi <action issue="IO-506" dev="ggregory" type="update" due-to="Christian Schulte"> 1533*0c4d7b72SSadaf Ebrahimi Deprecate methods FileSystemUtils.freeSpaceKb(). 1534*0c4d7b72SSadaf Ebrahimi </action> 1535*0c4d7b72SSadaf Ebrahimi <action issue="IO-505" dev="ggregory" type="update" due-to="Christian Schulte"> 1536*0c4d7b72SSadaf Ebrahimi Make LineIterator implement Closeable to support try-with-resources statements. 1537*0c4d7b72SSadaf Ebrahimi </action> 1538*0c4d7b72SSadaf Ebrahimi <action issue="IO-504" dev="ggregory" type="update" due-to="Christian Schulte"> 1539*0c4d7b72SSadaf Ebrahimi Deprecated of all IOUtils.closeQuietly() methods and use try-with-resources internally. 1540*0c4d7b72SSadaf Ebrahimi </action> 1541*0c4d7b72SSadaf Ebrahimi <action issue="IO-493" dev="pschumacher" type="add" due-to="Piotr Turski"> 1542*0c4d7b72SSadaf Ebrahimi Add infinite circular input stream 1543*0c4d7b72SSadaf Ebrahimi </action> 1544*0c4d7b72SSadaf Ebrahimi <action issue="IO-507" dev="ggregory" type="add"> 1545*0c4d7b72SSadaf Ebrahimi Add a ByteOrderParser class. 1546*0c4d7b72SSadaf Ebrahimi </action> 1547*0c4d7b72SSadaf Ebrahimi <action issue="IO-518" dev="jochen" type="add"> 1548*0c4d7b72SSadaf Ebrahimi Add ObservableInputStream 1549*0c4d7b72SSadaf Ebrahimi </action> 1550*0c4d7b72SSadaf Ebrahimi <action issue="IO-519" dev="jochen" type="add"> 1551*0c4d7b72SSadaf Ebrahimi Add MessageDigestCalculatingInputStream 1552*0c4d7b72SSadaf Ebrahimi </action> 1553*0c4d7b72SSadaf Ebrahimi <action issue="IO-513" dev="ggregory" type="add" due-to="Behrang Saeedzadeh"> 1554*0c4d7b72SSadaf Ebrahimi Add convenience methods for reading class path resources. 1555*0c4d7b72SSadaf Ebrahimi </action> 1556*0c4d7b72SSadaf Ebrahimi <action issue="IO-514" dev="pschumacher" type="remove"> 1557*0c4d7b72SSadaf Ebrahimi Remove org.apache.commons.io.Java7Support 1558*0c4d7b72SSadaf Ebrahimi </action> 1559*0c4d7b72SSadaf Ebrahimi <action issue="IO-567" dev="jochen" type="fix"> 1560*0c4d7b72SSadaf Ebrahimi Implement special case handling for NTFS ADS names: FilenameUtils.getExtension(String), 1561*0c4d7b72SSadaf Ebrahimi and FilenameUtils.indexOfExtension(String) are now throwing an IllegalArgumentException, 1562*0c4d7b72SSadaf Ebrahimi if the file name in question appears to identify an alternate data stream (Windows only). 1563*0c4d7b72SSadaf Ebrahimi </action> 1564*0c4d7b72SSadaf Ebrahimi </release> 1565*0c4d7b72SSadaf Ebrahimi 1566*0c4d7b72SSadaf Ebrahimi <release version="2.5" date="2016-04-22" description="New features and bug fixes."> 1567*0c4d7b72SSadaf Ebrahimi <action issue="IO-492" dev="ggregory" type="fix" due-to="Santiago Castro"> 1568*0c4d7b72SSadaf Ebrahimi Typo: In an IOUtils.java comment it says "focussed" instead of "focused". 1569*0c4d7b72SSadaf Ebrahimi </action> 1570*0c4d7b72SSadaf Ebrahimi <action issue="IO-433" dev="krosenvold" type="update"> 1571*0c4d7b72SSadaf Ebrahimi Converted all test cases to JUnit 4 1572*0c4d7b72SSadaf Ebrahimi </action> 1573*0c4d7b72SSadaf Ebrahimi <action issue="IO-487" dev="bdelacretaz" type="add"> 1574*0c4d7b72SSadaf Ebrahimi Add ValidatingObjectInputStream for controlled deserialization 1575*0c4d7b72SSadaf Ebrahimi </action> 1576*0c4d7b72SSadaf Ebrahimi <action issue="IO-446" dev="krosenvold" type="fix" due-to="Jeffrey Barrus"> 1577*0c4d7b72SSadaf Ebrahimi adds an endOfFileReached method to the TailerListener 1578*0c4d7b72SSadaf Ebrahimi </action> 1579*0c4d7b72SSadaf Ebrahimi <action issue="IO-484" dev="krosenvold" type="fix" due-to="Philippe Arteau"> 1580*0c4d7b72SSadaf Ebrahimi FilenameUtils should handle embedded null bytes 1581*0c4d7b72SSadaf Ebrahimi </action> 1582*0c4d7b72SSadaf Ebrahimi <action issue="IO-481" dev="krosenvold" type="fix"> 1583*0c4d7b72SSadaf Ebrahimi Changed/Corrected algorithm for waitFor 1584*0c4d7b72SSadaf Ebrahimi </action> 1585*0c4d7b72SSadaf Ebrahimi <action issue="IO-471" dev="krosenvold" type="add" due-to="Leandro Reis"> 1586*0c4d7b72SSadaf Ebrahimi Support for additional encodings in ReversedLinesFileReader 1587*0c4d7b72SSadaf Ebrahimi </action> 1588*0c4d7b72SSadaf Ebrahimi <action issue="IO-428" dev="krosenvold" type="fix" due-to="Stefan Gmeiner"> 1589*0c4d7b72SSadaf Ebrahimi BOMInputStream.skip returns wrong count if stream contains no BOM 1590*0c4d7b72SSadaf Ebrahimi </action> 1591*0c4d7b72SSadaf Ebrahimi <action issue="IO-425" dev="krosenvold" type="add" due-to="Craig Swank"> 1592*0c4d7b72SSadaf Ebrahimi Setter method for threshold on ThresholdingOutputStream 1593*0c4d7b72SSadaf Ebrahimi </action> 1594*0c4d7b72SSadaf Ebrahimi <action issue="IO-488" dev="krosenvold" type="fix" due-to="Björn Buchner"> 1595*0c4d7b72SSadaf Ebrahimi FileUtils.waitFor(...) swallows thread interrupted status 1596*0c4d7b72SSadaf Ebrahimi </action> 1597*0c4d7b72SSadaf Ebrahimi <action issue="IO-452" dev="krosenvold" type="fix" due-to="David Standish"> 1598*0c4d7b72SSadaf Ebrahimi Support for symlinks with missing target. Added support for JDK7 symlink features when present 1599*0c4d7b72SSadaf Ebrahimi </action> 1600*0c4d7b72SSadaf Ebrahimi <action issue="IO-466" dev="krosenvold" type="update"> 1601*0c4d7b72SSadaf Ebrahimi Added testcase to show this was fixed with IO-423 1602*0c4d7b72SSadaf Ebrahimi </action> 1603*0c4d7b72SSadaf Ebrahimi <action issue="IO-479" dev="sebb" type="update" due-to="Zhouce Chen"> 1604*0c4d7b72SSadaf Ebrahimi Correct exception message in FileUtils.getFile(File, String...) 1605*0c4d7b72SSadaf Ebrahimi </action> 1606*0c4d7b72SSadaf Ebrahimi <action issue="IO-406" dev="britter" type="add" due-to="Niall Pemberton"> 1607*0c4d7b72SSadaf Ebrahimi Introduce new class AppendableOutputStream 1608*0c4d7b72SSadaf Ebrahimi </action> 1609*0c4d7b72SSadaf Ebrahimi <action issue="IO-465" dev="britter" type="update" due-to="based2"> 1610*0c4d7b72SSadaf Ebrahimi Update to JUnit 4.12 1611*0c4d7b72SSadaf Ebrahimi </action> 1612*0c4d7b72SSadaf Ebrahimi <action issue="IO-462" dev="sebb" type="update"> 1613*0c4d7b72SSadaf Ebrahimi IOExceptionWithCause no longer needed 1614*0c4d7b72SSadaf Ebrahimi </action> 1615*0c4d7b72SSadaf Ebrahimi <action issue="IO-459" dev="olamy" type="add" due-to="Kristian Rosenvold"> 1616*0c4d7b72SSadaf Ebrahimi Add WindowsLineEndingInputStream and UnixLineEndingInputStream. 1617*0c4d7b72SSadaf Ebrahimi </action> 1618*0c4d7b72SSadaf Ebrahimi <action issue="IO-457" dev="olamy" type="add" due-to="Kristian Rosenvold"> 1619*0c4d7b72SSadaf Ebrahimi Add a BoundedReader, a wrapper that can be used to constrain access 1620*0c4d7b72SSadaf Ebrahimi to an underlying stream when used with mark/reset - 1621*0c4d7b72SSadaf Ebrahimi to avoid overflowing the mark limit of the underlying buffer. 1622*0c4d7b72SSadaf Ebrahimi </action> 1623*0c4d7b72SSadaf Ebrahimi <action issue="IO-453" dev="sebb" type="fix" due-to="Steven Christou"> 1624*0c4d7b72SSadaf Ebrahimi Regression in FileUtils.readFileToString from 2.0.1 1625*0c4d7b72SSadaf Ebrahimi </action> 1626*0c4d7b72SSadaf Ebrahimi <action issue="IO-451" dev="sebb" type="fix" due-to="David Standish"> 1627*0c4d7b72SSadaf Ebrahimi ant test fails - resources missing from test classpath 1628*0c4d7b72SSadaf Ebrahimi </action> 1629*0c4d7b72SSadaf Ebrahimi <action issue="IO-435" dev="tn" type="fix" due-to="Dominik Stadler"> 1630*0c4d7b72SSadaf Ebrahimi Document that FileUtils.deleteDirectory, directoryContains and cleanDirectory 1631*0c4d7b72SSadaf Ebrahimi may throw an IllegalArgumentException in case the passed directory does not 1632*0c4d7b72SSadaf Ebrahimi exist or is not a directory. 1633*0c4d7b72SSadaf Ebrahimi </action> 1634*0c4d7b72SSadaf Ebrahimi <action issue="IO-426" dev="ggregory" type="add"> 1635*0c4d7b72SSadaf Ebrahimi Add API IOUtils.closeQuietly(Closeable...) 1636*0c4d7b72SSadaf Ebrahimi </action> 1637*0c4d7b72SSadaf Ebrahimi <action issue="IO-424" dev="ggregory" type="fix" due-to="Ville Skyttä"> 1638*0c4d7b72SSadaf Ebrahimi Javadoc fixes, mostly to appease 1.8.0 1639*0c4d7b72SSadaf Ebrahimi </action> 1640*0c4d7b72SSadaf Ebrahimi <action issue="IO-422" dev="ggregory" type="update"> 1641*0c4d7b72SSadaf Ebrahimi Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets 1642*0c4d7b72SSadaf Ebrahimi </action> 1643*0c4d7b72SSadaf Ebrahimi <action issue="IO-410" dev="sebb" type="add" due-to="Beluga Behr"> 1644*0c4d7b72SSadaf Ebrahimi Readfully() That Returns A Byte Array 1645*0c4d7b72SSadaf Ebrahimi </action> 1646*0c4d7b72SSadaf Ebrahimi <action issue="IO-395" dev="brentworden" type="add" due-to="Beluga Behr"> 1647*0c4d7b72SSadaf Ebrahimi Overload IOUtils buffer methods to accept buffer size 1648*0c4d7b72SSadaf Ebrahimi </action> 1649*0c4d7b72SSadaf Ebrahimi <action issue="IO-389" dev="sebb" type="fix" due-to="Austin Doupnik"> 1650*0c4d7b72SSadaf Ebrahimi FileUtils.sizeOfDirectory can throw IllegalArgumentException 1651*0c4d7b72SSadaf Ebrahimi </action> 1652*0c4d7b72SSadaf Ebrahimi <action issue="IO-390" dev="sebb" type="fix"> 1653*0c4d7b72SSadaf Ebrahimi FileUtils.sizeOfDirectoryAsBigInteger can overflow. 1654*0c4d7b72SSadaf Ebrahimi Ensure that recursive calls all use BigInteger 1655*0c4d7b72SSadaf Ebrahimi </action> 1656*0c4d7b72SSadaf Ebrahimi <action issue="IO-382" dev="sebb" type="add"> 1657*0c4d7b72SSadaf Ebrahimi Chunked IO for large arrays. 1658*0c4d7b72SSadaf Ebrahimi Added writeChunked(byte[], OutputStream) and writeChunked(char[] Writer) 1659*0c4d7b72SSadaf Ebrahimi Added ChunkedOutputStream, ChunkedWriter 1660*0c4d7b72SSadaf Ebrahimi </action> 1661*0c4d7b72SSadaf Ebrahimi <action issue="IO-385" dev="sebb" type="fix"> 1662*0c4d7b72SSadaf Ebrahimi FileUtils.doCopyFile can potentially loop forever 1663*0c4d7b72SSadaf Ebrahimi Exit loop if no data to copy 1664*0c4d7b72SSadaf Ebrahimi </action> 1665*0c4d7b72SSadaf Ebrahimi <action issue="IO-383" dev="sebb" type="fix"> 1666*0c4d7b72SSadaf Ebrahimi FileUtils.doCopyFile caches the file size; needs to be documented 1667*0c4d7b72SSadaf Ebrahimi Added Javadoc; show file lengths in exception message 1668*0c4d7b72SSadaf Ebrahimi </action> 1669*0c4d7b72SSadaf Ebrahimi <action issue="IO-239" dev="sebb" type="update"> 1670*0c4d7b72SSadaf Ebrahimi Convert IOCase to a Java 1.5+ Enumeration 1671*0c4d7b72SSadaf Ebrahimi [N.B. this is binary compatible] 1672*0c4d7b72SSadaf Ebrahimi </action> 1673*0c4d7b72SSadaf Ebrahimi <action issue="IO-233" dev="sebb" type="add"> 1674*0c4d7b72SSadaf Ebrahimi Add Methods for Buffering Streams/Writers To IOUtils 1675*0c4d7b72SSadaf Ebrahimi Added overloaded buffer() methods - see also IO-330 1676*0c4d7b72SSadaf Ebrahimi </action> 1677*0c4d7b72SSadaf Ebrahimi <action issue="IO-330" dev="sebb" type="add"> 1678*0c4d7b72SSadaf Ebrahimi IOUtils#toBufferedOutputStream/toBufferedWriter to conditionally wrap the output 1679*0c4d7b72SSadaf Ebrahimi Added overloaded buffer() methods - see also IO-233 1680*0c4d7b72SSadaf Ebrahimi </action> 1681*0c4d7b72SSadaf Ebrahimi <action issue="IO-381" dev="ggregory" type="add"> 1682*0c4d7b72SSadaf Ebrahimi Add FileUtils.copyInputStreamToFile API with option to leave the source open. 1683*0c4d7b72SSadaf Ebrahimi See copyInputStreamToFile(final InputStream source, final File destination, boolean closeSource) 1684*0c4d7b72SSadaf Ebrahimi </action> 1685*0c4d7b72SSadaf Ebrahimi <action issue="IO-380" dev="sebb" type="fix" due-to="claudio_ch"> 1686*0c4d7b72SSadaf Ebrahimi FileUtils.copyInputStreamToFile should document it closes the input source 1687*0c4d7b72SSadaf Ebrahimi </action> 1688*0c4d7b72SSadaf Ebrahimi <action issue="IO-279" dev="sebb" type="fix"> 1689*0c4d7b72SSadaf Ebrahimi Tailer erroneously considers file as new. 1690*0c4d7b72SSadaf Ebrahimi Fix to use file.lastModified() rather than System.currentTimeMillis() 1691*0c4d7b72SSadaf Ebrahimi </action> 1692*0c4d7b72SSadaf Ebrahimi <action issue="IO-356" dev="sebb" type="fix"> 1693*0c4d7b72SSadaf Ebrahimi CharSequenceInputStream#reset() behaves incorrectly in case when buffer size is not dividable by data size. 1694*0c4d7b72SSadaf Ebrahimi Fix code so skip relates to the encoded bytes; reset now re-encodes the data up to the point of the mark 1695*0c4d7b72SSadaf Ebrahimi </action> 1696*0c4d7b72SSadaf Ebrahimi <action issue="IO-379" dev="sebb" type="add"> 1697*0c4d7b72SSadaf Ebrahimi CharSequenceInputStream - add tests for available() 1698*0c4d7b72SSadaf Ebrahimi Fix code so it really does reflect a minimum available. 1699*0c4d7b72SSadaf Ebrahimi </action> 1700*0c4d7b72SSadaf Ebrahimi <action issue="IO-328" dev="sebb" type="update"> 1701*0c4d7b72SSadaf Ebrahimi getPrefixLength returns null if filename has leading slashes 1702*0c4d7b72SSadaf Ebrahimi Javadoc: add examples to show correct behavior; add unit tests 1703*0c4d7b72SSadaf Ebrahimi </action> 1704*0c4d7b72SSadaf Ebrahimi <action issue="IO-299" dev="sebb" type="update"> 1705*0c4d7b72SSadaf Ebrahimi FileUtils.listFilesAndDirs includes original dir in results even when it doesn't match filter 1706*0c4d7b72SSadaf Ebrahimi Javadoc: clarify that original dir is included in the results 1707*0c4d7b72SSadaf Ebrahimi </action> 1708*0c4d7b72SSadaf Ebrahimi <action issue="IO-346" dev="sebb" type="add"> 1709*0c4d7b72SSadaf Ebrahimi Add ByteArrayOutputStream.toInputStream() 1710*0c4d7b72SSadaf Ebrahimi </action> 1711*0c4d7b72SSadaf Ebrahimi <action issue="IO-368" dev="sebb" type="fix"> 1712*0c4d7b72SSadaf Ebrahimi ClassLoaderObjectInputStream does not handle primitive typed members 1713*0c4d7b72SSadaf Ebrahimi </action> 1714*0c4d7b72SSadaf Ebrahimi <action issue="IO-341" dev="sebb" type="add"> 1715*0c4d7b72SSadaf Ebrahimi A constant for holding the BOM character (U+FEFF) 1716*0c4d7b72SSadaf Ebrahimi </action> 1717*0c4d7b72SSadaf Ebrahimi <action issue="IO-314" dev="sebb" type="fix"> 1718*0c4d7b72SSadaf Ebrahimi Deprecate all methods that use the default encoding 1719*0c4d7b72SSadaf Ebrahimi </action> 1720*0c4d7b72SSadaf Ebrahimi <action issue="IO-338" dev="sebb" type="fix"> 1721*0c4d7b72SSadaf Ebrahimi When a file is rotated, finish reading previous file prior to starting new one 1722*0c4d7b72SSadaf Ebrahimi </action> 1723*0c4d7b72SSadaf Ebrahimi <action issue="IO-354" dev="sebb" type="fix"> 1724*0c4d7b72SSadaf Ebrahimi Commons IO Tailer does not respect UTF-8 Charset. 1725*0c4d7b72SSadaf Ebrahimi </action> 1726*0c4d7b72SSadaf Ebrahimi <action issue="IO-323" dev="sebb" type="fix"> 1727*0c4d7b72SSadaf Ebrahimi What should happen in FileUtils.sizeOf[Directory] when an overflow takes place? 1728*0c4d7b72SSadaf Ebrahimi Added Javadoc. 1729*0c4d7b72SSadaf Ebrahimi </action> 1730*0c4d7b72SSadaf Ebrahimi <action issue="IO-372" dev="sebb" type="fix"> 1731*0c4d7b72SSadaf Ebrahimi FileUtils.moveDirectory can produce misleading error message on failure 1732*0c4d7b72SSadaf Ebrahimi </action> 1733*0c4d7b72SSadaf Ebrahimi <action issue="IO-375" dev="sebb" type="update"> 1734*0c4d7b72SSadaf Ebrahimi FilenameUtils.splitOnTokens(String text) check for '**' could be simplified 1735*0c4d7b72SSadaf Ebrahimi </action> 1736*0c4d7b72SSadaf Ebrahimi <action issue="IO-374" dev="sebb" type="update"> 1737*0c4d7b72SSadaf Ebrahimi WildcardFileFilter ctors should not use null to mean IOCase.SENSITIVE when delegating to other ctors 1738*0c4d7b72SSadaf Ebrahimi </action> 1739*0c4d7b72SSadaf Ebrahimi <action issue="IO-362" dev="ggregory" type="fix" due-to="mmadson, ggregory"> 1740*0c4d7b72SSadaf Ebrahimi IOUtils.contentEquals* methods returns false if input1 == input2, should return true. 1741*0c4d7b72SSadaf Ebrahimi </action> 1742*0c4d7b72SSadaf Ebrahimi <action issue="IO-361" dev="ggregory" type="add"> 1743*0c4d7b72SSadaf Ebrahimi Add API FileUtils.forceMkdirsParent(). 1744*0c4d7b72SSadaf Ebrahimi </action> 1745*0c4d7b72SSadaf Ebrahimi <action issue="IO-360" dev="ggregory" type="add"> 1746*0c4d7b72SSadaf Ebrahimi Add API Charsets.requiredCharsets(). 1747*0c4d7b72SSadaf Ebrahimi </action> 1748*0c4d7b72SSadaf Ebrahimi <action issue="IO-359" dev="ggregory" type="add" due-to="yukoba"> 1749*0c4d7b72SSadaf Ebrahimi Add IOUtils.skip and skipFully(ReadableByteChannel, long). 1750*0c4d7b72SSadaf Ebrahimi </action> 1751*0c4d7b72SSadaf Ebrahimi <action issue="IO-358" dev="ggregory" type="add" due-to="yukoba"> 1752*0c4d7b72SSadaf Ebrahimi Add IOUtils.read and readFully(ReadableByteChannel, ByteBuffer buffer). 1753*0c4d7b72SSadaf Ebrahimi </action> 1754*0c4d7b72SSadaf Ebrahimi <action issue="IO-357" dev="ggregory" type="fix" due-to="mortenh"> 1755*0c4d7b72SSadaf Ebrahimi [Tailer] InterruptedException while the thread is sleeping is silently ignored 1756*0c4d7b72SSadaf Ebrahimi </action> 1757*0c4d7b72SSadaf Ebrahimi <action issue="IO-353" dev="ggregory" type="add" due-to="ggregory"> 1758*0c4d7b72SSadaf Ebrahimi Add API IOUtils.copy(InputStream, OutputStream, int) 1759*0c4d7b72SSadaf Ebrahimi </action> 1760*0c4d7b72SSadaf Ebrahimi <action issue="IO-349" dev="ggregory" type="add" due-to="scop"> 1761*0c4d7b72SSadaf Ebrahimi Add API with array offset and length argument to FileUtils.writeByteArrayToFile. 1762*0c4d7b72SSadaf Ebrahimi </action> 1763*0c4d7b72SSadaf Ebrahimi <action issue="IO-352" dev="ggregory" type="fix" due-to="scop"> 1764*0c4d7b72SSadaf Ebrahimi Spelling fixes. 1765*0c4d7b72SSadaf Ebrahimi </action> 1766*0c4d7b72SSadaf Ebrahimi <action issue="IO-348" dev="ggregory" type="add" due-to="plcstpierre"> 1767*0c4d7b72SSadaf Ebrahimi Missing information in IllegalArgumentException thrown by org.apache.commons.io.FileUtils#validateListFilesParameters. 1768*0c4d7b72SSadaf Ebrahimi </action> 1769*0c4d7b72SSadaf Ebrahimi <action issue="IO-345" dev="ggregory" type="add" due-to="mkresse"> 1770*0c4d7b72SSadaf Ebrahimi Supply a hook method allowing Tailer actively determining stop condition. 1771*0c4d7b72SSadaf Ebrahimi </action> 1772*0c4d7b72SSadaf Ebrahimi <action issue="IO-436" dev="ggregory" type="fix" due-to="christoph.schneegans"> 1773*0c4d7b72SSadaf Ebrahimi Improper Javadoc comment for FilenameUtils.indexOfExtension. 1774*0c4d7b72SSadaf Ebrahimi </action> 1775*0c4d7b72SSadaf Ebrahimi <action issue="IO-437" dev="ggregory" type="add"> 1776*0c4d7b72SSadaf Ebrahimi Make IOUtils.EOF public and reuse it in various classes. 1777*0c4d7b72SSadaf Ebrahimi </action> 1778*0c4d7b72SSadaf Ebrahimi </release> 1779*0c4d7b72SSadaf Ebrahimi 1780*0c4d7b72SSadaf Ebrahimi <release version="2.4" date="2012-06-12" description="New features and bug fixes."> 1781*0c4d7b72SSadaf Ebrahimi <action issue="IO-343" dev="ggregory" type="fix" due-to="igorlash"> 1782*0c4d7b72SSadaf Ebrahimi org.apache.commons.io.comparator Javadoc is inconsistent with real code. 1783*0c4d7b72SSadaf Ebrahimi </action> 1784*0c4d7b72SSadaf Ebrahimi <action issue="IO-336" dev="ggregory" type="fix" due-to="rleavelle"> 1785*0c4d7b72SSadaf Ebrahimi Yottabyte (YB) incorrectly defined in FileUtils. 1786*0c4d7b72SSadaf Ebrahimi </action> 1787*0c4d7b72SSadaf Ebrahimi <action issue="IO-269" dev="ggregory" type="add" due-to="sebb"> 1788*0c4d7b72SSadaf Ebrahimi Tailer locks file from deletion/rename on Windows. 1789*0c4d7b72SSadaf Ebrahimi </action> 1790*0c4d7b72SSadaf Ebrahimi <action issue="IO-279" dev="sebb" type="fix" due-to="Sergio Bossa, Chris Baron"> 1791*0c4d7b72SSadaf Ebrahimi Tailer erroneously considers file as new. 1792*0c4d7b72SSadaf Ebrahimi </action> 1793*0c4d7b72SSadaf Ebrahimi <action issue="IO-335" dev="sebb" type="fix"> 1794*0c4d7b72SSadaf Ebrahimi Tailer#readLines - incorrect CR handling. 1795*0c4d7b72SSadaf Ebrahimi </action> 1796*0c4d7b72SSadaf Ebrahimi <action issue="IO-334" dev="sebb" type="fix"> 1797*0c4d7b72SSadaf Ebrahimi FileUtils.toURLs throws NPE for null parameter; document the behavior. 1798*0c4d7b72SSadaf Ebrahimi </action> 1799*0c4d7b72SSadaf Ebrahimi <action issue="IO-333" dev="ggregory" type="add" due-to="fmeschbe"> 1800*0c4d7b72SSadaf Ebrahimi Export OSGi packages at version 1.x in addition to 2.x. 1801*0c4d7b72SSadaf Ebrahimi </action> 1802*0c4d7b72SSadaf Ebrahimi <action issue="IO-320" dev="ggregory" type="add" due-to="ggregory"> 1803*0c4d7b72SSadaf Ebrahimi Add XmlStreamReader support for UTF-32. 1804*0c4d7b72SSadaf Ebrahimi </action> 1805*0c4d7b72SSadaf Ebrahimi <action issue="IO-331" dev="ggregory" type="add" due-to="ggregory"> 1806*0c4d7b72SSadaf Ebrahimi BOMInputStream wrongly detects UTF-32LE_BOM files as UTF-16LE_BOM files in method getBOM(). 1807*0c4d7b72SSadaf Ebrahimi </action> 1808*0c4d7b72SSadaf Ebrahimi <action issue="IO-332" dev="ggregory" type="fix" due-to="liangly"> 1809*0c4d7b72SSadaf Ebrahimi Improve tailer's reading performance. 1810*0c4d7b72SSadaf Ebrahimi </action> 1811*0c4d7b72SSadaf Ebrahimi <action issue="IO-279" dev="ggregory" type="fix"> 1812*0c4d7b72SSadaf Ebrahimi Improve Tailer performance with buffered reads (see IO-332). 1813*0c4d7b72SSadaf Ebrahimi </action> 1814*0c4d7b72SSadaf Ebrahimi <action issue="IO-329" dev="ggregory" type="fix" due-to="tivv"> 1815*0c4d7b72SSadaf Ebrahimi FileUtils.writeLines uses unbuffered IO. 1816*0c4d7b72SSadaf Ebrahimi </action> 1817*0c4d7b72SSadaf Ebrahimi <action issue="IO-327" dev="ggregory" type="add" due-to="ggregory"> 1818*0c4d7b72SSadaf Ebrahimi Add byteCountToDisplaySize(BigInteger). 1819*0c4d7b72SSadaf Ebrahimi </action> 1820*0c4d7b72SSadaf Ebrahimi <action issue="IO-326" dev="ggregory" type="add" due-to="ggregory, kinow"> 1821*0c4d7b72SSadaf Ebrahimi Add new FileUtils.sizeOf[Directory] APIs to return BigInteger. 1822*0c4d7b72SSadaf Ebrahimi </action> 1823*0c4d7b72SSadaf Ebrahimi <action issue="IO-325" dev="ggregory" type="add" due-to="raviprak"> 1824*0c4d7b72SSadaf Ebrahimi Add IOUtils.toByteArray methods to work with URL and URI. 1825*0c4d7b72SSadaf Ebrahimi </action> 1826*0c4d7b72SSadaf Ebrahimi <action issue="IO-324" dev="ggregory" type="add" due-to="raviprak"> 1827*0c4d7b72SSadaf Ebrahimi Add missing Charset sister APIs to method that take a String charset name. 1828*0c4d7b72SSadaf Ebrahimi </action> 1829*0c4d7b72SSadaf Ebrahimi <action issue="IO-319" dev="ggregory" type="fix" due-to="raviprak"> 1830*0c4d7b72SSadaf Ebrahimi FileUtils.sizeOfDirectory follows symbolic links. 1831*0c4d7b72SSadaf Ebrahimi </action> 1832*0c4d7b72SSadaf Ebrahimi </release> 1833*0c4d7b72SSadaf Ebrahimi 1834*0c4d7b72SSadaf Ebrahimi <release version="2.3" date="2012-April-10" description="New features and bug fixes."> 1835*0c4d7b72SSadaf Ebrahimi <action issue="IO-322" dev="ggregory" type="add" due-to="ggregory"> 1836*0c4d7b72SSadaf Ebrahimi Add and use class Charsets. 1837*0c4d7b72SSadaf Ebrahimi </action> 1838*0c4d7b72SSadaf Ebrahimi <action issue="IO-321" dev="ggregory" type="add" due-to="ggregory"> 1839*0c4d7b72SSadaf Ebrahimi ByteOrderMark UTF_32LE is incorrect. 1840*0c4d7b72SSadaf Ebrahimi </action> 1841*0c4d7b72SSadaf Ebrahimi <action issue="IO-318" dev="ggregory" type="add" due-to="ggregory"> 1842*0c4d7b72SSadaf Ebrahimi Add Charset sister APIs to method that take a String charset name. 1843*0c4d7b72SSadaf Ebrahimi </action> 1844*0c4d7b72SSadaf Ebrahimi </release> 1845*0c4d7b72SSadaf Ebrahimi 1846*0c4d7b72SSadaf Ebrahimi <release version="2.2" date="2012-March-26" description="New features and bug fixes."> 1847*0c4d7b72SSadaf Ebrahimi <action issue="IO-313" dev="ggregory" type="add" due-to="ggregory"> 1848*0c4d7b72SSadaf Ebrahimi Add IOUtils.toBufferedReader(Reader) 1849*0c4d7b72SSadaf Ebrahimi </action> 1850*0c4d7b72SSadaf Ebrahimi <!-- Note: the issue was not raised by Manoj, but arose from IO-305 and tests he performed --> 1851*0c4d7b72SSadaf Ebrahimi <action issue="IO-308" dev="sebb" type="add" due-to="Manoj Mokashi"> 1852*0c4d7b72SSadaf Ebrahimi Allow applications to provide buffer (or size) for copyLarge methods. 1853*0c4d7b72SSadaf Ebrahimi </action> 1854*0c4d7b72SSadaf Ebrahimi <action issue="IO-311" dev="sebb" type="fix" due-to="Robert Muir"> 1855*0c4d7b72SSadaf Ebrahimi IOUtils.read(InputStream/Reader) ignores the offset parameter 1856*0c4d7b72SSadaf Ebrahimi </action> 1857*0c4d7b72SSadaf Ebrahimi <action issue="IO-312" dev="sebb" type="fix"> 1858*0c4d7b72SSadaf Ebrahimi CharSequenceInputStream(CharSequence s, Charset charset, int bufferSize) ignores bufferSize 1859*0c4d7b72SSadaf Ebrahimi </action> 1860*0c4d7b72SSadaf Ebrahimi <action issue="IO-305" dev="sebb" type="add" due-to="Manoj Mokashi"> 1861*0c4d7b72SSadaf Ebrahimi New copyLarge() method in IOUtils that takes additional offset, length arguments 1862*0c4d7b72SSadaf Ebrahimi </action> 1863*0c4d7b72SSadaf Ebrahimi <action issue="IO-300" dev="sebb" type="fix"> 1864*0c4d7b72SSadaf Ebrahimi FileUtils.moveDirectoryToDirectory removes source directory if destination is a sub-directory 1865*0c4d7b72SSadaf Ebrahimi </action> 1866*0c4d7b72SSadaf Ebrahimi <action issue="IO-307" dev="sebb" type="fix"> 1867*0c4d7b72SSadaf Ebrahimi ReaderInputStream#read(byte[] b, int off, int len) should check for valid parameters 1868*0c4d7b72SSadaf Ebrahimi </action> 1869*0c4d7b72SSadaf Ebrahimi <action issue="IO-287" dev="bayard" type="add" due-to="Ron Kuris, Gary Gregory"> 1870*0c4d7b72SSadaf Ebrahimi Use terabyte (TB), petabyte (PB) and exabyte (EB) in FileUtils.byteCountToDisplaySize(long size) 1871*0c4d7b72SSadaf Ebrahimi </action> 1872*0c4d7b72SSadaf Ebrahimi <action issue="IO-306" dev="sebb" type="fix"> 1873*0c4d7b72SSadaf Ebrahimi ReaderInputStream#read(byte[] b, int off, int len) should always return 0 for length == 0 1874*0c4d7b72SSadaf Ebrahimi </action> 1875*0c4d7b72SSadaf Ebrahimi <action issue="IO-173" dev="sebb" type="add" due-to="Marcos Vinícius da Silva"> 1876*0c4d7b72SSadaf Ebrahimi FileUtils.listFiles() doesn't return directories 1877*0c4d7b72SSadaf Ebrahimi </action> 1878*0c4d7b72SSadaf Ebrahimi <action issue="IO-276" dev="sebb" type="fix" due-to="nkami"> 1879*0c4d7b72SSadaf Ebrahimi "FileUtils#deleteDirectoryOnExit(File)" does not work 1880*0c4d7b72SSadaf Ebrahimi </action> 1881*0c4d7b72SSadaf Ebrahimi <action issue="IO-273" dev="sebb" type="fix" due-to="sebb"> 1882*0c4d7b72SSadaf Ebrahimi BoundedInputStream.read() treats max differently from BoundedInputStream.read(byte[]...) 1883*0c4d7b72SSadaf Ebrahimi </action> 1884*0c4d7b72SSadaf Ebrahimi <action issue="IO-297" dev="sebb" type="add" due-to="Oleg Kalnichevski"> 1885*0c4d7b72SSadaf Ebrahimi CharSequenceInputStream to efficiently stream content of a CharSequence 1886*0c4d7b72SSadaf Ebrahimi </action> 1887*0c4d7b72SSadaf Ebrahimi <action issue="IO-296" dev="sebb" type="update" due-to="Oleg Kalnichevski"> 1888*0c4d7b72SSadaf Ebrahimi ReaderInputStream optimization: more efficient reading of small chunks of data 1889*0c4d7b72SSadaf Ebrahimi </action> 1890*0c4d7b72SSadaf Ebrahimi <action issue="IO-298" dev="sebb" type="fix" due-to="Christian Schulte"> 1891*0c4d7b72SSadaf Ebrahimi Various methods of class 'org.apache.commons.io.FileUtils' incorrectly suppress 'java.io.IOException' 1892*0c4d7b72SSadaf Ebrahimi </action> 1893*0c4d7b72SSadaf Ebrahimi <action issue="IO-304" dev="ggregory" type="add" due-to="liangly"> 1894*0c4d7b72SSadaf Ebrahimi The second constructor of Tailer class does not pass 'delay' to the third one 1895*0c4d7b72SSadaf Ebrahimi </action> 1896*0c4d7b72SSadaf Ebrahimi <action issue="IO-303" dev="ggregory" type="add" due-to="fabian.barney"> 1897*0c4d7b72SSadaf Ebrahimi TeeOutputStream does not call branch.close() when main.close() throws an exception 1898*0c4d7b72SSadaf Ebrahimi </action> 1899*0c4d7b72SSadaf Ebrahimi <action issue="IO-302" dev="ggregory" type="add" due-to="jsteuerwald, detinho"> 1900*0c4d7b72SSadaf Ebrahimi ArrayIndexOutOfBoundsException in BOMInputStream when reading a file without BOM multiple times 1901*0c4d7b72SSadaf Ebrahimi </action> 1902*0c4d7b72SSadaf Ebrahimi <action issue="IO-301" dev="ggregory" type="add" due-to="kaykay.unique"> 1903*0c4d7b72SSadaf Ebrahimi Add IOUtils.closeQuietly(Selector) necessary 1904*0c4d7b72SSadaf Ebrahimi </action> 1905*0c4d7b72SSadaf Ebrahimi <action issue="IO-292" dev="sebb" type="add" due-to="sebb"> 1906*0c4d7b72SSadaf Ebrahimi IOUtils.closeQuietly() should take a ServerSocket as a parameter 1907*0c4d7b72SSadaf Ebrahimi </action> 1908*0c4d7b72SSadaf Ebrahimi <action issue="IO-290" dev="sebb" type="add" due-to="sebb"> 1909*0c4d7b72SSadaf Ebrahimi Add read/readFully methods to IOUtils 1910*0c4d7b72SSadaf Ebrahimi </action> 1911*0c4d7b72SSadaf Ebrahimi <action issue="IO-288" dev="sebb" type="add" due-to="Georg Henzler"> 1912*0c4d7b72SSadaf Ebrahimi Supply a ReversedLinesFileReader 1913*0c4d7b72SSadaf Ebrahimi </action> 1914*0c4d7b72SSadaf Ebrahimi <action issue="IO-291" dev="ggregory" type="add" due-to="ggregory"> 1915*0c4d7b72SSadaf Ebrahimi Add new function FileUtils.directoryContains. 1916*0c4d7b72SSadaf Ebrahimi </action> 1917*0c4d7b72SSadaf Ebrahimi <action issue="IO-275" dev="sebb" type="add" due-to="CJ Aspromgos"> 1918*0c4d7b72SSadaf Ebrahimi FileUtils.contentEquals and IOUtils.contentEquals - Add option to ignore "line endings" 1919*0c4d7b72SSadaf Ebrahimi Added contentEqualsIgnoreEOL methods to both classes 1920*0c4d7b72SSadaf Ebrahimi </action> 1921*0c4d7b72SSadaf Ebrahimi </release> 1922*0c4d7b72SSadaf Ebrahimi 1923*0c4d7b72SSadaf Ebrahimi <release version="2.1" date="2011-Sep-28" description="New features and bug fixes."> 1924*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" issue="IO-285" due-to="ggregory"> 1925*0c4d7b72SSadaf Ebrahimi Use standard Maven directory layout 1926*0c4d7b72SSadaf Ebrahimi </action> 1927*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" issue="IO-284" due-to="ggregory"> 1928*0c4d7b72SSadaf Ebrahimi Add IOUtils API toString for URL and URI to get contents 1929*0c4d7b72SSadaf Ebrahimi </action> 1930*0c4d7b72SSadaf Ebrahimi <action dev="ggregory" type="add" issue="IO-282" due-to="ggregory"> 1931*0c4d7b72SSadaf Ebrahimi Add API FileUtils.copyFile(File input, OutputStream output) 1932*0c4d7b72SSadaf Ebrahimi </action> 1933*0c4d7b72SSadaf Ebrahimi <action dev="sebb" type="fix" issue="IO-280" due-to="sebb"> 1934*0c4d7b72SSadaf Ebrahimi Dubious use of mkdirs() return code 1935*0c4d7b72SSadaf Ebrahimi </action> 1936*0c4d7b72SSadaf Ebrahimi <action type="fix" issue="IO-277"> 1937*0c4d7b72SSadaf Ebrahimi ReaderInputStream enters infinite loop when it encounters an unmappable character 1938*0c4d7b72SSadaf Ebrahimi </action> 1939*0c4d7b72SSadaf Ebrahimi <action type="fix" issue="IO-264"> 1940*0c4d7b72SSadaf Ebrahimi FileUtils.moveFile() Javadoc should specify FileExistsException thrown 1941*0c4d7b72SSadaf Ebrahimi </action> 1942*0c4d7b72SSadaf Ebrahimi <action type="add" issue="IO-262"> 1943*0c4d7b72SSadaf Ebrahimi FileAlterationObserver has no getter for FileFilter 1944*0c4d7b72SSadaf Ebrahimi </action> 1945*0c4d7b72SSadaf Ebrahimi <action type="add" issue="IO-261"> 1946*0c4d7b72SSadaf Ebrahimi Add FileUtils.getFile API with varargs parameter 1947*0c4d7b72SSadaf Ebrahimi </action> 1948*0c4d7b72SSadaf Ebrahimi <action type="fix" issue="IO-260"> 1949*0c4d7b72SSadaf Ebrahimi ClassLoaderObjectInputStream does not handle Proxy classes 1950*0c4d7b72SSadaf Ebrahimi </action> 1951*0c4d7b72SSadaf Ebrahimi <action type="update" issue="IO-259"> 1952*0c4d7b72SSadaf Ebrahimi FileAlterationMonitor.stop(boolean allowIntervalToFinish) 1953*0c4d7b72SSadaf Ebrahimi </action> 1954*0c4d7b72SSadaf Ebrahimi <action type="add" issue="IO-182"> 1955*0c4d7b72SSadaf Ebrahimi Add new APPEND parameter for writing string into files 1956*0c4d7b72SSadaf Ebrahimi </action> 1957*0c4d7b72SSadaf Ebrahimi <action dev="sebb" type="fix" issue="IO-274" due-to="Frank Grimes"> 1958*0c4d7b72SSadaf Ebrahimi Tailer returning partial lines when reaching EOF before EOL 1959*0c4d7b72SSadaf Ebrahimi </action> 1960*0c4d7b72SSadaf Ebrahimi <action dev="sebb" type="fix" issue="IO-266" due-to="Igor Smereka"> 1961*0c4d7b72SSadaf Ebrahimi FileUtils.copyFile() throws IOException when copying large files to a shared directory (on Windows) 1962*0c4d7b72SSadaf Ebrahimi </action> 1963*0c4d7b72SSadaf Ebrahimi <action dev="sebb" type="fix" issue="IO-263" due-to="Gil Adam"> 1964*0c4d7b72SSadaf Ebrahimi FileSystemUtils.freeSpaceKb throws exception for Windows volumes with no visible files. 1965*0c4d7b72SSadaf Ebrahimi Improve coverage by also looking for hidden files. 1966*0c4d7b72SSadaf Ebrahimi </action> 1967*0c4d7b72SSadaf Ebrahimi <action dev="sebb" type="add" issue="IO-251" due-to="Marco Albini"> 1968*0c4d7b72SSadaf Ebrahimi Add new read method "toByteArray" to handle InputStream with known size. 1969*0c4d7b72SSadaf Ebrahimi </action> 1970*0c4d7b72SSadaf Ebrahimi </release> 1971*0c4d7b72SSadaf Ebrahimi 1972*0c4d7b72SSadaf Ebrahimi <release version="2.0.1" date="2010-Dec-26"> 1973*0c4d7b72SSadaf Ebrahimi <action type="update"> 1974*0c4d7b72SSadaf Ebrahimi TODO: Convert RELEASE-NOTES.txt from 2.0.1? 1975*0c4d7b72SSadaf Ebrahimi </action> 1976*0c4d7b72SSadaf Ebrahimi </release> 1977*0c4d7b72SSadaf Ebrahimi 1978*0c4d7b72SSadaf Ebrahimi <release version="2.0" date="2010-Oct-18"> 1979*0c4d7b72SSadaf Ebrahimi <action type="update"> 1980*0c4d7b72SSadaf Ebrahimi TODO: Convert RELEASE-NOTES.txt from 2.0? 1981*0c4d7b72SSadaf Ebrahimi </action> 1982*0c4d7b72SSadaf Ebrahimi </release> 1983*0c4d7b72SSadaf Ebrahimi 1984*0c4d7b72SSadaf Ebrahimi <release version="1.4" date="2008-Jan-21"> 1985*0c4d7b72SSadaf Ebrahimi <action type="update"> 1986*0c4d7b72SSadaf Ebrahimi TODO: Convert RELEASE-NOTES.txt from 1.4? 1987*0c4d7b72SSadaf Ebrahimi </action> 1988*0c4d7b72SSadaf Ebrahimi </release> 1989*0c4d7b72SSadaf Ebrahimi 1990*0c4d7b72SSadaf Ebrahimi <release version="1.3.2" date="2007-Jul-02" description="Bug fixes."> 1991*0c4d7b72SSadaf Ebrahimi <action dev="jochen" type="fix" issue="IO-115"> 1992*0c4d7b72SSadaf Ebrahimi Some tests, which are implicitly assuming a Unix-like file 1993*0c4d7b72SSadaf Ebrahimi system, are now skipped on Windows. 1994*0c4d7b72SSadaf Ebrahimi </action> 1995*0c4d7b72SSadaf Ebrahimi <action dev="jochen" type="fix" issue="IO-116"> 1996*0c4d7b72SSadaf Ebrahimi Created the FileCleaningTracker, basically a non-static 1997*0c4d7b72SSadaf Ebrahimi version of the FileCleaner, which can be controlled by 1998*0c4d7b72SSadaf Ebrahimi the user. 1999*0c4d7b72SSadaf Ebrahimi </action> 2000*0c4d7b72SSadaf Ebrahimi <action dev="bayard" type="fix" issue="IO-117" due-to="Hiroshi Ikeda"> 2001*0c4d7b72SSadaf Ebrahimi EndianUtils - both readSwappedUnsignedInteger(...) methods could 2002*0c4d7b72SSadaf Ebrahimi return negative numbers due to int/long casting. 2003*0c4d7b72SSadaf Ebrahimi </action> 2004*0c4d7b72SSadaf Ebrahimi </release> 2005*0c4d7b72SSadaf Ebrahimi </body> 2006*0c4d7b72SSadaf Ebrahimi</document> 2007