| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <!-- |
| This file is used by the maven-changes-plugin to generate the release notes. |
| Useful ways of finding items to add to this file are: |
| |
| 1. Add items when you fix a bug or add a feature (this makes the |
| release process easy :-). |
| |
| 2. Do a Jira search for tickets closed since the previous release. |
| |
| 3. Use the report generated by the maven-changelog-plugin to see all |
| CVS commits. Set the project.properties' maven.changelog.range |
| property to the number of days since the last release. |
| |
| |
| To generate the release notes from this file: |
| |
| mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn] |
| |
| then tweak the source formatting if necessary and regenerate, then commit |
| |
| The <action> type attribute can be add,update,fix,remove. |
| --> |
| |
| <document xmlns="http://maven.apache.org/changes/1.0.0" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd"> |
| <properties> |
| <title>Apache Commons IO Release Notes</title> |
| </properties> |
| <body> |
| <release version="2.16.0" date="202Y-MM-DD" description="Java 8 is required."> |
| <!-- Fix --> |
| <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold">Fix and re-enable testSkip_RequiredCharsets #518.</action> |
| <action dev="ggregory" type="fix" issue="IO-824" due-to="Miguel Munoz, Gary Gregory">SymbolicLineFileFilter documentation fixes.</action> |
| <action dev="ggregory" type="fix" issue="IO-795" due-to="Miguel Munoz, Gary Gregory">CharSequenceInputStream.reset() only works once #520.</action> |
| <action dev="ggregory" type="fix" issue="IO-795" due-to="Elliotte Rusty Harold">Finish TODO on CharSequenceInputStream #540.</action> |
| <action dev="ggregory" type="fix" issue="IO-825" due-to="Arthur Chan, Gary Gregory">Add byte array size validation for methods in EndianUtils #521.</action> |
| <action dev="ggregory" type="fix" issue="IO-825" due-to="dkdal, Gary Gregory">Add missing test case CircularByteBufferTest.</action> |
| <action dev="ggregory" type="fix" issue="IO-781" due-to="Elliotte Rusty Harold">Make CharSequenceInputStream.available() more correct in the face of multibyte encodings #525.</action> |
| <action dev="ggregory" type="fix" issue="IO-781" due-to="Elliotte Rusty Harold">Remove unreachable code in AbstractIOFileFilterTest #526.</action> |
| <action dev="ggregory" type="fix" issue="IO-808" due-to="Elliotte Rusty Harold">Rationalize and unify checking for existence of files and directories #529.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in IOCase.checkEquals(String, String) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in CanExecuteFileFilter.accept(File) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in CanExecuteFileFilter.accept(Path, BasicFileAttributes) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in CanReadFileFilter.accept(File) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in CanReadFileFilter.accept(Path, BasicFileAttributes) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in CanWriteFileFilter.accept(File) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in CanWriteFileFilter.accept(Path, BasicFileAttributes) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in DirectoryFileFilter.accept(File) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in DirectoryFileFilter.accept(Path, BasicFileAttributes) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in EmptyFileFilter.accept(File) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in EmptyFileFilter.accept(Path, BasicFileAttributes) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in FileFileFilter.accept(File) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in FileFileFilter.accept(Path, BasicFileAttributes) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in HiddenFileFilter.accept(File) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in HiddenFileFilter.accept(Path, BasicFileAttributes) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in IOCase.checkIndexOf(String, int, String) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in IOCase.checkRegionMatches(String, int, String) on null input.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">BoundedInputStream.getCount() should not count EOF.</action> |
| <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold, Gary Gregory">Modernize temporary file creation and deletion in DeferredFileOutputStreamTest #535.</action> |
| <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold">Add PathMatcher to IOFileFilter class Javadoc #536.</action> |
| <action dev="ggregory" type="fix" issue="IO-781" due-to="Marcono1234">Fix CharSequenceInputStream coding exception handling #537.</action> |
| <action dev="ggregory" type="fix" issue="IO-781" due-to="Marcono1234">Deprecate int CountingInputStream#getCount() in favor of long CountingInputStream#getByteCount().</action> |
| <action dev="ggregory" type="fix" issue="IO-828" due-to="Elliotte Rusty Harold, Gary Gregory">Deprecate CountingInputStream.resetCount() in favor of resetByteCount().</action> |
| <action dev="ggregory" type="fix" issue="IO-828" due-to="Gary Gregory">Deprecate CountingInputStream.getMaxLength() in favor of getMaxCount()).</action> |
| <action dev="ggregory" type="fix" issue="IO-818" due-to="Gary Gregory">NullInputStream breaks InputStream's read method contract.</action> |
| <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold">Javadoc shouldn't reference 1.x behavior #539.</action> |
| <action dev="ggregory" type="fix" issue="IO-829" due-to="Elliotte Rusty Harold, Gary Gregory">Don't decode and reencode characters in a potentially different charset in AbstractOrigin.CharSequenceOrigin.getReader(Charset).</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Let subclasses of CountingInputStream.afterRead(int) throw IOException.</action> |
| <action dev="ggregory" type="fix" issue="IO-807" due-to="Elliotte Rusty Harold, Gary Gregory">Characterization test for broken symlinks when copying directories #547.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">ClosedInputStream.read(byte[], int, int) does not always return -1.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">ClosedOutputStream.write(byte[], int, int) does not always throw IOException.</action> |
| <action dev="ggregory" type="fix" due-to="Sylwester Lachiewicz, Gary Gregory">XmlStreamReader can't parse an XML document with a multi-line prolog #550.</action> |
| <action dev="ggregory" type="fix" due-to="Andreas Hubold, Gary Gregory">XmlStreamReader can't parse XML an document with an external parsed entity prolog.</action> |
| <action dev="ggregory" type="fix" issue="IO-836" due-to="Elliotte Rusty Harold">Update FileNameUtils Javadoc #554.</action> |
| <action dev="ggregory" type="fix" issue="IO-807" due-to="Jordi Sola, Elliotte Rusty Harold">Copy symlinks, not the files the symlinks point to #558.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Pickup apache-rat-plugin version from parent POM.</action> |
| <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold">Add test for copying a symlink FileUtilsTest#testCopyFile_symLink() #564.</action> |
| <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold">Make copyFile copy symbolic links by value rather than reference #565.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate CopyUtils 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" issue="IO-843" due-to="Gary Gregory, Elliotte Rusty Harold">Deprecate EndianUtils 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate FileSystemUtils 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate FilenameUtils 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate RandomAccessFiles 0-argument constructor.</action> |
| <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold, Gary Gregory">Clarify and correct EndianUtils and SwappedDataInputStream API doc #566.</action> |
| <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold">Add characterization test for copying a symlinked directory #570.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">RandomAccessFileInputStream.builder().get() now throws ISE instead of NPE.</action> |
| <action dev="ggregory" type="fix" issue="IO-845" due-to="Elliotte Rusty Harold">Test links to targets outside the source directory #571.</action> |
| <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold">Focus Javadoc on current version rather than past versions #573, #574.</action> |
| <action dev="ggregory" type="fix" issue="IO-469" due-to="Grigory Fadeev, Kristian Rosenvold, Elliotte Rusty Harold">"Self-suppression not permitted" while using BrokenOutput and BrokenInput streams with try-with-resources.</action> |
| <action dev="ggregory" type="fix" issue="IO-405" due-to="Elliotte Rusty Harold">Handle zero and negative thresholds #587.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Deprecate CountingInputStream in favor of BoundedInputStream.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">PathUtils.setPosixPermissions(...) only sets permissions if needed.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">PathUtils.setReadOnly(...) only sets permissions if needed.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">PathUtils.deleteFile(..., DeleteOption...) only sets permissions if needed.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">CleaningPathVisitor only sets permissions if needed.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">DeletingPathVisitor only sets permissions if needed.</action> |
| <!-- Add --> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add and use PathUtils.getFileName(Path, Function<Path, R>).</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add and use PathUtils.getFileNameString().</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Make public Erase.rethrow(Throwable).</action> |
| <action dev="ggregory" type="add" issue="IO-826" due-to="markslater, Gary Gregory">Add BrokenInputStream.BrokenInputStream(Throwable).</action> |
| <action dev="ggregory" type="add" issue="IO-826" due-to="markslater, Gary Gregory">Add BrokenReader.BrokenReader(Throwable).</action> |
| <action dev="ggregory" type="add" issue="IO-826" due-to="markslater, Gary Gregory">Add BrokenOutputStream.BrokenOutputStream(Throwable).</action> |
| <action dev="ggregory" type="add" issue="IO-826" due-to="markslater, Gary Gregory">Add BrokenWriter.BrokenWriter(Throwable).</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add BoundedInputStream.getRemaining().</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add FileTimes.toNtfsTime(long).</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add FileTimes.fromUnixTime(long).</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add FileTimes.isUnixTime(FileTime).</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add FileTimes.isUnixTime(long).</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add FileTimes.toUnixTime(FileTime).</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add BrokenInputStream.Builder.</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add PathUtils.getExtension(Path).</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add PathUtils.getBaseName(Path).</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add ThrottledInputStream.</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add IORunnable.noop().</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add ChecksumInputStream and test #548.</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add AbstractStreamBuilder.getReader().</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add Maven property project.build.outputTimestamp for build reproducibility.</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add ProxyInputStream.unwrap().</action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory">Add a running count and builder to BoundedInputStream.</action> |
| <!-- UPDATE --> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump commons.bytebuddy.version from 1.14.10 to 1.14.12 #534, #592.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 65 to 67.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot">Bump commons-codec:commons-codec from 1.16.0 to 1.16.1 #583.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot">Bump org.codehaus.mojo:exec-maven-plugin from 3.1.1 to 3.2.0 #593.</action> |
| </release> |
| <release version="2.15.1" date="2023-11-24" description="Java 8 is required."> |
| <!-- FIX --> |
| <action dev="sebb" type="fix" due-to="Gregor Dschung">Fix wrong issue id in change log #503.</action> |
| <action dev="ggregory" type="fix" due-to="Stephan Markwalder, Gary Gregory">Add test for FileChannels.contentEquals() #509.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix FileChannels.contentEquals().</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix some Javadoc issues in LineIterator and IOUtils.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Simplify FileAlterationObserver internal processing.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in RegexFileFilter.RegexFileFilter(Pattern).</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in RegexFileFilter.accept(Path, BasicFileAttributes).</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: Class org.apache.commons.io.filefilter.RegexFileFilter defines non-transient non-serializable instance field pathToString [org.apache.commons.io.filefilter.RegexFileFilter] In RegexFileFilter.java SE_BAD_FIELD.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: Class org.apache.commons.io.filefilter.DelegateFileFilter defines non-transient non-serializable instance field fileFilter [org.apache.commons.io.filefilter.DelegateFileFilter] In DelegateFileFilter.java SE_BAD_FIELD.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: Class org.apache.commons.io.filefilter.DelegateFileFilter defines non-transient non-serializable instance field fileNameFilter [org.apache.commons.io.filefilter.DelegateFileFilter] In DelegateFileFilter.java SE_BAD_FIELD.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: org.apache.commons.io.function.IOStream$1.next() cannot throw NoSuchElementException [org.apache.commons.io.function.IOStream$1] At IOStream.java:[line 98] IT_NO_SUCH_ELEMENT.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: org.apache.commons.io.monitor.FileAlterationMonitor.getObservers() may expose internal representation by returning FileAlterationMonitor.observers [org.apache.commons.io.monitor.FileAlterationMonitor] At FileAlterationMonitor.java:[line 124] EI_EXPOSE_REP.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: Class org.apache.commons.io.monitor.FileAlterationObserver defines non-transient non-serializable instance field fileFilter [org.apache.commons.io.monitor.FileAlterationObserver] In FileAlterationObserver.java SE_BAD_FIELD.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: Class org.apache.commons.io.monitor.FileAlterationObserver defines non-transient non-serializable instance field listeners [org.apache.commons.io.monitor.FileAlterationObserver] In FileAlterationObserver.java SE_BAD_FIELD.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: org.apache.commons.io.FileCleaningTracker.getDeleteFailures() may expose internal representation by returning FileCleaningTracker.deleteFailures [org.apache.commons.io.FileCleaningTracker] At FileCleaningTracker.java:[line 218] EI_EXPOSE_REP.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: org.apache.commons.io.IOExceptionList.getCauseList() may expose internal representation by returning IOExceptionList.causeList [org.apache.commons.io.IOExceptionList] At IOExceptionList.java:[line 118] EI_EXPOSE_REP.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: org.apache.commons.io.IOExceptionList.getCauseList(Class) may expose internal representation by returning IOExceptionList.causeList [org.apache.commons.io.IOExceptionList] At IOExceptionList.java:[line 129] EI_EXPOSE_REP.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: org.apache.commons.io.file.AccumulatorPathVisitor.getDirList() may expose internal representation by returning AccumulatorPathVisitor.dirList [org.apache.commons.io.file.AccumulatorPathVisitor] At AccumulatorPathVisitor.java:[line 179] EI_EXPOSE_REP.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: org.apache.commons.io.file.AccumulatorPathVisitor.getFileList() may expose internal representation by returning AccumulatorPathVisitor.fileList [org.apache.commons.io.file.AccumulatorPathVisitor] At AccumulatorPathVisitor.java:[line 188] EI_EXPOSE_REP.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: org.apache.commons.io.input.ObservableInputStream.getObservers() may expose internal representation by returning ObservableInputStream.observers [org.apache.commons.io.input.ObservableInputStream] At ObservableInputStream.java:[line 187] EI_EXPOSE_REP.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: Exception thrown in class org.apache.commons.io.input.UnsynchronizedByteArrayInputStream at new org.apache.commons.io.input.UnsynchronizedByteArrayInputStream(byte[], int) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [org.apache.commons.io.input.UnsynchronizedByteArrayInputStream, org.apache.commons.io.input.UnsynchronizedByteArrayInputStream] At UnsynchronizedByteArrayInputStream.java:[line 202]At UnsynchronizedByteArrayInputStream.java:[line 202] CT_CONSTRUCTOR_THROW.</action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory">Fix SpotBugs error: Exception thrown in class org.apache.commons.io.input.UnsynchronizedByteArrayInputStream at new org.apache.commons.io.input.UnsynchronizedByteArrayInputStream(byte[], int, int) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [org.apache.commons.io.input.UnsynchronizedByteArrayInputStream, org.apache.commons.io.input.UnsynchronizedByteArrayInputStream] At UnsynchronizedByteArrayInputStream.java:[line 223]At UnsynchronizedByteArrayInputStream.java:[line 223] CT_CONSTRUCTOR_THROW.</action> |
| <!-- UPDATE --> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump org.codehaus.mojo:exec-maven-plugin from 3.1.0 to 3.1.1 #512.</action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory">Bump commons-lang3 from 3.13.0 to 3.14.0.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot">Bump commons.bytebuddy.version from 1.14.9 to 1.14.10 #516.</action> |
| <action dev="ggregory" type="update" due-to="Dependabot">Bump commons-parent from 64 to 65.</action> |
| </release> |
| <release version="2.15.0" date="2023-10-21" description="Java 8 is required."> |
| <!-- FIX --> |
| <action dev="sebb" type="fix" issue="IO-815" due-to="Laurence Gonsalves"> |
| XmlStreamReader encoding match RE is too strict. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-810" due-to="Gregor Dschung, Gary Gregory"> |
| Javadoc in FileUtils does not reflect code for thrown exceptions. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-812" due-to="Adam Rauch, Gary Gregory"> |
| Javadoc should mention closing Streams based on file resources. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-811" due-to="Adam Rauch, Gary Gregory"> |
| In tests, Files.walk() direct and indirect callers fail to close the returned Stream. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-811" due-to="Adam Rauch, Gary Gregory"> |
| FileUtils.listFiles(File, String[], boolean) fails to close its internal Stream. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-811" due-to="Adam Rauch, Gary Gregory"> |
| FileUtils.iterateFiles(File, String[], boolean) fails to close its internal Stream. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-811" due-to="Adam Rauch, Gary Gregory"> |
| StreamIterator fails to close its internal Stream. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-814" due-to="Elliotte Rusty Harold, Gary Gregory"> |
| Don't throw UncheckedIOException #491. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-414" due-to="Elliotte Rusty Harold, Gary Gregory"> |
| Don't write a BOM on every (or any) line #492. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-814" due-to="Gary Gregory"> |
| RandomAccessFileMode.create(Path) provides a better NullPointerException message. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Improve performance of PathUtils.fileContentEquals(Path, Path, LinkOption[], OpenOption[]) by about 60%, see PathUtilsContentEqualsBenchmark. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Improve performance of PathUtils.fileContentEquals(Path, Path) by about 60%, see PathUtilsContentEqualsBenchmark. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Improve performance of FileUtils.contentEquals(File, File) by about 60%, see PathUtilsContentEqualsBenchmark. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold"> |
| Remove unused test code #494. |
| </action> |
| <action dev="ggregory" type="fix" due-to="sebbASF"> |
| [Javadoc] IOUtils#contentEquals does not throw NullPointerException #496. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Fix CodeQL warnings in UnsynchronizedBufferedInputStream: Implicit narrowing conversion in compound assignment. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| MessageDigestCalculatingInputStream.MessageDigestMaintainingObserver.MessageDigestMaintainingObserver(MessageDigest) now throws a NullPointerException |
| if the MessageDigest is null. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| MessageDigestCalculatingInputStream.MessageDigestCalculatingInputStream(InputStream, MessageDigest) now throws a NullPointerException |
| if the MessageDigest is null. |
| </action> |
| <action issue="IO-816" dev="ggregory" type="fix" due-to="Andreas Loth, Gary Gregory"> |
| UnsynchronizedBufferedInputStream.read(byte[], int, int) does not use buffer. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Pick up Maven Moditect plugin version from parent POM. |
| </action> |
| <action issue="IO-821" dev="ggregory" type="fix" due-to="Frédéric Hannes, Gary Gregory"> |
| 2.15.0 breaks backwards compatibility in PathUtils.fileContentEquals for the Zip file system. |
| </action> |
| <!-- ADD --> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add org.apache.commons.io.channels.FileChannels. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add RandomAccessFiles#contentEquals(RandomAccessFile, RandomAccessFile). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add RandomAccessFiles#reset(RandomAccessFile). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtilsContentEqualsBenchmark. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add org.apache.commons.io.StreamIterator. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add MessageDigestInputStream and deprecate MessageDigestCalculatingInputStream. |
| </action> |
| <!-- UPDATE --> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump org.apache.commons:commons-parent from 62 to 64. |
| </action> |
| </release> |
| <release version="2.14.0" date="2023-09-24" description="Java 8 is required."> |
| <!-- FIX --> |
| <action dev="ggregory" type="fix" issue="IO-799" due-to="Jeroen van der Vegt, Gary Gregory"> |
| ReaderInputStream.read() throws an exception instead of returning -1 when called again after returning -1. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-804" due-to="Elliotte Rusty Harold, Gary Gregory"> |
| FileUtils.forceMkdirParent() Javadoc is incorrect. |
| </action> |
| <action dev="ggregory" type="fix" due-to="step-security-bot, Gary Gregory"> |
| [StepSecurity] ci: Harden GitHub Actions #461. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| MagicNumberFileFilter.accept(Path, BasicFileAttributes) doesn't set its byteOffset before reading. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Javadoc improvements. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Josh Soref, Gary Gregory"> |
| Spelling #468. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Jakub Kupczyk"> |
| Use assertThrows #475. |
| </action> |
| <!-- ADD --> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add DeferredFileOutputStream.getPath(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileCleaningTracker.track(Path, Object[, FileDeleteStrategy]). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOUtils.skip[Fully](InputStream, long, Supplier<byte[]>). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FilesUncheck.find(Path, int, BiPredicate%lt;Path, BasicFileAttributes>, FileVisitOption...) |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOIntSupplier. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOLongSupplier. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add Uncheck.getAsInt(IOIntSupplier [, Supplier<String>]). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add Uncheck.getAsLong(IOLongSupplier [, Supplier<String>]). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add Uncheck.run(IORunnable, Supplier<String>) |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add Uncheck.get(IOSupplier, Supplier<String>) |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| IOFileFilter now also extends java.nio.file.PathMatcher. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathMatcherFileFilter to adapt java.nio.file.PathMatcher. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add ThresholdingOutputStream.getOutputStream() and deprecate getStream(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add DeferredFileOutputStream.Builder.setOutputFile(Path). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add DeferredFileOutputStream.Builder.setDirectory(Path). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add AbstractStreamBuilder.setBufferSizeChecker(IntToIntFunction). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add AbstractStreamBuilder.setBufferSizeMax(int). |
| </action> |
| <!-- UPDATE --> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump jimfs from 1.2 to 1.3.0 #465 (tests). |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump commons-parent from 58 to 62. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| Bump commons-lang3 from 3.12 to 3.13.0. |
| </action> |
| </release> |
| <release version="2.13.0" date="2023-06-03" description="Java 8 is required."> |
| <!-- FIX --> |
| <action issue="IO-791" dev="ggregory" type="fix" due-to="Chad Wilson, Gary Gregory"> |
| Regression in FileUtils.touch() - no longer creates parent directories. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| ByteArrayOrigin should be able convert a byte[] to a ByteArrayInputStream. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| AbstractOriginSupplier.checkOrigin() now throws IllegalStateException instead of NullPointerException. |
| </action> |
| <action issue="IO-796" dev="ggregory" type="fix" due-to="Giacomo Boccardo, Gary Gregory"> |
| FileAlreadyExistsException in PathUtils.createParentDirectories(Path, LinkOption, FileAttribute...). |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Only read the relevant portion of a file in AbstractOrigin.FileOrigin.getByteArray(long, int). |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Only read the relevant portion of a file in AbstractOrigin.PathOrigin.getByteArray(long, int). |
| </action> |
| <action dev="ggregory" type="fix" due-to="Shai Shapira, Gary Gregory" issue="IO-798"> |
| DeferredFileOutputStream throws exception when system temp dir is a symlink. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| ReaderInputStream.Builder.setCharsetEncoder(null) should reset to a default object, not throw an NPE. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| ReaderInputStream.Builder.setCharset(null) should reset to a default object, not throw an NPE. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-800" due-to="Jan Høydahl, Gary Gregory"> |
| Fix back-incompatible change for PathUtils.deleteDirectory(): throw NoSuchFileException instead of IllegalArgumentException #459. |
| </action> |
| <action dev="ggregory" type="fix" issue="IO-801" due-to="James Howe, Gary Gregory"> |
| Deprecation documentation gives incorrect alternative. |
| </action> |
| <!-- ADD --> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add CharSequenceInputStream.Builder. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add ChunkedOutputStream.Builder. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add AbstractStreamBuilder.setOpenOptions(OpenOption...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add some missing conversions to AbstractOrigin subclasses. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add AbstractOrigin.getByteArray(long, int). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use RandomAccessFiles. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add AbstractOrigin.size(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.EMPTY_FILE_ATTRIBUTE_ARRAY. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add CharSequenceInputStream.Builder.setCharsetEncoder(CharsetEncoder). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add CharsetEncoders.toCharsetEncoder(CharsetEncoder, Supplier<CharsetEncoder>). |
| </action> |
| <!-- UPDATE --> |
| <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> |
| Bump commons-parent from 57 to 58. |
| </action> |
| </release> |
| <release version="2.12.0" date="2023-05-13" description="Java 8 is required."> |
| <!-- FIX --> |
| <action issue="IO-697" dev="kinow" type="fix" due-to="otter606"> |
| IOUtils.toByteArray size validation does not match documentation. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Fix Javadoc links to the JRE Javadoc 8. |
| </action> |
| <action issue="IO-744" dev="ggregory" type="fix" due-to="RBRi, Gary Gregory"> |
| FileWriterWithEncoding for an existing file no longer truncates the file. #251. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| A null Charset or Charset name in FileWriterWithEncoding constructors uses the default Charset. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Davide Angelocola"> |
| Fix usage of assertNotNull #269. |
| </action> |
| <action issue="IO-727" dev="ggregory" type="fix" due-to="trungPa, Gary Gregory"> |
| FilenameUtils directoryContains() should handle files with the same prefix #217. |
| </action> |
| <action issue="IO-746" dev="ggregory" type="add" due-to="Davide Angelocola"> |
| Drop unnecessary casts and conversions #267. |
| </action> |
| <action issue="IO-748" dev="ggregory" type="fix" due-to="Dirk Heinrichs, Gary Gregory, Elango Ravi"> |
| FileUtils.moveToDirectory() exception documentation and exception message error. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| ThreadMonitor.sleep(Duration) ignores nanoseconds. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Arturo Bernal"> |
| Fix Javadoc in ThreadMonitor#run() method. #273. |
| </action> |
| <action issue="IO-749" dev="ggregory" type="fix" due-to="haihuiyang, Gary Gregory"> |
| FileUtils.listFiles() does not list matching files if File parameter is a symbolic link. |
| </action> |
| <action dev="ggregory" type="fix" due-to="niranjanghule, Gary Gregory"> |
| Fix typo in Javadocs for FileUtils#convertFileCollectionToFileArray() #276. |
| </action> |
| <action dev="ggregory" type="fix" due-to="DaGeRe, Gary Gregory"> |
| Avoid Code Duplication: Reuse Sleep from ThreadMonitor #66. |
| </action> |
| <action issue="IO-750" dev="ggregory" type="fix" due-to="Sita Geßner, Sebastian Peters, Gary Gregory"> |
| FileUtils.iterateFiles also lists directories. |
| </action> |
| <action issue="IO-721" dev="ggregory" type="fix" due-to="Dirk Heinrichs, Gary Gregory"> |
| Wrong exception message in FileUtils.setLastModified(File, File). |
| </action> |
| <action issue="IO-717" dev="ggregory" type="fix" due-to="Marcono1234, Gary Gregory"> |
| Infinite loop in ReaderInputStream instead of throwing exception for CodingErrorAction.REPORT. |
| </action> |
| <action issue="IO-716" dev="ggregory" type="fix" due-to="Marcono1234, Gary Gregory"> |
| ReaderInputStream enter infinite loop for too small buffer sizes. |
| </action> |
| <action issue="IO-638" dev="ggregory" type="fix" due-to="Thayne McCombs, Gary Gregory"> |
| Infinite loop in CharSequenceInputStream.read for 4-byte characters with UTF-8 and 3-byte buffer. |
| </action> |
| <action issue="IO-638" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| PathUtils.setReadOnly(Path, boolean, LinkOption...) should add READ_* file attributes when using POSIX. |
| </action> |
| <action issue="IO-638" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| PathUtils.setReadOnly(Path, boolean, LinkOption...) readOnly argument is always assumed true on POSIX. |
| </action> |
| <action issue="IO-729" dev="ggregory" type="fix" due-to="Rob Spoor, Gary Gregory"> |
| Prevent IllegalArgumentExceptions in BrokenInputStream/Reader/OutputStream/Writer #278. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| FileUtils.copyURLToFile(URL, File, int, int) leaks its URLConnection. |
| Called by FileUtils.copyURLToFile(URL, File). |
| </action> |
| <action issue="IO-714" dev="ggregory" type="fix" due-to="kevinwang1975, Gary Gregory"> |
| Fixed ReaderInputStream not calling CharsetEncoder.flush issue #283. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Arturo Bernal"> |
| Minor changes #287. |
| </action> |
| <action issue="IO-756" dev="ggregory" type="fix" due-to="wodencafe, Gary Gregory, Bruno P. Kinoshita"> |
| Update FileWriterWithEncoding to extend ProxyWriter #296. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Initialize the message of an IOExceptionList to a default if null. |
| </action> |
| <action issue="IO-751" dev="ggregory" type="fix" due-to="Gary Gregory, Richard Cyganiak"> |
| When deleting symlinks, File/PathUtils.deleteDirectory() changes file permissions of the target. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| ReaderInputStream maps null Charset, Charset name, and CharsetEncoder to the platform default instead of throwing a NullPointerException. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| CharSequenceInputStream maps null Charset and Charset name to the platform default instead of throwing a NullPointerException. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| WriterOutputStream maps null Charset, Charset name, and CharsetEncoder name to the platform default instead of throwing a NullPointerException. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Chad Wilson, Gary Gregory"> |
| FileUtils.copyURLToFile should create target parent directories and overwrite target file #319. |
| </action> |
| <action issue="IO-484" dev="ggregory" type="fix" due-to="Marcono1234, Gary Gregory"> |
| Fix incorrect FilenameUtils Javadoc for null bytes #310. |
| </action> |
| <action issue="IO-484" dev="ggregory" type="fix" due-to="Arturo Bernal"> |
| Change to uppercase variable constant. #323. |
| </action> |
| <action issue="IO-484" dev="ggregory" type="fix" due-to="David Huang, Gary Gregory"> |
| IOCase.isCaseSensitive(IOCase) result is backward #325. |
| </action> |
| <action issue="IO-758" dev="ggregory" type="fix" due-to="Marcono1234, Gary Gregory"> |
| Deprecate PathUtils.NOFOLLOW_LINK_OPTION_ARRAY in favor of noFollowLinkOptionArray(). |
| </action> |
| <action dev="ggregory" type="fix" due-to="Marcono1234, Gary Gregory"> |
| Improve ReaderInputStream documentation #291. |
| </action> |
| <action dev="ggregory" type="fix" due-to="richarda23"> |
| Fix misleading comments in FileFilterTest #334. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Diego Marcilio"> |
| Add missing Javadoc for exceptions thrown for invalid arguments #339. |
| </action> |
| <action dev="ggregory" type="fix" due-to="richarda23"> |
| FileFilterTest minor fixes #340. |
| </action> |
| <action issue="IO-764" dev="ggregory" type="fix" due-to="DaGeRe, Gary Gregory"> |
| IOUtils.write() throws OutOfMemoryError/NegativeArraySizeException while writing big strings #343. |
| </action> |
| <action issue="IO-768" dev="ggregory" type="fix" due-to="Marcono1234, Michael Osipov"> |
| Add reserved Windows file names CONIN$ and CONOUT$ to FileSystem #355. |
| </action> |
| <action issue="IO-773" dev="ggregory" type="fix" due-to="Dominik Reinarz, Gary Gregory"> |
| RegexFileFilter is no longer Serializable. |
| </action> |
| <action issue="IO-763" dev="ggregory" type="fix" due-to="Richard Adams, Gary Gregory"> |
| [Javadoc] FileFilterUtils doc does not match impl: missing some file filters. |
| </action> |
| <action issue="IO-762" dev="ggregory" type="fix" due-to="Leonidas Chiron, Gary Gregory"> |
| FileSystem.WINDOWS.isReservedFileName doesn't check for file extension. |
| </action> |
| <action issue="IO-772" dev="ggregory" type="fix" due-to="Dan Ziemba, Gary Gregory"> |
| Confusing Javadoc on IOUtils#resourceToURL() and other resource* methods. |
| </action> |
| <action issue="IO-443" dev="ggregory" type="fix" due-to="Dan Ziemba, Gary Gregory"> |
| FileUtils.copyFile methods throw an unnecessary "Failed to copy full contents from" exception. |
| </action> |
| <action issue="IO-564" dev="ggregory" type="fix" due-to="Hao Zhong, Bernd Eckenfels, Pascal Schumacher, Gary Gregory"> |
| Pick up Javadoc from super for override write() methods in AbstractByteArrayOutputStream and ByteArrayOutputStream. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Marc Wrobel"> |
| Fix minor typos #367. |
| </action> |
| <action issue="IO-776" dev="kinow" type="fix" due-to="Chris Povirk"> |
| Fix parameters to requireNonNull call in DeferredOutputSteam #368. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Fix PathUtils.copyFileToDirectory(URL,Path,CopyOption[]). |
| </action> |
| <action issue="IO-386" dev="ggregory" type="fix" due-to="Sebb, Bernd Eckenfels, zhipengxu, Gary Gregory"> |
| FileUtils.doCopyFile uses different methods to check the file sizes. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Michael Ernst"> |
| Fix typos #375. |
| </action> |
| <action issue="IO-611" dev="ggregory" type="fix" due-to="Fedor Urvanov"> |
| FilenameUtils.normalize javadoc and tests #383. |
| </action> |
| <action issue="IO-611" dev="ggregory" type="fix" due-to="ArdenL-Liu, Bruno P. Kinoshita, Gary Gregory"> |
| Better docs in IOUtils and IOUtils.byteArray(int size) #374. |
| </action> |
| <action issue="IO-782" dev="ggregory" type="fix" due-to="Matteo Di Giovinazzo, Gary Gregory"> |
| SequenceReader should close readers when its close method is called #391. |
| </action> |
| <action issue="IO-790" dev="ggregory" type="fix" due-to="Miguel Muñoz, Gary Gregory"> |
| Fix symbolic link file filter #450. |
| </action> |
| <action issue="IO-790" dev="ggregory" type="fix" due-to="maxxedev, Gary Gregory, Bruno P. Kinoshita"> |
| Apply nanoseconds precision for QueueInputStream timeout duration. #453. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Marcono1234"> |
| Fix overflow for FileUtilsTest constants #456. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Serialization is deprecated and will be removed in 3.0. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| FileSystemUtils.performCommand(String[], int, Duration): Use Locale.getDefault() instead of ENGLISH. |
| </action> |
| <!-- ADD --> |
| <action type="add" dev="ggregory" due-to="Gary Gregory"> |
| Add GitHub coverage.yml. |
| </action> |
| <action issue="IO-726" dev="ggregory" type="fix" due-to="shollander, Gary Gregory"> |
| Add MemoryMappedFileInputStream #215. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add BrokenReader.INSTANCE. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add UncheckedBufferedReader. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add UncheckedFilterReader. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add UncheckedFilterWriter. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add UncheckedFilterInputStream. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add UncheckedFilterOutputStream. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add BrokenInputStream.INSTANCE. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add ClosedInputStream.INSTANCE and deprecate CLOSED_INPUT_STREAM. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add ClosedReader.INSTANCE and deprecate CLOSED_READER. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add BrokenWriter.INSTANCE. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add ClosedOutputStream.INSTANCE and deprecate CLOSED_OUTPUT_STREAM. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add ClosedWriter.INSTANCE and deprecate CLOSED_WRITER. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add NullOutputStream.INSTANCE and deprecate NULL_OUTPUT_STREAM. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add NullPrintStream.INSTANCE and deprecate NULL_PRINT_STREAM. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add NullWriter.INSTANCE and deprecate NULL_WRITER. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add NullInputStream.INSTANCE. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add NullReader.INSTANCE. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.readString(Path, Charset). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileUtils.newOutputStream(File, boolean). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.newOutputStream(Path, boolean). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add UncheckedAppendable. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and reuse UncheckedIOExceptions. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.getTempDirectory(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileSystem.getNameSeparator(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileSystem.normalizeSeparators(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.isNewer(Path, FileTime, LinkOption...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.isNewer(Path, Instant, LinkOption...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add AgeFileFilter.AgeFileFilter(Instant). |
| Add AgeFileFilter.AgeFileFilter(Instant, boolean). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileUtils.lastModifiedFileTime(File). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileTimes. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.waitFor(Path, Duration, LinkOption...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add org.apache.commons.io.input.Tailer.getDelayDuration(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileUtils.current(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use PathUtils.setLastModifiedTime(Path) for more precision. |
| Add and use PathUtils.setLastModifiedTime(Path, Path) for more precision. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use PathUtils.isNewer(Path, ChronoZonedDateTime, LinkOption...) for more precision. |
| Add and use PathUtils.isNewer(Path, Path) for more precision. |
| Add and use FileUtils.isNewer(File, FileTime) for more precision. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use PathUtils.isOlder(Path, FileTime, LinkOption...). |
| Add and use PathUtils.isOlder(Path, Instant, LinkOption...). |
| Add and use PathUtils.isOlder(Path, long, LinkOption...). |
| Add and use PathUtils.isOlder(Path, Path). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use PathUtils.sizeOf(Path). |
| Add and use PathUtils.sizeOfAsBigInteger(Path). |
| Add and use PathUtils.sizeOfDirectory(Path). |
| Add and use PathUtils.sizeOfDirectoryAsBigInteger(Path). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use IOCase.value(IOCase, IOCase). |
| </action> |
| <action dev="jonfreedman" type="add" due-to="Jon Freedman, Gary Gregory"> |
| Add Tailer.Tailable interface to allow tailing of remote files for example using jCIFS. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use RandomAccessFileMode. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.writeString(Path, CharSequence, Charset, OpenOption...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtiFiles.getFileAttributeView() shorthands: |
| - PathUtils.getAclFileAttributeView(Path, LinkOption...) |
| - PathUtils.getDosFileAttributeView(Path, LinkOption...) |
| - PathUtils.getPosixFileAttributeView(Path, LinkOption...) |
| </action> |
| <action issue="IO-747" dev="mgrigorov" type="add"> |
| Make commons-io a JPMS module by adding module-info.class. |
| </action> |
| <action issue="IO-753" dev="ggregory" type="add" due-to="SebastianDietrich, Gary Gregory"> |
| Add IOUtils method to copy output stream to input stream #281. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.isPosix(Path, LinkOption...). #290 |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.readAttributes(Path, Class, LinkOption...). #290 |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOExceptionList.checkEmpty(List, Object). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOBiConsumer, IOTriConsumer, IOComparator, IOUnaryOperator, IOBinaryOperator. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and reuse IOConsumer forAll(*), forEach(*), and forEachIndexed(*). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add CharsetEncoders. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add CharsetDecoders. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.createParentDirectories(Path, LinkOption, FileAttribute...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Update FileEntry to use FileTime instead of long for file time stamps. |
| </action> |
| <action issue="IO-680" dev="ggregory" type="add" due-to="XenoAmess, sebbASF, Gary Gregory"> |
| Add more tests for IOUtils.contentEqualsIgnoreEOL #137. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Reduce boilerplate through new UncheckedIO class and friends in org.apache.commons.io.function. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.touch(Path). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileSystem.getIllegalFileNameCodePoints(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Isira Seneviratne, Gary Gregory"> |
| Add FileUtils.isFileNewer(File, ChronoLocalDate, OffsetTime). |
| Add FileUtils.isFileNewer(File, OffsetDateTime). |
| Add FileUtils.isFileOlder(File, ChronoLocalDate, OffsetTime). |
| Add FileUtils.isFileOlder(File, OffsetDateTime). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOBiConsumer.noop(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOUtils.closeQuietly(Iterable<Closeable>). |
| Add IOUtils.closeQuietly(Stream<Closeable>). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add Charsets.toCharset(Charset, Charset). |
| Add Charsets.toCharset(String, Charset). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add XmlStreamWriter(OutputStream, Charset). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.getLastModifiedFileTime(*). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOBiFunction, IOTriFunction, IOQuadFunction, IOPredicate, IOIterator, IOSpliterator, IOBaseStream, IOStream, FilesUncheck. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOUtils.consume(Reader). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOSupplier.asSupplier(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOFunction.asFunction(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOConsumer.asConsumer(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add TimestampedObserver.isClosed(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| IOExceptionList implements Iterable. |
| </action> |
| <action issue="IO-784" dev="ggregory" type="add" due-to="Fredrik Kjellberg, Gary Gregory"> |
| Add support for Appendable to HexDump #418. |
| </action> |
| <action dev="ggregory" type="add" due-to="DaGeRe, Gary Gregory"> |
| Add and use ThreadUtils. |
| </action> |
| <action issue="IO-786" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add UnsynchronizedFilterInputStream. |
| </action> |
| <action issue="IO-786" dev="ggregory" type="add" due-to="Gary Gregory, Benoit Tellier"> |
| Add UnsynchronizedBufferedInputStream. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileSystem.getBlockSize(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add builders and avoid creating more constructors for all permutations of current options. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory, maxxedev"> |
| Refactor using new Supplier API IOUtils.toString(IOSupplier<InputStream>, Charset[, IOSupplier<String>]). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory, maxxedev"> |
| Refactor using new Supplier API org.apache.commons.io.file.PathUtils.copy(IOSupplier<InputStream>, Path, CopyOption...). |
| </action> |
| <!-- UPDATE --> |
| <action dev="kinow" type="update" due-to="Dependabot, Gary Gregory"> |
| Bump actions/cache from 2.1.6 to 3.0.10 #307, #337, #393. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> |
| Bump actions/checkout from 2.3.4 to 3.1.0 #286, #298, #330, #392. |
| </action> |
| <action dev="kinow" type="update" due-to="Dependabot"> |
| Bump actions/setup-java from 2 to 3.6.0 #346, #397. |
| </action> |
| <action dev="kinow" type="update" due-to="Dependabot"> |
| Bump github/codeql-action from 1 to 2 #353. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> |
| Bump Maven Javadoc plugin from 3.2.0 to 3.4.1. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| 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. |
| </action> |
| <action dev="kinow" type="update" due-to="Gary Gregory, Dependabot"> |
| Bump spotbugs from 4.5.2 to 4.7.3 #313, #317, #357, #382, #398. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump JUnit from 5.7.2 to 5.8.2. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump maven-enforcer-plugin from 3.0.0-M3 to 3.3.0 #255, #363, #431, #446. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> |
| Bump checkstyle from 8.44 to 9.3 #256, #257, #266, #279, #292. #308. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump junit-bom from 5.8.0-M1 to 5.9.1 #260, #271, #275, #309, #386. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> |
| Bump mockito-inline from 3.11.2 to 4.11.0 #262, #264, #282, #306, #314, #331, #348, #359, #381, #399, #405, #414, #420. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump jmh.version from 1.32 to 1.36 #258, #316, #342, #404. |
| </action> |
| <action dev="kinow" type="update" due-to="Dependabot"> |
| Bump moditect-maven-plugin from 1.0.0.RC1 to 1.0.0.Final #280, #439, #445. |
| </action> |
| <action dev="kinow" type="update" due-to="Dependabot, Gary Gregory"> |
| Bump junit-pioneer from 1.4.2 to 1.9.1 #304. #335, #362, #402, #406, #409. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump japicmp-maven-plugin from 0.15.3 to 0.16.0. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> |
| Bump commons-parent from 52 to 57 #388, #415, #421, #184. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump jacoco-maven-plugin from 0.8.7 to 0.8.8. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump maven-antrun-plugin from 3.0.0 to 3.1.0 #354. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump commons.surefire.version 3.0.0-M5 to 3.0.0-M7. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump PMD from 6.44.0 to 6.52.0. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump maven-pmd-plugin from 3.16.0 to 3.19.0. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump apache-rat from 0.13 to 0.14. |
| </action> |
| <action dev="kinow" type="update" due-to="Dependabot"> |
| Bump exec-maven-plugin from 3.0.0 to 3.1.0 #369. |
| </action> |
| <action dev="kinow" type="update" due-to="Dependabot"> |
| Bump maven-checkstyle-plugin from 3.1.2 to 3.2.0 #376. |
| </action> |
| <action dev="kinow" type="update" due-to="Dependabot"> |
| Bump apache-rat-plugin from 0.14 to 0.15 #387. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump default buffer size for CharSequenceInputStream to IOUtils#DEFAULT_BUFFER_SIZE. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump default buffer size for ChunkedOutputStream to IOUtils#DEFAULT_BUFFER_SIZE. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump default buffer size for ChunkedWriter to IOUtils#DEFAULT_BUFFER_SIZE. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump default buffer size for ReaderInputStream to IOUtils#DEFAULT_BUFFER_SIZE. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Bump default buffer size for WriterOutputStream to IOUtils#DEFAULT_BUFFER_SIZE. |
| </action> |
| </release> |
| <release version="2.11.0" date="2021-07-09" description="Java 8 is required."> |
| <!-- FIX --> |
| <action issue="IO-741" dev="ggregory" type="fix" due-to="Zach Sherman"> |
| FileUtils.listFiles does not list matching files if File parameter is a symbolic link. |
| </action> |
| <action issue="IO-724" dev="ggregory" type="fix" due-to="liran2000"> |
| FileUtils#deleteDirectory(File) exception Javadoc inaccurate update #245. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Arturo Bernal"> |
| Minor changes #243. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Arturo Bernal"> |
| Replace construction of FileInputStream and FileOutputStream objects with Files NIO APIs. #221. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Fix IndexOutOfBoundsException in IOExceptionList constructors. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Remove IOException from the method signatures that no longer throw IOException. |
| This maintains binary compatibility but not source compatibility. |
| - FilenameUtils |
| directoryContains(String, String) |
| - BoundedReader |
| BoundedReader(java.io.Reader, int) |
| - IOUtils |
| lineIterator(java.io.InputStream, Charset) |
| lineIterator(java.io.InputStream, String) |
| toByteArray(String) |
| toInputStream(CharSequence, String) |
| toInputStream(String, String) |
| toString(byte[]) |
| toString(byte[], String) |
| </action> |
| <!-- ADD --> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Add SymbolicLinkFileFilter. |
| </action> |
| <action dev="ggregory" type="update" due-to="trncate"> |
| Add test to make sure the setter of AndFileFilter works correctly #244. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Add XmlStreamReader(Path). |
| </action> |
| <!-- UPDATE --> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump mockito-inline from 3.11.0 to 3.11.2 #247. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump jmh.version from 1.27 to 1.32 #237. |
| </action> |
| </release> |
| <!-- The release date is the date RC is cut --> |
| <release version="2.10.0" date="2021-06-10" description="Java 8 is required."> |
| <!-- FIX --> |
| <action issue="IO-733" dev="ggregory" type="fix" due-to="Jim Sellers, Gary Gregory"> |
| RegexFileFilter uses the path and file name instead of just the file name. |
| </action> |
| <action issue="IO-734" dev="ggregory" type="fix" due-to="Eric Norman"> |
| The OSGi manifest now contains sun.* import packages #239. |
| </action> |
| <action issue="IO-585" dev="ggregory" type="fix" due-to="Adam McClenaghan"> |
| Sanitize double slash after prefix #79. |
| </action> |
| <!-- ADD --> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use RegexFileFilter.toString(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use RegexFileFilter.RegexFileFilter(Pattern, Function<Path>, String>) |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use IOCase.isCaseSensitive(IOCase). |
| </action> |
| <!-- UPDATES --> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump actions/cache from 2.1.5 to 2.1.6 #238. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump junit-pioneer from 1.4.1 to 1.4.2 #240. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump checkstyle from 8.42 to 8.44 #241, #248. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump mockito-inline from 3.10.0 to 3.11.0 #242. |
| </action> |
| </release> |
| <release version="2.9.0" date="2021-05-22" description="Java 8 is required."> |
| <!-- FIX --> |
| <action issue="IO-686" dev="ggregory" type="fix" due-to="Alan Moffat, Gary Gregory"> |
| IOUtils.toByteArray(InputStream) Javadoc does not match code. |
| </action> |
| <action issue="IO-689" dev="aherbert" type="fix" due-to="Uwe Schindler"> |
| FileUtils: Remove Instant->ZonedDateTime->Instant round-trip. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Michael Ernst, Gary Gregory"> |
| Make FilenameUtils.equals() not throw an exception #154. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Jan Peter Stotz, Bernd Eckenfels, Gary Gregory"> |
| Un-deprecate IOUtils.closeQuietly() methods. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Michiel Kalkman"> |
| FileUtils#copyDirectory(File, File, FileFilter, preserveFileDate) clean up #163. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| AccumulatorPathVisitor does not track directories properly. |
| </action> |
| <action issue="IO-597" dev="ggregory" type="fix" due-to="Gary Gregory, Arvind, Rob Spoor"> |
| FileUtils.iterateFiles runs out of memory when executed for a directory with large number of files. |
| Re-implement FileUtils' iterateFiles(), iterateFilesAndDirs(), listFiles(), listFilesAndDirs() to use NIO |
| file tree walking instead of IO file listings to avoid memory consumption issues on large file trees. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| FileUtils.forceDelete(File) actually forces deletion of read-only files as it did in version 2.6. |
| </action> |
| <action issue="IO-692" dev="ebourg" type="fix" due-to="Matthew Rooney, Emmanuel Bourg"> |
| PathUtils.deleteFile() no longer throws a NoSuchFileException when applied on a symbolic link pointing |
| to a file that doesn't exist. |
| </action> |
| <action issue="IO-694" dev="ggregory" type="fix" due-to="Tan Yee Fan, Gary Gregory"> |
| Behavior change in FileUtils.copyDirectory() file last modified timestamp preservation. Match Javadoc to code. |
| </action> |
| <action issue="IO-600" dev="ggregory" type="fix" due-to="Abhyankar Chaubey, Gary Gregory"> |
| Fix getPrefixLength method for Linux filename #179. |
| </action> |
| <action issue="IO-699" dev="ggregory" type="fix" due-to="tza, Gary Gregory"> |
| Wrong logging in FileUtils.setLastModified. |
| </action> |
| <action issue="IO-686" dev="ggregory" type="fix" due-to="Alan Moffat, Sebb, Gary Gregory"> |
| IOUtils.toByteArray(InputStream) Javadoc does not match code. |
| </action> |
| <action issue="IO-688" dev="ggregory" type="fix" due-to="Michael Ernst, Gary Gregory"> |
| CopyUtils deprecation message gives wrong version. |
| </action> |
| <action issue="IO-701" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Make PathUtils.setReadOnly deal with LinuxDosFileAttributeView #186. |
| </action> |
| <action issue="IO-702" dev="ggregory" type="fix" due-to="Boris Unckel, Gary Gregory"> |
| FileUtils.forceDelete does not delete invalid links. #187. |
| </action> |
| <action issue="IO-690" dev="ggregory" type="fix" due-to="Chris Heisterkamp, Gary Gregory"> |
| IOUtils.toByteArray(null) no longer throws a NullPointerException. |
| </action> |
| <action issue="IO-705" dev="ggregory" type="fix" due-to="Hao Zhong, Gary Gregory"> |
| MarkShieldInputStream#reset should throw UnsupportedOperationException. |
| </action> |
| <action issue="IO-705" dev="ggregory" type="fix" due-to="Hao Zhong, Gary Gregory"> |
| LockableFileWriter.close() should fail when the lock file cannot be deleted. |
| </action> |
| <action issue="IO-705" dev="ggregory" type="fix" due-to="Hao Zhong, Gary Gregory"> |
| Fix infinite loops in ObservableInputStream read(*) when an exception is caught but not re-thrown. |
| </action> |
| <action issue="IO-719" dev="ggregory" type="fix" due-to="Andrew Shcheglov, Gary Gregory"> |
| Fixed error of copying directories between different file systems #203. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Felix Rilling"> |
| Fix Typos in JavaDoc, Comments and Tests #201. |
| </action> |
| <action issue="IO-718" dev="ggregory" type="fix" due-to="Robert Cooper, Gary Gregory"> |
| FileUtils.checksumCRC32 and FileUtils.checksum are not thread safe. |
| </action> |
| <action issue="IO-720" dev="ggregory" type="fix" due-to="XenoAmess"> |
| Fix error about usage of DirectBuffer in JRE 16/17 #205. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Rob Spoor, Gary Gregory"> |
| Prevent infinite loop with AbstractCharacterFilterReader if EOF is filtered out #226. |
| </action> |
| <action issue="IO-429" dev="ggregory" type="fix" due-to="Ivan Leskin, Ivan Leskin"> |
| Check for long streams in IOUtils.toByteArray #175. |
| </action> |
| <!-- ADD --> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileSystemProviders class. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Let org.apache.commons.io.filefilter classes work with java.nio.file.Files.walk* APIs. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Let org.apache.commons.io.filefilter classes work with java.nio.file.Files#newDirectoryStream(Path, DirectoryStream.Filter). |
| </action> |
| <action issue="IO-510" dev="ggregory" type="add" due-to="Gary Gregory, Apache Spark, David Mollitor"> |
| Add and adapt ReadAheadInputStream and BufferedFileChannelInputStream from Apache Spark. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.createParentDirectories(Path, FileAttribute...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Rob Spoor, Gary Gregory"> |
| Add factory methods to CloseShieldInputStream, CloseShieldReader, CloseShieldOutputStream, CloseShieldWriter, #173. |
| </action> |
| <action dev="ggregory" type="add" due-to="maxxedev, Gary Gregory"> |
| Add QueueInputStream and QueueOutputStream as simpler alternatives to PipedInputStream and PipedOutputStream #171. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add StandardLineSeparator. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Replace magic numbers with constants with the new IOUtils.CR and LF. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileSystem#supportsDriveLetter(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileUtils.delete(File). |
| </action> |
| <action issue="IO-700" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileUtils.moveFile(File, File, CopyOption...) #185. |
| </action> |
| <action issue="IO-700" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileUtils.isEmptyDirectory(File). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add FileUtils.lastModified[Unchecked](File) to workaround https://bugs.openjdk.java.net/browse/JDK-8177809. |
| </action> |
| <action issue="IO-709" dev="ggregory" type="add" due-to="Boris Unckel, Gary Gregory"> |
| Add null safe variants of isDirectory and isRegularFile. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use IOExceptionList(String, List). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use ObservableInputStream.ObservableInputStream(InputStream, Observer...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Make ObservableInputStream.getObservers() public. |
| </action> |
| <action issue="IO-706" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add TimestampedObserver. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and use IOUtils.byteArray(*). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Make public and reuse IOUtils.EMPTY_BYTE_ARRAY. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOUtils.copy(URL, File). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add copy(URL, OutputStream). |
| </action> |
| <action issue="IO-651" dev="ggregory" type="add" due-to="jmark109, Gary Gregory"> |
| Add DeferredFileOutputStream.toInputStream() #206. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add CharacterSetFilterReader.CharacterSetFilterReader(Reader, Integer...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Rob Spoor, Gary Gregory"> |
| Add AbstractCharacterFilterReader(Reader, IntPredicate), #227. |
| Add CharacterFilterReader(Reader, IntPredicate), #227. |
| Add CharacterFilterReaderIntPredicateTest, #227. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOConsumer.noop(). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add constructor ThresholdingOutputStream(int, IOConsumer, IOFunction) and make the class concrete. |
| </action> |
| <action dev="ggregory" type="add" due-to="nstdspace, Gary Gregory"> |
| Add constructor accepting collection of file alteration observers #236. |
| </action> |
| <!-- UPDATES --> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Update junit-jupiter from 5.6.2 to 5.7.0 #153. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Update mockito-core from 3.5.9 to 3.10.0, #152, #155, #157, #166, #167, #169, #182. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump mockito-inline from 3.7.0 to 3.10.0 #188, #207, #230. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Update commons.jacoco.version 0.8.5 to 0.8.7, fixes Java 15 builds and up. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Update spotbugs from 4.1.2 to 4.5.0, #158, #164, #165, #180, #199, #213, #224, #302. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump spotbugs-maven-plugin from 4.0.4 to 4.2.3, #161, #172, #223. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot"> |
| Update org.junit-pioneer:junit-pioneer 0.9.0 -> 1.4,1, #159, #162, #170, #189, #191, #210, #229. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Update actions/checkout from v2.3.2 to v2.3.4, #156, #168. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory"> |
| Bump actions/setup-java from v1.4.2 to v2 #160. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Update maven-surefire-plugin from 2.22.2 to 3.0.0-M5. |
| </action> |
| <action dev="ggregory" type="update" due-to="Arturo Bernal"> |
| Minor improvements, #176, 177, #190. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Update commons.japicmp.version 0.14.4 -> 0.15.3. |
| </action> |
| <action dev="ggregory" type="update" due-to="Michiel Kalkman"> |
| Tiny performance improvement in FileUtils#moveDirectoryToDirectory() #174. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump checkstyle from 8.38 to 8.42 #689, #209, #225. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #198. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump jimfs from 1.1 to 1.2 #183. |
| </action> |
| <action dev="ggregory" type="update" due-to="XenoAmess, Gary Gregory"> |
| Improve performance of IOUtils.contentEquals(InputStream, InputStream). |
| </action> |
| <action dev="ggregory" type="update" due-to="XenoAmess, Gary Gregory"> |
| Improve performance of IOUtils.contentEquals(Reader, Reader). |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump actions/cache from v2 to v2.1.5 #202, #228. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Bump junit-bom from 5.7.0 to 5.7.2 #200, #232. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| Update from Apache Commons Lang 3.11 to 3.12.0. |
| </action> |
| <action type="update" dev="ggregory" due-to="Arturo Bernal"> |
| Minor improvements #233. |
| </action> |
| <action type="update" dev="ggregory" due-to="Arturo Bernal"> |
| Simplify Assertions in tests #234. |
| </action> |
| </release> |
| <!-- The release date is the date RC is cut --> |
| <release version="2.8.0" date="2020-09-05" description="Java 8 is required."> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add org.apache.commons.io.input.CircularInputStream. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add org.apache.commons.io.file.PathUtils.cleanDirectory(Path, FileVisitOption...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add org.apache.commons.io.file.PathUtils.deleteDirectory(Path, FileVisitOption...). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add NullAppendable. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Rob Spoor, Jochen Wiedmann"> |
| CharSequenceReader.skip should return 0 instead of EOF on stream end #123. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Rob Spoor"> |
| Implement CharSequenceReader.ready() #122. |
| </action> |
| <action issue="IO-669" dev="ggregory" type="fix" due-to="XenoAmess, Gary Gregory"> |
| Fix code smells; fix typos #115. |
| </action> |
| <action dev="ggregory" type="fix" due-to="Jerome Wolff, Gary Gregory"> |
| Add caching for required charsets #120. |
| </action> |
| <action issue="IO-673" type="fix" dev="ggregory" due-to="Jerome Wolff"> |
| Make some simplifications #121. |
| </action> |
| <action issue="IO-674" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| InfiniteCircularInputStream is not infinite if its input buffer contains -1. |
| </action> |
| <action issue="IO-675" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| InfiniteCircularInputStream throws a divide-by-zero exception when reading if its input buffer is size 0. |
| </action> |
| <action issue="IO-677" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| FileSystem.getCurrent() does not return the correct enum. |
| </action> |
| <action issue="IO-679" dev="ggregory" type="fix" due-to="proneel"> |
| input.AbstractCharacterFilterReader passes count of chars read #132. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils.getAclEntryList(Path). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Null-guard IOUtils.close(Closeable, IOConsumer). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add ReversedLinesFileReader.readLines(int). |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add ReversedLinesFileReader.toString(int). |
| </action> |
| <action issue="IO-684" dev="ggregory" type="add" due-to="Gary Gregory, Robin Jansohn"> |
| Add PathUtils.delete(Path, DeleteOption...). |
| Add PathUtils.deleteDirectory(Path, DeleteOption...). |
| Add PathUtils.deleteFile(Path, DeleteOption...). |
| Add PathUtils.setReadOnly(Path, boolean, LinkOption...). |
| Add CleaningPathVisitor.CleaningPathVisitor(PathCounters, DeleteOption[], String...). |
| Add DeletingPathVisitor.DeletingPathVisitor(PathCounters, DeleteOption[], String...). |
| </action> |
| <action issue="IO-683" dev="sebb" type="fix"> |
| CircularBufferInputStream.read() fails to convert byte to unsigned int |
| </action> |
| <action dev="ggregory" type="fix" due-to="Gary Gregory"> |
| Fix SpotBugs issues in org.apache.commons.io.FileUtils. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add RandomAccessFileInputStream. |
| </action> |
| <action issue="IO-681" dev="sebb" type="add"> |
| IOUtils.close(Closeable) should allow a list of closeables. |
| </action> |
| <action issue="IO-672" dev="sebb" type="fix"> |
| Copying a File sets last modified date to 01 January 1970. |
| </action> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOUtils.consume(InputStream). |
| </action> |
| <action issue="IO-676" dev="ggregory" type="add" due-to="Isira Seneviratne, Gary Gregory"> |
| Add isFileNewer() and isFileOlder() methods that support the Java 8 Date/Time API. #124. |
| </action> |
| <action issue="IO-676" dev="ggregory" type="fix" due-to="Michael Ernst, Gary Gregory"> |
| Prevent NullPointerException in ReversedLinesFileReader constructors #117. |
| </action> |
| <action dev="ggregory" type="add" due-to="Adam Retter, Gary Gregory"> |
| Add a MarkShieldInputStream #119. |
| </action> |
| <!-- UPDATES --> |
| <action dev="ggregory" type="add" due-to="Gary Gregory"> |
| Deprecate IOUtils.LINE_SEPARATOR in favor of Java 7's System.lineSeparator(). |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Replace FindBugs with SpotBugs. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| maven-checkstyle-plugin 3.1.0 -> 3.1.1. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Update tests from org.apache.commons:commons-lang3 3.10 to 3.11. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Update commons-parent from 50 to 51 #129. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Update actions/checkout from v1 to v2.3.1 #126. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Update junit-pioneer from 0.6.0 to 0.9.0, #127, #135, #138. |
| </action> |
| <action dev="ggregory" type="update" due-to="Gary Gregory"> |
| Update mockito-core from 3.3.3 to 3.5.9 #128, #133, #145, #149, #151. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Update spotbugs from 4.0.6 to 4.6.0 #134, #332. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Update actions/checkout from v2.3.1 to v2.3.2 #140. |
| </action> |
| <action dev="ggregory" type="update" due-to="Dependabot"> |
| Update actions/setup-java from v1.4.0 to v1.4.2 #141, #148. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| Update com.github.siom79.japicmp:japicmp-maven-plugin 0.14.3 -> 0.14.4. |
| </action> |
| </release> |
| <!-- The release date is the date RC is cut --> |
| <release version="2.7" date="2020-05-24" description="Java 8 is required."> |
| <action issue="IO-589" dev="sebb" type="fix"> |
| Some tests fail if the base path contains a space. |
| </action> |
| <action dev="jochen" type="add"> |
| Adding the CircularBufferInputStream, and the PeekableInputStream. |
| </action> |
| <action issue="IO-582" dev="jochen" type="fix" due-to="Bruno Palos"> |
| Make methods in ObservableInputStream.Observer public. |
| </action> |
| <action issue="IO-535" dev="pschumacher" type="fix" due-to="Svetlin Zarev, Anthony Raymond"> |
| Thread bug in FileAlterationMonitor#stop(int). |
| </action> |
| <action issue="IO-553" dev="ggregory" type="add"> |
| Add org.apache.commons.io.FilenameUtils.isIllegalWindowsFileName(char). |
| </action> |
| <action issue="IO-557" dev="pschumacher" type="fix" due-to="luccioman"> |
| Perform locale independent upper case conversions. |
| </action> |
| <action issue="IO-570" dev="ggregory" type="fix" due-to="Pranet Verma"> |
| Missing Javadoc in FilenameUtils causing Travis-CI build to fail. |
| </action> |
| <action issue="IO-571" dev="ggregory" type="fix" due-to="pranet"> |
| Remove redundant isDirectory() check in org.apache.commons.io.FileUtils.listFilesAndDirs(File, IOFileFilter, IOFileFilter). |
| </action> |
| <action issue="IO-572" dev="ggregory" type="update" due-to="Pranet Verma"> |
| Refactor duplicate code in org.apache.commons.io.FileUtils. |
| </action> |
| <action issue="IO-577" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add readers to filter out given characters: CharacterSetFilterReader and CharacterFilterReader. |
| </action> |
| <action issue="IO-559" type="fix"> |
| FilenameUtils.normalize now verifies hostname syntax in UNC path. |
| </action> |
| <action issue="IO-580" dev="ggregory" type="update"> |
| Update org.apache.commons.io.FilenameUtils.isExtension(String, String[]) to use var args. |
| </action> |
| <action issue="IO-554" dev="ggregory" type="fix" due-to="Michele Mariotti"> |
| FileUtils.copyToFile(InputStream source, File destination) should not close input stream. |
| </action> |
| <action issue="IO-594" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add IOUtils copy methods with java.lang.Appendable as the target. |
| </action> |
| <action issue="IO-604" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| FileUtils.doCopyFile(File, File, boolean) can throw ClosedByInterruptException. |
| </action> |
| <action issue="IO-605" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add class CanExecuteFileFilter. |
| </action> |
| <action issue="IO-701" dev="ggregory" type="update" due-to="Raymond Tan"> |
| Make array declaration in ThresholdingOutputStream consistent with other array declarations in the library #77. |
| </action> |
| <action issue="IO-578" dev="ggregory" type="add" due-to="Mark Chesney"> |
| Support java.nio.Path and non-default file systems for ReversedLinesFileReader (#62). |
| </action> |
| <action issue="IO-608" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add a convenience NullPrintStream. |
| </action> |
| <action issue="IO-607" dev="ggregory" type="update" due-to="Gary Gregory"> |
| Update from Java 7 to Java 8. |
| </action> |
| <action issue="IO-610" dev="ggregory" type="update" due-to="Sebastian"> |
| Remove throws IOException in method isSymlink() #80. |
| </action> |
| <action issue="IO-612" dev="ggregory" type="add" due-to="Rob Spoor, Gary Gregory"> |
| Add class TeeReader. |
| </action> |
| <action issue="IO-613" dev="ggregory" type="add" due-to="Rob Spoor, Gary Gregory"> |
| Add classes ClosedReader and CloseShieldReader. #84. |
| </action> |
| <action issue="IO-614" dev="ggregory" type="add" due-to="Rob Spoor"> |
| Add classes TaggedWriter, ClosedWriter and BrokenWriter. #86. |
| </action> |
| <action issue="IO-615" dev="ggregory" type="add" due-to="Gary Gregory, Rob Spoor"> |
| Add classes TeeWriter, FilterCollectionWriter, ProxyCollectionWriter, IOExceptionList, IOIndexedException. |
| </action> |
| <action issue="IO-616" dev="ggregory" type="add" due-to="Rob Spoor"> |
| Add class AppendableWriter. #87. |
| </action> |
| <action issue="IO-617" dev="ggregory" type="add" due-to="Rob Spoor, Gary Gregory"> |
| Add class CloseShieldWriter. #83. |
| </action> |
| <action issue="IO-618" dev="ggregory" type="add" due-to="Rob Spoor"> |
| Add classes Added TaggedReader, ClosedReader and BrokenReader. #85. |
| </action> |
| <action issue="IO-619" dev="ggregory" type="add" due-to="Rob Spoor"> |
| Support sub sequences in CharSequenceReader. #91. |
| </action> |
| <action issue="IO-625" dev="ggregory" type="fix" due-to="Mikko Maunu"> |
| Corrected misleading exception message for FileUtils.copyDirectoryToDirectory. |
| </action> |
| <action issue="IO-626" dev="ggregory" type="fix" due-to="Yuji Konishi"> |
| A mistake in the FilenameUtils.concat()'s Javadoc about an absolute path. |
| </action> |
| <action issue="IO-628" dev="ggregory" type="update" due-to="Allon Mureinik"> |
| Migration to JUnit Jupiter #97. |
| </action> |
| <action issue="IO-630" dev="ggregory" type="update" due-to="Gary Gregory"> |
| Deprecate org.apache.commons.io.output.NullOutputStream.NullOutputStream() in favor of org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM. |
| </action> |
| <action issue="IO-631" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add a CountingFileVisitor (as the basis for a forthcoming DeletingFileVisitor). |
| </action> |
| <action issue="IO-632" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add PathUtils for operations on NIO Path. |
| </action> |
| <action issue="IO-633" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add DeletingFileVisitor. |
| </action> |
| <action issue="IO-629" dev="ggregory" type="update" due-to="Ian Springer, Ian Springer, Gary Gregory"> |
| FileUtils#forceDelete should use Files#delete rather than File#delete so exception messages includes reason for failure. |
| </action> |
| <action issue="IO-634" dev="ggregory" type="update" due-to="Václav Haisman, Bruno P. Kinoshita, Gary Gregory"> |
| Make getCause synchronized and use a Deque instead of a Stack #64. |
| </action> |
| <action issue="IO-635" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add org.apache.commons.io.IOUtils.close(Closeable). |
| </action> |
| <action issue="IO-636" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add and reuse org.apache.commons.io.IOUtils.closeQuitely(Closeable, Consumer<IOException>). |
| Add and reuse org.apache.commons.io.IOUtils.close(Closeable, IOConsumer<IOException>). |
| </action> |
| <action issue="IO-640" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| NPE in org.apache.commons.io.IOUtils.contentEquals(InputStream, InputStream) when only one input is null. |
| </action> |
| <action issue="IO-641" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| NPE in org.apache.commons.io.IOUtils.contentEquals(Reader, Reader) when only one input is null. |
| </action> |
| <action issue="IO-643" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| NPE in org.apache.commons.io.IOUtils.contentEqualsIgnoreEOL(Reader, Reader) when only one input is null. |
| </action> |
| <action issue="IO-644" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| NPE in org.apache.commons.io.FileUtils.contentEqualsIgnoreEOL(File, File) when only one input is null. |
| </action> |
| <action issue="IO-645" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Add org.apache.commons.io.file.PathUtils.fileContentEquals(Path, Path, OpenOption...). |
| </action> |
| <action issue="IO-458" dev="ggregory" type="add" due-to="Gary Gregory, Joshua Gitlin"> |
| Add a SequenceReader similar to java.io.SequenceInputStream. |
| </action> |
| <action issue="IO-648" dev="ggregory" type="add" due-to="Gary Gregory"> |
| Implement directory content equality. 100#. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| Update tests from Apache Commons Lang 3.9 to 3.10. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| Update tests org.junit-pioneer:junit-pioneer 0.3.0 -> 0.6.0. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| Update tests org.junit.jupiter:junit-jupiter 5.5.2 -> 5.6.2. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| Update tests org.mockito:mockito-core 3.0.0 -> 3.3.3. |
| </action> |
| <action issue="IO-648" dev="ggregory" type="add" due-to="Adam Retter, Alex Herbert, Gary Gregory"> |
| Refactor ByteArrayOutputStream into synchronized and unsynchronized versions #108. |
| </action> |
| <action issue="IO-662" dev="ggregory" type="add" due-to="Adam Retter, Gary Gregory"> |
| Refactor ByteArrayOutputStream into synchronized and unsynchronized versions #108. |
| </action> |
| <action issue="IO-664" dev="ggregory" type="fix" due-to="Gary Gregory"> |
| org.apache.commons.io.FileUtils.copyURLToFile(*) open but do not close streams. |
| </action> |
| <action issue="IO-666" dev="ggregory" type="update" due-to="Gary Gregory"> |
| Normalize internal buffers to 8192 bytes. |
| </action> |
| <action issue="IO-665" dev="ggregory" type="update" due-to="Otto Fowler, Gary Gregory"> |
| Ensure that passing a null InputStream results in NPE with tests #112. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| commons.jacoco.version 0.8.4 -> 0.8.5. |
| </action> |
| <action type="update" dev="ggregory" due-to="Gary Gregory"> |
| com.github.siom79.japicmp:japicmp-maven-plugin 0.14.1 -> 0.14.3. |
| </action> |
| <action issue="IO-667" dev="ggregory" type="update" due-to="Adam Retter, Gary Gregory"> |
| Add functional interfaces IOFunction and IOSupplier #110. |
| </action> |
| <action dev="ggregory" type="update" due-to="Rob Spoor, Gary Gregory"> |
| Support sub sequences in CharSequenceReader #91. |
| </action> |
| <action dev="ggregory" type="update" due-to="dengliming"> |
| Remove deprecated sudo setting. #113. |
| </action> |
| </release> |
| |
| <release version="2.6" date="2017-10-15" description="Java 7 required, Java 9 supported."> |
| <action issue="IO-553" dev="britter" type="update" due-to="Michael Ernst"> |
| Make code style of hasBOM() consistent with getBOMCharsetName() |
| </action> |
| <action issue="IO-546" dev="pschumacher" type="fix" due-to="Tomas Celaya"> |
| ClosedOutputStream#flush should throw |
| </action> |
| <action issue="IO-551" dev="britter" type="add"> |
| Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility |
| </action> |
| <action issue="IO-550" dev="kinow" type="fix" due-to="Jimi Adrian"> |
| Documentation issue, fix 404 Javadoc issues in the description page |
| </action> |
| <action issue="IO-542" dev="pschumacher" type="update" due-to="Ilmars Poikans"> |
| FileUtils#readFileToByteArray: optimize reading of files with known size |
| </action> |
| <action issue="IO-547" dev="ggregory" type="update" due-to="Nikhil Shinde, Michael Ernst, Gary Greory"> |
| Throw a IllegalArgumentException instead of NullPointerException in FileSystemUtils.freeSpaceWindows(). |
| </action> |
| <action issue="IO-367" dev="pschumacher" type="add" due-to="James Sawle"> |
| Add convenience methods for copyToDirectory |
| </action> |
| <action issue="IO-442" dev="pschumacher" type="fix" due-to="Simon Robinson"> |
| Javadoc contradictory for FileFilterUtils.ageFileFilter(cutoff) and the filter it constructs: AgeFileFilter(cutoff) |
| </action> |
| <action issue="IO-534" dev="sebb" type="fix"> |
| FileUtilTestCase.testForceDeleteDir() should not delete testDirectory parent |
| </action> |
| <action issue="IO-528" dev="pschumacher" type="fix" due-to="Dave Moten"> |
| fix Tailer.run race condition runaway logging |
| </action> |
| <action issue="IO-483" dev="kinow" type="fix" due-to="Marko Vasic"> |
| getPrefixLength return -1 if Unix file contains colon |
| </action> |
| <action issue="IO-520" dev="pschumacher" type="fix"> |
| FileUtilsTestCase#testContentEqualsIgnoreEOL fails on Windows |
| </action> |
| <action issue="IO-516" dev="pschumacher" type="fix" due-to="Jason Pyeron"> |
| .gitattributes not correctly applied |
| </action> |
| <action issue="IO-515" dev="ggregory" type="fix" due-to="Brett Lounsbury, Gary Gregory"> |
| Allow Specifying Initial Buffer Size of DeferredFileOutputStream. |
| </action> |
| <action issue="IO-512" dev="ggregory" type="fix" due-to="Ralf Hauser"> |
| ThresholdingOutputStream.thresholdReached() results in FileNotFoundException. |
| </action> |
| <action issue="IO-511" dev="britter" type="fix" due-to="Ahmet Celik"> |
| After a few unit tests, a few newly created directories not cleaned completely. |
| </action> |
| <action issue="IO-502" dev="ggregory" type="fix" due-to="Christian Schulte"> |
| Exceptions are suppressed incorrectly when copying files. |
| </action> |
| <action issue="IO-503" dev="ggregory" type="fix"> |
| Update platform requirement to Java 7. |
| </action> |
| <action issue="IO-537" dev="ggregory" type="fix" due-to="Borys Zibrov"> |
| BOMInputStream shouldn't sort array of BOMs in-place. |
| </action> |
| <action issue="IO-506" dev="ggregory" type="update" due-to="Christian Schulte"> |
| Deprecate methods FileSystemUtils.freeSpaceKb(). |
| </action> |
| <action issue="IO-505" dev="ggregory" type="update" due-to="Christian Schulte"> |
| Make LineIterator implement Closeable to support try-with-resources statements. |
| </action> |
| <action issue="IO-504" dev="ggregory" type="update" due-to="Christian Schulte"> |
| Deprecated of all IOUtils.closeQuietly() methods and use try-with-resources internally. |
| </action> |
| <action issue="IO-493" dev="pschumacher" type="add" due-to="Piotr Turski"> |
| Add infinite circular input stream |
| </action> |
| <action issue="IO-507" dev="ggregory" type="add"> |
| Add a ByteOrderParser class. |
| </action> |
| <action issue="IO-518" dev="jochen" type="add"> |
| Add ObservableInputStream |
| </action> |
| <action issue="IO-519" dev="jochen" type="add"> |
| Add MessageDigestCalculatingInputStream |
| </action> |
| <action issue="IO-513" dev="ggregory" type="add" due-to="Behrang Saeedzadeh"> |
| Add convenience methods for reading class path resources. |
| </action> |
| <action issue="IO-514" dev="pschumacher" type="remove"> |
| Remove org.apache.commons.io.Java7Support |
| </action> |
| <action issue="IO-567" dev="jochen" type="fix"> |
| Implement special case handling for NTFS ADS names: FilenameUtils.getExtension(String), |
| and FilenameUtils.indexOfExtension(String) are now throwing an IllegalArgumentException, |
| if the file name in question appears to identify an alternate data stream (Windows only). |
| </action> |
| </release> |
| |
| <release version="2.5" date="2016-04-22" description="New features and bug fixes."> |
| <action issue="IO-492" dev="ggregory" type="fix" due-to="Santiago Castro"> |
| Typo: In an IOUtils.java comment it says "focussed" instead of "focused". |
| </action> |
| <action issue="IO-433" dev="krosenvold" type="update"> |
| Converted all test cases to JUnit 4 |
| </action> |
| <action issue="IO-487" dev="bdelacretaz" type="add"> |
| Add ValidatingObjectInputStream for controlled deserialization |
| </action> |
| <action issue="IO-446" dev="krosenvold" type="fix" due-to="Jeffrey Barrus"> |
| adds an endOfFileReached method to the TailerListener |
| </action> |
| <action issue="IO-484" dev="krosenvold" type="fix" due-to="Philippe Arteau"> |
| FilenameUtils should handle embedded null bytes |
| </action> |
| <action issue="IO-481" dev="krosenvold" type="fix"> |
| Changed/Corrected algorithm for waitFor |
| </action> |
| <action issue="IO-471" dev="krosenvold" type="add" due-to="Leandro Reis"> |
| Support for additional encodings in ReversedLinesFileReader |
| </action> |
| <action issue="IO-428" dev="krosenvold" type="fix" due-to="Stefan Gmeiner"> |
| BOMInputStream.skip returns wrong count if stream contains no BOM |
| </action> |
| <action issue="IO-425" dev="krosenvold" type="add" due-to="Craig Swank"> |
| Setter method for threshold on ThresholdingOutputStream |
| </action> |
| <action issue="IO-488" dev="krosenvold" type="fix" due-to="Björn Buchner"> |
| FileUtils.waitFor(...) swallows thread interrupted status |
| </action> |
| <action issue="IO-452" dev="krosenvold" type="fix" due-to="David Standish"> |
| Support for symlinks with missing target. Added support for JDK7 symlink features when present |
| </action> |
| <action issue="IO-466" dev="krosenvold" type="update"> |
| Added testcase to show this was fixed with IO-423 |
| </action> |
| <action issue="IO-479" dev="sebb" type="update" due-to="Zhouce Chen"> |
| Correct exception message in FileUtils.getFile(File, String...) |
| </action> |
| <action issue="IO-406" dev="britter" type="add" due-to="Niall Pemberton"> |
| Introduce new class AppendableOutputStream |
| </action> |
| <action issue="IO-465" dev="britter" type="update" due-to="based2"> |
| Update to JUnit 4.12 |
| </action> |
| <action issue="IO-462" dev="sebb" type="update"> |
| IOExceptionWithCause no longer needed |
| </action> |
| <action issue="IO-459" dev="olamy" type="add" due-to="Kristian Rosenvold"> |
| Add WindowsLineEndingInputStream and UnixLineEndingInputStream. |
| </action> |
| <action issue="IO-457" dev="olamy" type="add" due-to="Kristian Rosenvold"> |
| Add a BoundedReader, a wrapper that can be used to constrain access |
| to an underlying stream when used with mark/reset - |
| to avoid overflowing the mark limit of the underlying buffer. |
| </action> |
| <action issue="IO-453" dev="sebb" type="fix" due-to="Steven Christou"> |
| Regression in FileUtils.readFileToString from 2.0.1 |
| </action> |
| <action issue="IO-451" dev="sebb" type="fix" due-to="David Standish"> |
| ant test fails - resources missing from test classpath |
| </action> |
| <action issue="IO-435" dev="tn" type="fix" due-to="Dominik Stadler"> |
| Document that FileUtils.deleteDirectory, directoryContains and cleanDirectory |
| may throw an IllegalArgumentException in case the passed directory does not |
| exist or is not a directory. |
| </action> |
| <action issue="IO-426" dev="ggregory" type="add"> |
| Add API IOUtils.closeQuietly(Closeable...) |
| </action> |
| <action issue="IO-424" dev="ggregory" type="fix" due-to="Ville Skyttä"> |
| Javadoc fixes, mostly to appease 1.8.0 |
| </action> |
| <action issue="IO-422" dev="ggregory" type="update"> |
| Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets |
| </action> |
| <action issue="IO-410" dev="sebb" type="add" due-to="Beluga Behr"> |
| Readfully() That Returns A Byte Array |
| </action> |
| <action issue="IO-395" dev="brentworden" type="add" due-to="Beluga Behr"> |
| Overload IOUtils buffer methods to accept buffer size |
| </action> |
| <action issue="IO-389" dev="sebb" type="fix" due-to="Austin Doupnik"> |
| FileUtils.sizeOfDirectory can throw IllegalArgumentException |
| </action> |
| <action issue="IO-390" dev="sebb" type="fix"> |
| FileUtils.sizeOfDirectoryAsBigInteger can overflow. |
| Ensure that recursive calls all use BigInteger |
| </action> |
| <action issue="IO-382" dev="sebb" type="add"> |
| Chunked IO for large arrays. |
| Added writeChunked(byte[], OutputStream) and writeChunked(char[] Writer) |
| Added ChunkedOutputStream, ChunkedWriter |
| </action> |
| <action issue="IO-385" dev="sebb" type="fix"> |
| FileUtils.doCopyFile can potentially loop forever |
| Exit loop if no data to copy |
| </action> |
| <action issue="IO-383" dev="sebb" type="fix"> |
| FileUtils.doCopyFile caches the file size; needs to be documented |
| Added Javadoc; show file lengths in exception message |
| </action> |
| <action issue="IO-239" dev="sebb" type="update"> |
| Convert IOCase to a Java 1.5+ Enumeration |
| [N.B. this is binary compatible] |
| </action> |
| <action issue="IO-233" dev="sebb" type="add"> |
| Add Methods for Buffering Streams/Writers To IOUtils |
| Added overloaded buffer() methods - see also IO-330 |
| </action> |
| <action issue="IO-330" dev="sebb" type="add"> |
| IOUtils#toBufferedOutputStream/toBufferedWriter to conditionally wrap the output |
| Added overloaded buffer() methods - see also IO-233 |
| </action> |
| <action issue="IO-381" dev="ggregory" type="add"> |
| Add FileUtils.copyInputStreamToFile API with option to leave the source open. |
| See copyInputStreamToFile(final InputStream source, final File destination, boolean closeSource) |
| </action> |
| <action issue="IO-380" dev="sebb" type="fix" due-to="claudio_ch"> |
| FileUtils.copyInputStreamToFile should document it closes the input source |
| </action> |
| <action issue="IO-279" dev="sebb" type="fix"> |
| Tailer erroneously considers file as new. |
| Fix to use file.lastModified() rather than System.currentTimeMillis() |
| </action> |
| <action issue="IO-356" dev="sebb" type="fix"> |
| CharSequenceInputStream#reset() behaves incorrectly in case when buffer size is not dividable by data size. |
| Fix code so skip relates to the encoded bytes; reset now re-encodes the data up to the point of the mark |
| </action> |
| <action issue="IO-379" dev="sebb" type="add"> |
| CharSequenceInputStream - add tests for available() |
| Fix code so it really does reflect a minimum available. |
| </action> |
| <action issue="IO-328" dev="sebb" type="update"> |
| getPrefixLength returns null if filename has leading slashes |
| Javadoc: add examples to show correct behavior; add unit tests |
| </action> |
| <action issue="IO-299" dev="sebb" type="update"> |
| FileUtils.listFilesAndDirs includes original dir in results even when it doesn't match filter |
| Javadoc: clarify that original dir is included in the results |
| </action> |
| <action issue="IO-346" dev="sebb" type="add"> |
| Add ByteArrayOutputStream.toInputStream() |
| </action> |
| <action issue="IO-368" dev="sebb" type="fix"> |
| ClassLoaderObjectInputStream does not handle primitive typed members |
| </action> |
| <action issue="IO-341" dev="sebb" type="add"> |
| A constant for holding the BOM character (U+FEFF) |
| </action> |
| <action issue="IO-314" dev="sebb" type="fix"> |
| Deprecate all methods that use the default encoding |
| </action> |
| <action issue="IO-338" dev="sebb" type="fix"> |
| When a file is rotated, finish reading previous file prior to starting new one |
| </action> |
| <action issue="IO-354" dev="sebb" type="fix"> |
| Commons IO Tailer does not respect UTF-8 Charset. |
| </action> |
| <action issue="IO-323" dev="sebb" type="fix"> |
| What should happen in FileUtils.sizeOf[Directory] when an overflow takes place? |
| Added Javadoc. |
| </action> |
| <action issue="IO-372" dev="sebb" type="fix"> |
| FileUtils.moveDirectory can produce misleading error message on failure |
| </action> |
| <action issue="IO-375" dev="sebb" type="update"> |
| FilenameUtils.splitOnTokens(String text) check for '**' could be simplified |
| </action> |
| <action issue="IO-374" dev="sebb" type="update"> |
| WildcardFileFilter ctors should not use null to mean IOCase.SENSITIVE when delegating to other ctors |
| </action> |
| <action issue="IO-362" dev="ggregory" type="fix" due-to="mmadson, ggregory"> |
| IOUtils.contentEquals* methods returns false if input1 == input2, should return true. |
| </action> |
| <action issue="IO-361" dev="ggregory" type="add"> |
| Add API FileUtils.forceMkdirsParent(). |
| </action> |
| <action issue="IO-360" dev="ggregory" type="add"> |
| Add API Charsets.requiredCharsets(). |
| </action> |
| <action issue="IO-359" dev="ggregory" type="add" due-to="yukoba"> |
| Add IOUtils.skip and skipFully(ReadableByteChannel, long). |
| </action> |
| <action issue="IO-358" dev="ggregory" type="add" due-to="yukoba"> |
| Add IOUtils.read and readFully(ReadableByteChannel, ByteBuffer buffer). |
| </action> |
| <action issue="IO-357" dev="ggregory" type="fix" due-to="mortenh"> |
| [Tailer] InterruptedException while the thread is sleeping is silently ignored |
| </action> |
| <action issue="IO-353" dev="ggregory" type="add" due-to="ggregory"> |
| Add API IOUtils.copy(InputStream, OutputStream, int) |
| </action> |
| <action issue="IO-349" dev="ggregory" type="add" due-to="scop"> |
| Add API with array offset and length argument to FileUtils.writeByteArrayToFile. |
| </action> |
| <action issue="IO-352" dev="ggregory" type="fix" due-to="scop"> |
| Spelling fixes. |
| </action> |
| <action issue="IO-348" dev="ggregory" type="add" due-to="plcstpierre"> |
| Missing information in IllegalArgumentException thrown by org.apache.commons.io.FileUtils#validateListFilesParameters. |
| </action> |
| <action issue="IO-345" dev="ggregory" type="add" due-to="mkresse"> |
| Supply a hook method allowing Tailer actively determining stop condition. |
| </action> |
| <action issue="IO-436" dev="ggregory" type="fix" due-to="christoph.schneegans"> |
| Improper Javadoc comment for FilenameUtils.indexOfExtension. |
| </action> |
| <action issue="IO-437" dev="ggregory" type="add"> |
| Make IOUtils.EOF public and reuse it in various classes. |
| </action> |
| </release> |
| |
| <release version="2.4" date="2012-06-12" description="New features and bug fixes."> |
| <action issue="IO-343" dev="ggregory" type="fix" due-to="igorlash"> |
| org.apache.commons.io.comparator Javadoc is inconsistent with real code. |
| </action> |
| <action issue="IO-336" dev="ggregory" type="fix" due-to="rleavelle"> |
| Yottabyte (YB) incorrectly defined in FileUtils. |
| </action> |
| <action issue="IO-269" dev="ggregory" type="add" due-to="sebb"> |
| Tailer locks file from deletion/rename on Windows. |
| </action> |
| <action issue="IO-279" dev="sebb" type="fix" due-to="Sergio Bossa, Chris Baron"> |
| Tailer erroneously considers file as new. |
| </action> |
| <action issue="IO-335" dev="sebb" type="fix"> |
| Tailer#readLines - incorrect CR handling. |
| </action> |
| <action issue="IO-334" dev="sebb" type="fix"> |
| FileUtils.toURLs throws NPE for null parameter; document the behavior. |
| </action> |
| <action issue="IO-333" dev="ggregory" type="add" due-to="fmeschbe"> |
| Export OSGi packages at version 1.x in addition to 2.x. |
| </action> |
| <action issue="IO-320" dev="ggregory" type="add" due-to="ggregory"> |
| Add XmlStreamReader support for UTF-32. |
| </action> |
| <action issue="IO-331" dev="ggregory" type="add" due-to="ggregory"> |
| BOMInputStream wrongly detects UTF-32LE_BOM files as UTF-16LE_BOM files in method getBOM(). |
| </action> |
| <action issue="IO-332" dev="ggregory" type="fix" due-to="liangly"> |
| Improve tailer's reading performance. |
| </action> |
| <action issue="IO-279" dev="ggregory" type="fix"> |
| Improve Tailer performance with buffered reads (see IO-332). |
| </action> |
| <action issue="IO-329" dev="ggregory" type="fix" due-to="tivv"> |
| FileUtils.writeLines uses unbuffered IO. |
| </action> |
| <action issue="IO-327" dev="ggregory" type="add" due-to="ggregory"> |
| Add byteCountToDisplaySize(BigInteger). |
| </action> |
| <action issue="IO-326" dev="ggregory" type="add" due-to="ggregory, kinow"> |
| Add new FileUtils.sizeOf[Directory] APIs to return BigInteger. |
| </action> |
| <action issue="IO-325" dev="ggregory" type="add" due-to="raviprak"> |
| Add IOUtils.toByteArray methods to work with URL and URI. |
| </action> |
| <action issue="IO-324" dev="ggregory" type="add" due-to="raviprak"> |
| Add missing Charset sister APIs to method that take a String charset name. |
| </action> |
| <action issue="IO-319" dev="ggregory" type="fix" due-to="raviprak"> |
| FileUtils.sizeOfDirectory follows symbolic links. |
| </action> |
| </release> |
| |
| <release version="2.3" date="2012-April-10" description="New features and bug fixes."> |
| <action issue="IO-322" dev="ggregory" type="add" due-to="ggregory"> |
| Add and use class Charsets. |
| </action> |
| <action issue="IO-321" dev="ggregory" type="add" due-to="ggregory"> |
| ByteOrderMark UTF_32LE is incorrect. |
| </action> |
| <action issue="IO-318" dev="ggregory" type="add" due-to="ggregory"> |
| Add Charset sister APIs to method that take a String charset name. |
| </action> |
| </release> |
| |
| <release version="2.2" date="2012-March-26" description="New features and bug fixes."> |
| <action issue="IO-313" dev="ggregory" type="add" due-to="ggregory"> |
| Add IOUtils.toBufferedReader(Reader) |
| </action> |
| <!-- Note: the issue was not raised by Manoj, but arose from IO-305 and tests he performed --> |
| <action issue="IO-308" dev="sebb" type="add" due-to="Manoj Mokashi"> |
| Allow applications to provide buffer (or size) for copyLarge methods. |
| </action> |
| <action issue="IO-311" dev="sebb" type="fix" due-to="Robert Muir"> |
| IOUtils.read(InputStream/Reader) ignores the offset parameter |
| </action> |
| <action issue="IO-312" dev="sebb" type="fix"> |
| CharSequenceInputStream(CharSequence s, Charset charset, int bufferSize) ignores bufferSize |
| </action> |
| <action issue="IO-305" dev="sebb" type="add" due-to="Manoj Mokashi"> |
| New copyLarge() method in IOUtils that takes additional offset, length arguments |
| </action> |
| <action issue="IO-300" dev="sebb" type="fix"> |
| FileUtils.moveDirectoryToDirectory removes source directory if destination is a sub-directory |
| </action> |
| <action issue="IO-307" dev="sebb" type="fix"> |
| ReaderInputStream#read(byte[] b, int off, int len) should check for valid parameters |
| </action> |
| <action issue="IO-287" dev="bayard" type="add" due-to="Ron Kuris, Gary Gregory"> |
| Use terabyte (TB), petabyte (PB) and exabyte (EB) in FileUtils.byteCountToDisplaySize(long size) |
| </action> |
| <action issue="IO-306" dev="sebb" type="fix"> |
| ReaderInputStream#read(byte[] b, int off, int len) should always return 0 for length == 0 |
| </action> |
| <action issue="IO-173" dev="sebb" type="add" due-to="Marcos VinÃcius da Silva"> |
| FileUtils.listFiles() doesn't return directories |
| </action> |
| <action issue="IO-276" dev="sebb" type="fix" due-to="nkami"> |
| "FileUtils#deleteDirectoryOnExit(File)" does not work |
| </action> |
| <action issue="IO-273" dev="sebb" type="fix" due-to="sebb"> |
| BoundedInputStream.read() treats max differently from BoundedInputStream.read(byte[]...) |
| </action> |
| <action issue="IO-297" dev="sebb" type="add" due-to="Oleg Kalnichevski"> |
| CharSequenceInputStream to efficiently stream content of a CharSequence |
| </action> |
| <action issue="IO-296" dev="sebb" type="update" due-to="Oleg Kalnichevski"> |
| ReaderInputStream optimization: more efficient reading of small chunks of data |
| </action> |
| <action issue="IO-298" dev="sebb" type="fix" due-to="Christian Schulte"> |
| Various methods of class 'org.apache.commons.io.FileUtils' incorrectly suppress 'java.io.IOException' |
| </action> |
| <action issue="IO-304" dev="ggregory" type="add" due-to="liangly"> |
| The second constructor of Tailer class does not pass 'delay' to the third one |
| </action> |
| <action issue="IO-303" dev="ggregory" type="add" due-to="fabian.barney"> |
| TeeOutputStream does not call branch.close() when main.close() throws an exception |
| </action> |
| <action issue="IO-302" dev="ggregory" type="add" due-to="jsteuerwald, detinho"> |
| ArrayIndexOutOfBoundsException in BOMInputStream when reading a file without BOM multiple times |
| </action> |
| <action issue="IO-301" dev="ggregory" type="add" due-to="kaykay.unique"> |
| Add IOUtils.closeQuietly(Selector) necessary |
| </action> |
| <action issue="IO-292" dev="sebb" type="add" due-to="sebb"> |
| IOUtils.closeQuietly() should take a ServerSocket as a parameter |
| </action> |
| <action issue="IO-290" dev="sebb" type="add" due-to="sebb"> |
| Add read/readFully methods to IOUtils |
| </action> |
| <action issue="IO-288" dev="sebb" type="add" due-to="Georg Henzler"> |
| Supply a ReversedLinesFileReader |
| </action> |
| <action issue="IO-291" dev="ggregory" type="add" due-to="ggregory"> |
| Add new function FileUtils.directoryContains. |
| </action> |
| <action issue="IO-275" dev="sebb" type="add" due-to="CJ Aspromgos"> |
| FileUtils.contentEquals and IOUtils.contentEquals - Add option to ignore "line endings" |
| Added contentEqualsIgnoreEOL methods to both classes |
| </action> |
| </release> |
| |
| <release version="2.1" date="2011-Sep-28" description="New features and bug fixes."> |
| <action dev="ggregory" type="add" issue="IO-285" due-to="ggregory"> |
| Use standard Maven directory layout |
| </action> |
| <action dev="ggregory" type="add" issue="IO-284" due-to="ggregory"> |
| Add IOUtils API toString for URL and URI to get contents |
| </action> |
| <action dev="ggregory" type="add" issue="IO-282" due-to="ggregory"> |
| Add API FileUtils.copyFile(File input, OutputStream output) |
| </action> |
| <action dev="sebb" type="fix" issue="IO-280" due-to="sebb"> |
| Dubious use of mkdirs() return code |
| </action> |
| <action type="fix" issue="IO-277"> |
| ReaderInputStream enters infinite loop when it encounters an unmappable character |
| </action> |
| <action type="fix" issue="IO-264"> |
| FileUtils.moveFile() Javadoc should specify FileExistsException thrown |
| </action> |
| <action type="add" issue="IO-262"> |
| FileAlterationObserver has no getter for FileFilter |
| </action> |
| <action type="add" issue="IO-261"> |
| Add FileUtils.getFile API with varargs parameter |
| </action> |
| <action type="fix" issue="IO-260"> |
| ClassLoaderObjectInputStream does not handle Proxy classes |
| </action> |
| <action type="update" issue="IO-259"> |
| FileAlterationMonitor.stop(boolean allowIntervalToFinish) |
| </action> |
| <action type="add" issue="IO-182"> |
| Add new APPEND parameter for writing string into files |
| </action> |
| <action dev="sebb" type="fix" issue="IO-274" due-to="Frank Grimes"> |
| Tailer returning partial lines when reaching EOF before EOL |
| </action> |
| <action dev="sebb" type="fix" issue="IO-266" due-to="Igor Smereka"> |
| FileUtils.copyFile() throws IOException when copying large files to a shared directory (on Windows) |
| </action> |
| <action dev="sebb" type="fix" issue="IO-263" due-to="Gil Adam"> |
| FileSystemUtils.freeSpaceKb throws exception for Windows volumes with no visible files. |
| Improve coverage by also looking for hidden files. |
| </action> |
| <action dev="sebb" type="add" issue="IO-251" due-to="Marco Albini"> |
| Add new read method "toByteArray" to handle InputStream with known size. |
| </action> |
| </release> |
| |
| <release version="2.0.1" date="2010-Dec-26"> |
| <action type="update"> |
| TODO: Convert RELEASE-NOTES.txt from 2.0.1? |
| </action> |
| </release> |
| |
| <release version="2.0" date="2010-Oct-18"> |
| <action type="update"> |
| TODO: Convert RELEASE-NOTES.txt from 2.0? |
| </action> |
| </release> |
| |
| <release version="1.4" date="2008-Jan-21"> |
| <action type="update"> |
| TODO: Convert RELEASE-NOTES.txt from 1.4? |
| </action> |
| </release> |
| |
| <release version="1.3.2" date="2007-Jul-02" description="Bug fixes."> |
| <action dev="jochen" type="fix" issue="IO-115"> |
| Some tests, which are implicitly assuming a Unix-like file |
| system, are now skipped on Windows. |
| </action> |
| <action dev="jochen" type="fix" issue="IO-116"> |
| Created the FileCleaningTracker, basically a non-static |
| version of the FileCleaner, which can be controlled by |
| the user. |
| </action> |
| <action dev="bayard" type="fix" issue="IO-117" due-to="Hiroshi Ikeda"> |
| EndianUtils - both readSwappedUnsignedInteger(...) methods could |
| return negative numbers due to int/long casting. |
| </action> |
| </release> |
| </body> |
| </document> |