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