-
Notifications
You must be signed in to change notification settings - Fork 670
/
RELEASE-NOTES.txt
2441 lines (1921 loc) · 126 KB
/
RELEASE-NOTES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Apache Commons IO 2.18.0 Release Notes
Introduction
------------
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Version 2.18.0: Java 8 is required.
New features
------------
o Add @FunctionalInterface to ClassNameMatcher. Thanks to Gary Gregory.
o Add ValidatingObjectInputStream.Builder and ValidatingObjectInputStream.builder(). Thanks to Gary Gregory.
o Add a "Safe Deserialization" section to the User Guide for the site. Thanks to Gary Gregory.
o Add IORandomAccessFile. Thanks to Gary Gregory.
o Add RandomAccessFileMode.io(String). Thanks to Gary Gregory.
o Add FileAlterationObserver.Builder() and deprecate most constructors. Thanks to Gary Gregory.
o Add IOUtils.readLines(CharSequence). Thanks to Gary Gregory.
o Add ValidatingObjectInputStream.ObjectStreamClassPredicate to allow configuration reuse. Thanks to Gary Gregory.
o Add RandomAccessFileMode.accept(Path, IOConsumer<RandomAccessFile>). Thanks to Gary Gregory.
o Add RandomAccessFileMode.apply(Path, IOFunction<RandomAccessFile>, T). Thanks to Gary Gregory.
o Add IOIntConsumer. Thanks to Gary Gregory.
o IO-861: Add ProxyInputStream.AbstractBuilder. Supports setting a consumer for ProxyInputStream.afterRead(int). Thanks to Gary Gregory.
o Add support to AutoCloseInputStream for setting a consumer for ProxyInputStream.afterRead(int). Thanks to Gary Gregory.
o Add support to BOMInputStream for setting a consumer for ProxyInputStream.afterRead(int). Thanks to Gary Gregory.
o IO-861: Add support to BoundedInputStream for setting a consumer for ProxyInputStream.afterRead(int). Thanks to Gary Gregory.
o IO-861: Add support to BoundedInputStream for setting a consumer for BoundedInputStream.onMaxLength(long, long). Thanks to Gary Gregory.
o Add support to ChecksumInputStream for setting a consumer for ProxyInputStream.afterRead(int). Thanks to Gary Gregory.
o Add support to ThrottledInputStream for setting a consumer for ProxyInputStream.afterRead(int). Thanks to Gary Gregory.
o Add support to ObservableInputStream for setting a consumer for ProxyInputStream.afterRead(int). Thanks to Gary Gregory.
o Add support to MessageDigestCalculatingInputStream for setting a consumer for ProxyInputStream.afterRead(int). Thanks to Gary Gregory.
o Add support to MessageDigestInputStream for setting a consumer for ProxyInputStream.afterRead(int). Thanks to Gary Gregory.
Fixed Bugs
----------
o Clean ups in unit tests. Thanks to Gary Gregory.
o Fix some Javadoc issues. Thanks to Gary Gregory.
o RandomAccessFileMode.toString() is more helpful for debugging when it inherits from Enum. Thanks to Gary Gregory.
o Fix implicit narrowing conversion in compound assignment in UnsynchronizedBufferedReader.skip(long). Thanks to Gary Gregory.
o IO-860: Missing reserved file names in FileSystem.WINDOWS (superscript digits for COM and LPT). Thanks to Stefan Feenstra, Gary Gregory.
o IO-856: FileUtils.listFiles(final File, String[], boolean) can throw NoSuchFileException #697, #699. Thanks to Thomas Hartwig, Gary Gregory.
o IO-859: FileUtils.forceDelete on non-existent file on Windows throws IOException rather than FileNotFoundException. Thanks to JD Dean, Gary Gregory.
o Use Unicode escapes for superscript characters. #701. Thanks to Éamonn McManus.
o IO-863: Recent incompatible change to FileUtils.listFiles re extensions, see also IO-856. Thanks to Éamonn McManus, Gary Gregory.
o IO-857: Javadoc: Update details for PathUtils "clean" behavior. Thanks to Dmitry, Gary Gregory.
Changes
-------
o Bump org.apache.commons:commons-parent from 74 to 78 #670, #676, #679, #688. Thanks to Gary Gregory.
o Bump commons.bytebuddy.version from 1.15.1 to 1.15.10 #672, #673, #685, #686, #694, #696, #698. Thanks to Gary Gregory.
o Update AbstractStreamBuilder getters from protected to public. Thanks to Gary Gregory.
Commons IO 2.7 and up requires Java 8 or above.
Commons IO 2.6 requires Java 7 or above.
Commons IO 2.3 through 2.5 requires Java 6 or above.
Commons IO 2.2 requires Java 5 or above.
Commons IO 1.4 requires Java 1.3 or above.
Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
For complete information on Apache Commons IO, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons IO website:
https://commons.apache.org/proper/commons-io/
Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
Have fun!
-Apache Commons Team
------------------------------------------------------------------------------
Apache Commons IO 2.17.0 Release Notes
Introduction
------------
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Java 8 is required.
New features
------------
o Add IOIterator.adapt(Iterable). Thanks to Gary Gregory.
o IO-831: Add getInputStream() for 'https' and 'http' in URIOrigin #630. Thanks to Elliotte Rusty Harold, Thach Le, Gary Gregory.
o Add IOSupplier.getUnchecked(). Thanks to Gary Gregory.
o Add CloseShieldInputStream.systemIn(InputStream). Thanks to Gary Gregory.
o Add NullInputStream.init(). Thanks to Gary Gregory.
o Add AbstractInputStream and refactor duplicate code. Thanks to Gary Gregory.
o Add UnsynchronizedReader. Thanks to Gary Gregory.
o Add UnsynchronizedBufferedReader. Thanks to Gary Gregory.
Fixed Bugs
----------
o IO-858: FileUtilsWaitForTest does not test anything useful.
o Add missing unit tests. Thanks to Gary Gregory.
o FileUtils.lastModifiedFileTime(File) calls Objects.requireNonNull() on the wrong object. Thanks to Gary Gregory.
o PathUtils.deleteOnExit(Path) calls Objects.requireNonNull() on the wrong object. Thanks to Gary Gregory.
o Deprecate LineIterator.nextLine() in favor of next(). Thanks to Gary Gregory.
o Fix PMD UnnecessaryFullyQualifiedName. Thanks to Gary Gregory.
o Add test for CircularByteBuffer clear() #620. Thanks to sullis.
o PathUtils.isPosix(Path, LinkOption...) should return false on null input. Thanks to Gary Gregory.
o AutoCloseInputStream(InputStream) uses ClosedInputStream.INSTANCE when its input is null. Thanks to Gary Gregory.
o Avoid NullPointerException in ProxyInputStream.available() when the underlying input stream is null. Thanks to Gary Gregory.
o Avoid NullPointerException in ProxyInputStream.markSupported() when the underlying input stream is null. Thanks to Gary Gregory.
o Avoid NullPointerException in ProxyInputStream.mark(int) when the underlying input stream is null. Thanks to Gary Gregory.
o BufferedFileChannelInputStream.available() returns 0 before any reads. Thanks to Gary Gregory.
o BufferedFileChannelInputStream.available() should return 0 instead of -1 at the end of the stream. Thanks to Gary Gregory.
o BufferedFileChannelInputStream.available() should return 0 when the stream is closed instead of throwing an exception. Thanks to Gary Gregory.
o CharSequenceInputStream.available() should return 0 after the stream is closed. Thanks to Gary Gregory.
o BoundedInputStream.available() should return 0 when the stream is closed. Thanks to Gary Gregory.
o CircularInputStream.available() should return 0 when the stream is closed. Thanks to Gary Gregory.
o InfiniteCircularInputStream.available() should return 0 when the stream is closed. Thanks to Gary Gregory.
o ChecksumInputStream(InputStream, Checksum, long, long) should fail-fast on null Checksum input. Thanks to Gary Gregory.
o Deprecate NullInputStream.INSTANCE in favor of constructors. Thanks to Gary Gregory.
o NullInputStream.available() should return 0 after the stream is closed. Thanks to Gary Gregory.
o MemoryMappedFileInputStream.available() should return 0 after the stream is closed. Thanks to Gary Gregory.
o RandomAccessFileInputStream.available() should return 0 after the stream is closed. Thanks to Gary Gregory.
o ReaderInputStream.available() should return 0 after the stream is closed. Thanks to Gary Gregory.
o AutoCloseInputStream does not call handleIOException() on close() when the proxied stream throws an IOException. Thanks to Gary Gregory.
o BoundedInputStream does not call handleIOException() on close() when the proxied stream throws an IOException. Thanks to Gary Gregory.
o NullInputStream.read(*) should throw IOException when it is closed. Thanks to Gary Gregory.
o NullInputStream.read(byte[]) should return 0 when the input byte array in length 0. Thanks to Gary Gregory.
o NullInputStream.read(byte[], int, int) should return 0 when the input byte array in length 0 or requested length is 0. Thanks to Gary Gregory.
o MarkShieldInputStream.read(*) should throw IOException when it is closed. Thanks to Gary Gregory.
o Replace deprecated constant FileFileFilter.FILE in Javadoc #657. Thanks to aelaort.
o Pick up exec-maven-plugin version from parent POM. Thanks to Gary Gregory.
Changes
-------
o Bump tests commons.bytebuddy.version from 1.14.13 to 1.15.1 #615, #621, #631, #635, #642, #658, #663, #665. Thanks to Dependabot.
o Bump tests commons-codec:commons-codec from 1.16.1 to 1.17.1 #644. Thanks to Dependabot.
o Bump org.codehaus.mojo:exec-maven-plugin from 3.2.0 to 3.4.1 #632, #652, #659. Thanks to Dependabot.
o Bump org.apache.commons:commons-parent from 69 to 74 #628, #637, #649, #661, #664. Thanks to Dependabot.
o Bump org.apache.commons:commons-lang3 from 3.14.0 to 3.17.0 #645, #653, #666. Thanks to Dependabot.
Commons IO 2.7 and up requires Java 8 or above.
Commons IO 2.6 requires Java 7 or above.
Commons IO 2.3 through 2.5 requires Java 6 or above.
Commons IO 2.2 requires Java 5 or above.
Commons IO 1.4 requires Java 1.3 or above.
Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
For complete information on Apache Commons IO, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons IO website:
https://commons.apache.org/proper/commons-io/
Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
Have fun!
-Apache Commons Team
------------------------------------------------------------------------------
Apache Commons IO 2.16.1 Release Notes
Introduction
------------
Commons IO is a package of Java utility classes like java.io.
Classes in this package are considered to be so standard and of such high
reuse as to justify existence in java.io.
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Java 8 is required.
Fixed Bugs
----------
o Reimplement FileSystemUtils using NIO. Thanks to Gary Gregory.
o IO-851: FileSystemUtils no longer throws IllegalStateException. Thanks to Sebb, Gary Gregory.
o Avoid possible NullPointerException in FileUtils.listAccumulate(File, IOFileFilter, IOFileFilter, FileVisitOption...). Thanks to Gary Gregory.
o IO-853: BoundedInputStream.reset() not updating count. Thanks to Mike Drob, Gary Gregory.
o ThresholdingOutputStream: a negative threshold should behave like a zero threshold and trigger the event on the first write #609. Thanks to rproserpio, Gary Gregory.
Changes
-------
o Bump commons.bytebuddy.version from 1.14.12 to 1.14.13 #605. Thanks to Gary Gregory.
o Bump org.apache.commons:commons-parent from 67 to 69 #608. Thanks to Gary Gregory, Dependabot.
Commons IO 2.7 and up requires Java 8 or above.
Commons IO 2.6 requires Java 7 or above.
Commons IO 2.3 through 2.5 requires Java 6 or above.
Commons IO 2.2 requires Java 5 or above.
Commons IO 1.4 requires Java 1.3 or above.
Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
For complete information on Apache Commons IO, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons IO website:
https://commons.apache.org/proper/commons-io/
Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
Have fun!
-Apache Commons Team
------------------------------------------------------------------------------
Apache Commons IO 2.16.1 Release Notes
Introduction
------------
Commons IO is a package of Java utility classes like java.io.
Classes in this package are considered to be so standard and of such high
reuse as to justify existence in java.io.
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Java 8 is required.
Fixed Bugs
----------
o Reimplement FileSystemUtils using NIO. Thanks to Gary Gregory.
o IO-851: FileSystemUtils no longer throws IllegalStateException. Thanks to Sebb, Gary Gregory.
o Avoid possible NullPointerException in FileUtils.listAccumulate(File, IOFileFilter, IOFileFilter, FileVisitOption...). Thanks to Gary Gregory.
o IO-853: BoundedInputStream.reset() not updating count. Thanks to Mike Drob, Gary Gregory.
Changes
-------
o Bump commons.bytebuddy.version from 1.14.12 to 1.14.13 #605. Thanks to Gary Gregory.
o Bump org.apache.commons:commons-parent from 67 to 69 #608. Thanks to Gary Gregory, Dependabot.
Commons IO 2.7 and up requires Java 8 or above.
Commons IO 2.6 requires Java 7 or above.
Commons IO 2.3 through 2.5 requires Java 6 or above.
Commons IO 2.2 requires Java 5 or above.
Commons IO 1.4 requires Java 1.3 or above.
Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
For complete information on Apache Commons IO, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons IO website:
https://commons.apache.org/proper/commons-io/
Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
Have fun!
-Apache Commons Team
------------------------------------------------------------------------------
Apache Commons IO 2.16.0 Release Notes
Introduction
------------
Commons IO is a package of Java utility classes like java.io.
Classes in this package are considered to be so standard and of such high
reuse as to justify existence in java.io.
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Java 8 is required.
New features
------------
o Add and use PathUtils.getFileName(Path, Function<Path, R>). Thanks to Gary Gregory.
o Add and use PathUtils.getFileNameString(). Thanks to Gary Gregory.
o Make public Erase.rethrow(Throwable). Thanks to Gary Gregory.
o IO-826: Add BrokenInputStream.BrokenInputStream(Throwable). Thanks to markslater, Gary Gregory.
o IO-826: Add BrokenReader.BrokenReader(Throwable). Thanks to markslater, Gary Gregory.
o IO-826: Add BrokenOutputStream.BrokenOutputStream(Throwable). Thanks to markslater, Gary Gregory.
o IO-826: Add BrokenWriter.BrokenWriter(Throwable). Thanks to markslater, Gary Gregory.
o Add BoundedInputStream.getRemaining(). Thanks to Gary Gregory.
o Add FileTimes.toNtfsTime(long). Thanks to Gary Gregory.
o Add FileTimes.fromUnixTime(long). Thanks to Gary Gregory.
o Add FileTimes.isUnixTime(FileTime). Thanks to Gary Gregory.
o Add FileTimes.isUnixTime(long). Thanks to Gary Gregory.
o Add FileTimes.toUnixTime(FileTime). Thanks to Gary Gregory.
o Add BrokenInputStream.Builder. Thanks to Gary Gregory.
o Add PathUtils.getExtension(Path). Thanks to Gary Gregory.
o Add PathUtils.getBaseName(Path). Thanks to Gary Gregory.
o Add ThrottledInputStream. Thanks to Gary Gregory.
o Add IORunnable.noop(). Thanks to Gary Gregory.
o Add ChecksumInputStream and test #548. Thanks to Gary Gregory.
o Add AbstractStreamBuilder.getReader(). Thanks to Gary Gregory.
o Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory.
o Add ProxyInputStream.unwrap(). Thanks to Gary Gregory.
o Add a running count and builder to BoundedInputStream. Thanks to Gary Gregory.
Fixed Bugs
----------
o Fix and re-enable testSkip_RequiredCharsets #518. Thanks to Elliotte Rusty Harold.
o IO-824: SymbolicLineFileFilter documentation fixes. Thanks to Miguel Munoz, Gary Gregory.
o IO-795: CharSequenceInputStream.reset() only works once #520. Thanks to Miguel Munoz, Gary Gregory.
o IO-795: Finish TODO on CharSequenceInputStream #540. Thanks to Elliotte Rusty Harold.
o IO-825: Add byte array size validation for methods in EndianUtils #521. Thanks to Arthur Chan, Gary Gregory.
o IO-825: Add missing test case CircularByteBufferTest. Thanks to dkdal, Gary Gregory.
o IO-781: Make CharSequenceInputStream.available() more correct in the face of multibyte encodings #525. Thanks to Elliotte Rusty Harold.
o IO-781: Remove unreachable code in AbstractIOFileFilterTest #526. Thanks to Elliotte Rusty Harold.
o IO-808: Rationalize and unify checking for existence of files and directories #529. Thanks to Elliotte Rusty Harold.
o Avoid NullPointerException in IOCase.checkEquals(String, String) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in CanExecuteFileFilter.accept(File) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in CanExecuteFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in CanReadFileFilter.accept(File) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in CanReadFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in CanWriteFileFilter.accept(File) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in CanWriteFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in DirectoryFileFilter.accept(File) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in DirectoryFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in EmptyFileFilter.accept(File) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in EmptyFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in FileFileFilter.accept(File) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in FileFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in HiddenFileFilter.accept(File) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in HiddenFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in IOCase.checkIndexOf(String, int, String) on null input. Thanks to Gary Gregory.
o Avoid NullPointerException in IOCase.checkRegionMatches(String, int, String) on null input. Thanks to Gary Gregory.
o BoundedInputStream.getCount() should not count EOF. Thanks to Gary Gregory.
o Modernize temporary file creation and deletion in DeferredFileOutputStreamTest #535. Thanks to Elliotte Rusty Harold, Gary Gregory.
o Add PathMatcher to IOFileFilter class Javadoc #536. Thanks to Elliotte Rusty Harold.
o IO-781: Fix CharSequenceInputStream coding exception handling #537. Thanks to Marcono1234.
o IO-781: Deprecate int CountingInputStream#getCount() in favor of long CountingInputStream#getByteCount(). Thanks to Marcono1234.
o IO-828: Deprecate CountingInputStream.resetCount() in favor of resetByteCount(). Thanks to Elliotte Rusty Harold, Gary Gregory.
o IO-828: Deprecate CountingInputStream.getMaxLength() in favor of getMaxCount()). Thanks to Gary Gregory.
o IO-818: NullInputStream breaks InputStream's read method contract. Thanks to Gary Gregory.
o Javadoc shouldn't reference 1.x behavior #539. Thanks to Elliotte Rusty Harold.
o IO-829: Don't decode and reencode characters in a potentially different charset in AbstractOrigin.CharSequenceOrigin.getReader(Charset). Thanks to Elliotte Rusty Harold, Gary Gregory.
o Let subclasses of CountingInputStream.afterRead(int) throw IOException. Thanks to Gary Gregory.
o IO-807: Characterization test for broken symlinks when copying directories #547. Thanks to Elliotte Rusty Harold, Gary Gregory.
o ClosedInputStream.read(byte[], int, int) does not always return -1. Thanks to Gary Gregory.
o ClosedOutputStream.write(byte[], int, int) does not always throw IOException. Thanks to Gary Gregory.
o XmlStreamReader can't parse an XML document with a multi-line prolog #550. Thanks to Sylwester Lachiewicz, Gary Gregory.
o XmlStreamReader can't parse XML an document with an external parsed entity prolog. Thanks to Andreas Hubold, Gary Gregory.
o IO-836: Update FileNameUtils Javadoc #554. Thanks to Elliotte Rusty Harold.
o IO-807: Copy symlinks, not the files the symlinks point to #558. Thanks to Jordi Sola, Elliotte Rusty Harold.
o Pickup apache-rat-plugin version from parent POM. Thanks to Gary Gregory.
o Add test for copying a symlink FileUtilsTest#testCopyFile_symLink() #564. Thanks to Elliotte Rusty Harold.
o Make copyFile copy symbolic links by value rather than reference #565. Thanks to Elliotte Rusty Harold.
o Deprecate CopyUtils 0-argument constructor. Thanks to Gary Gregory.
o IO-843: Deprecate EndianUtils 0-argument constructor. Thanks to Gary Gregory, Elliotte Rusty Harold.
o Deprecate FileSystemUtils 0-argument constructor. Thanks to Gary Gregory.
o Deprecate FilenameUtils 0-argument constructor. Thanks to Gary Gregory.
o Deprecate RandomAccessFiles 0-argument constructor. Thanks to Gary Gregory.
o Clarify and correct EndianUtils and SwappedDataInputStream API doc #566. Thanks to Elliotte Rusty Harold, Gary Gregory.
o Add characterization test for copying a symlinked directory #570. Thanks to Elliotte Rusty Harold.
o RandomAccessFileInputStream.builder().get() now throws ISE instead of NPE. Thanks to Gary Gregory.
o IO-845: Test links to targets outside the source directory #571. Thanks to Elliotte Rusty Harold.
o Focus Javadoc on current version rather than past versions #573, #574. Thanks to Elliotte Rusty Harold.
o IO-469: "Self-suppression not permitted" while using BrokenOutput and BrokenInput streams with try-with-resources. Thanks to Grigory Fadeev, Kristian Rosenvold, Elliotte Rusty Harold.
o IO-405: Handle zero and negative thresholds #587. Thanks to Elliotte Rusty Harold.
o Deprecate CountingInputStream in favor of BoundedInputStream. Thanks to Gary Gregory.
o PathUtils.setPosixPermissions(...) only sets permissions if needed. Thanks to Gary Gregory.
o PathUtils.setReadOnly(...) only sets permissions if needed. Thanks to Gary Gregory.
o PathUtils.deleteFile(..., DeleteOption...) only sets permissions if needed. Thanks to Gary Gregory.
o CleaningPathVisitor only sets permissions if needed. Thanks to Gary Gregory.
o DeletingPathVisitor only sets permissions if needed. Thanks to Gary Gregory.
Changes
-------
o Bump commons.bytebuddy.version from 1.14.10 to 1.14.12 #534, #592. Thanks to Gary Gregory.
o Bump org.apache.commons:commons-parent from 65 to 67. Thanks to Gary Gregory.
o Bump commons-codec:commons-codec from 1.16.0 to 1.16.1 #583. Thanks to Dependabot.
o Bump org.codehaus.mojo:exec-maven-plugin from 3.1.1 to 3.2.0 #593. Thanks to Dependabot.
Commons IO 2.7 and up requires Java 8 or above.
Commons IO 2.6 requires Java 7 or above.
Commons IO 2.3 through 2.5 requires Java 6 or above.
Commons IO 2.2 requires Java 5 or above.
Commons IO 1.4 requires Java 1.3 or above.
Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
For complete information on Apache Commons IO, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons IO website:
https://commons.apache.org/proper/commons-io/
Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
Have fun!
-Apache Commons Team
------------------------------------------------------------------------------
Apache Commons IO
Version 2.15.1
Release Notes
Introduction
------------
Commons IO is a package of Java utility classes like java.io.
Classes in this package are considered to be so standard and of such high
reuse as to justify existence in java.io.
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Java 8 is required.
Fixed Bugs
----------
* Fix wrong issue id in change log #503. Thanks to Gregor Dschung.
* Add test for FileChannels.contentEquals() #509. Thanks to Stephan Markwalder, Gary Gregory.
* Fix FileChannels.contentEquals(). Thanks to Gary Gregory.
* Fix some Javadoc issues in LineIterator and IOUtils. Thanks to Gary Gregory.
* Simplify FileAlterationObserver internal processing. Thanks to Gary Gregory.
* Avoid NullPointerException in RegexFileFilter.RegexFileFilter(Pattern). Thanks to Gary Gregory.
* Avoid NullPointerException in RegexFileFilter.accept(Path, BasicFileAttributes). Thanks to Gary Gregory.
* Fix SpotBugs error: Class org.apache.commons.io.filefilter.RegexFileFilter defines non-transient non-serializable instance field pathToString [org.apache.commons.io.filefilter.RegexFileFilter] In RegexFileFilter.java SE_BAD_FIELD. Thanks to Gary Gregory.
* Fix SpotBugs error: Class org.apache.commons.io.filefilter.DelegateFileFilter defines non-transient non-serializable instance field fileFilter [org.apache.commons.io.filefilter.DelegateFileFilter] In DelegateFileFilter.java SE_BAD_FIELD. Thanks to Gary Gregory.
* Fix SpotBugs error: Class org.apache.commons.io.filefilter.DelegateFileFilter defines non-transient non-serializable instance field fileNameFilter [org.apache.commons.io.filefilter.DelegateFileFilter] In DelegateFileFilter.java SE_BAD_FIELD. Thanks to Gary Gregory.
* Fix SpotBugs error: org.apache.commons.io.function.IOStream$1.next() cannot throw NoSuchElementException [org.apache.commons.io.function.IOStream$1] At IOStream.java:[line 98] IT_NO_SUCH_ELEMENT. Thanks to Gary Gregory.
* Fix SpotBugs error: org.apache.commons.io.monitor.FileAlterationMonitor.getObservers() may expose internal representation by returning FileAlterationMonitor.observers [org.apache.commons.io.monitor.FileAlterationMonitor] At FileAlterationMonitor.java:[line 124] EI_EXPOSE_REP. Thanks to Gary Gregory.
* Fix SpotBugs error: Class org.apache.commons.io.monitor.FileAlterationObserver defines non-transient non-serializable instance field fileFilter [org.apache.commons.io.monitor.FileAlterationObserver] In FileAlterationObserver.java SE_BAD_FIELD. Thanks to Gary Gregory.
* Fix SpotBugs error: Class org.apache.commons.io.monitor.FileAlterationObserver defines non-transient non-serializable instance field listeners [org.apache.commons.io.monitor.FileAlterationObserver] In FileAlterationObserver.java SE_BAD_FIELD. Thanks to Gary Gregory.
* Fix SpotBugs error: org.apache.commons.io.FileCleaningTracker.getDeleteFailures() may expose internal representation by returning FileCleaningTracker.deleteFailures [org.apache.commons.io.FileCleaningTracker] At FileCleaningTracker.java:[line 218] EI_EXPOSE_REP. Thanks to Gary Gregory.
* Fix SpotBugs error: org.apache.commons.io.IOExceptionList.getCauseList() may expose internal representation by returning IOExceptionList.causeList [org.apache.commons.io.IOExceptionList] At IOExceptionList.java:[line 118] EI_EXPOSE_REP. Thanks to Gary Gregory.
* Fix SpotBugs error: org.apache.commons.io.IOExceptionList.getCauseList(Class) may expose internal representation by returning IOExceptionList.causeList [org.apache.commons.io.IOExceptionList] At IOExceptionList.java:[line 129] EI_EXPOSE_REP. Thanks to Gary Gregory.
* Fix SpotBugs error: org.apache.commons.io.file.AccumulatorPathVisitor.getDirList() may expose internal representation by returning AccumulatorPathVisitor.dirList [org.apache.commons.io.file.AccumulatorPathVisitor] At AccumulatorPathVisitor.java:[line 179] EI_EXPOSE_REP. Thanks to Gary Gregory.
* Fix SpotBugs error: org.apache.commons.io.file.AccumulatorPathVisitor.getFileList() may expose internal representation by returning AccumulatorPathVisitor.fileList [org.apache.commons.io.file.AccumulatorPathVisitor] At AccumulatorPathVisitor.java:[line 188] EI_EXPOSE_REP. Thanks to Gary Gregory.
* Fix SpotBugs error: org.apache.commons.io.input.ObservableInputStream.getObservers() may expose internal representation by returning ObservableInputStream.observers [org.apache.commons.io.input.ObservableInputStream] At ObservableInputStream.java:[line 187] EI_EXPOSE_REP. Thanks to Gary Gregory.
* Fix SpotBugs error: Exception thrown in class org.apache.commons.io.input.UnsynchronizedByteArrayInputStream at new org.apache.commons.io.input.UnsynchronizedByteArrayInputStream(byte[], int) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [org.apache.commons.io.input.UnsynchronizedByteArrayInputStream, org.apache.commons.io.input.UnsynchronizedByteArrayInputStream] At UnsynchronizedByteArrayInputStream.java:[line 202]At UnsynchronizedByteArrayInputStream.java:[line 202] CT_CONSTRUCTOR_THROW. Thanks to Gary Gregory.
* Fix SpotBugs error: Exception thrown in class org.apache.commons.io.input.UnsynchronizedByteArrayInputStream at new org.apache.commons.io.input.UnsynchronizedByteArrayInputStream(byte[], int, int) will leave the constructor. The object under construction remains partially initialized and may be vulnerable to Finalizer attacks. [org.apache.commons.io.input.UnsynchronizedByteArrayInputStream, org.apache.commons.io.input.UnsynchronizedByteArrayInputStream] At UnsynchronizedByteArrayInputStream.java:[line 223]At UnsynchronizedByteArrayInputStream.java:[line 223] CT_CONSTRUCTOR_THROW. Thanks to Gary Gregory.
Changes
-------
* Bump org.codehaus.mojo:exec-maven-plugin from 3.1.0 to 3.1.1 #512. Thanks to Gary Gregory.
* Bump commons-lang3 from 3.13.0 to 3.14.0. Thanks to Gary Gregory.
* Bump commons.bytebuddy.version from 1.14.9 to 1.14.10 #516. Thanks to Dependabot.
* Bump commons-parent from 64 to 65. Thanks to Dependabot.
Compatibility with 2.6:
Binary compatible: Yes.
Source compatible: Yes.
Semantic compatible: Yes.
Commons IO 2.7 and up requires Java 8 or above.
Commons IO 2.6 requires Java 7 or above.
Commons IO 2.3 through 2.5 requires Java 6 or above.
Commons IO 2.2 requires Java 5 or above.
Commons IO 1.4 requires Java 1.3 or above.
Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
For complete information on Apache Commons IO, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons IO website:
https://commons.apache.org/proper/commons-io/
Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
Have fun!
-Apache Commons Team
------------------------------------------------------------------------------
Apache Commons IO
Version 2.15.0
Release Notes
Introduction
------------
Commons IO is a package of Java utility classes like java.io.
Classes in this package are considered to be so standard and of such high
reuse as to justify existence in java.io.
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Java 8 is required.
New features
------------
* Add org.apache.commons.io.channels.FileChannels. Thanks to Gary Gregory.
* Add RandomAccessFiles#contentEquals(RandomAccessFile, RandomAccessFile). Thanks to Gary Gregory.
* Add RandomAccessFiles#reset(RandomAccessFile). Thanks to Gary Gregory.
* Add PathUtilsContentEqualsBenchmark. Thanks to Gary Gregory.
* Add org.apache.commons.io.StreamIterator. Thanks to Gary Gregory.
* Add MessageDigestInputStream and deprecate MessageDigestCalculatingInputStream. Thanks to Gary Gregory.
Fixed Bugs
----------
* IO-815: XmlStreamReader encoding match RE is too strict. Thanks to Laurence Gonsalves.
* IO-810: Javadoc in FileUtils does not reflect code for thrown exceptions. Thanks to Gregor Dschung, Gary Gregory.
* IO-812: Javadoc should mention closing Streams based on file resources. Thanks to Adam Rauch, Gary Gregory.
* IO-811: In tests, Files.walk() direct and indirect callers fail to close the returned Stream. Thanks to Adam Rauch, Gary Gregory.
* IO-811: FileUtils.listFiles(File, String[], boolean) fails to close its internal Stream. Thanks to Adam Rauch, Gary Gregory.
* IO-811: FileUtils.iterateFiles(File, String[], boolean) fails to close its internal Stream. Thanks to Adam Rauch, Gary Gregory.
* IO-811: StreamIterator fails to close its internal Stream. Thanks to Adam Rauch, Gary Gregory.
* IO-814: Don't throw UncheckedIOException #491. Thanks to Elliotte Rusty Harold, Gary Gregory.
* IO-414: Don't write a BOM on every (or any) line #492. Thanks to Elliotte Rusty Harold, Gary Gregory.
* IO-814: RandomAccessFileMode.create(Path) provides a better NullPointerException message. Thanks to Gary Gregory.
* Improve performance of PathUtils.fileContentEquals(Path, Path, LinkOption[], OpenOption[]) by about 60%, see PathUtilsContentEqualsBenchmark. Thanks to Gary Gregory.
* Improve performance of PathUtils.fileContentEquals(Path, Path) by about 60%, see PathUtilsContentEqualsBenchmark. Thanks to Gary Gregory.
* Improve performance of FileUtils.contentEquals(File, File) by about 60%, see PathUtilsContentEqualsBenchmark. Thanks to Gary Gregory.
* Remove unused test code #494. Thanks to Elliotte Rusty Harold.
* [Javadoc] IOUtils#contentEquals does not throw NullPointerException #496. Thanks to sebbASF.
* Fix CodeQL warnings in UnsynchronizedBufferedInputStream: Implicit narrowing conversion in compound assignment. Thanks to Gary Gregory.
* MessageDigestCalculatingInputStream.MessageDigestMaintainingObserver.MessageDigestMaintainingObserver(MessageDigest) now throws a NullPointerException
if the MessageDigest is null. Thanks to Gary Gregory.
* MessageDigestCalculatingInputStream.MessageDigestCalculatingInputStream(InputStream, MessageDigest) now throws a NullPointerException
if the MessageDigest is null. Thanks to Gary Gregory.
* IO-816: UnsynchronizedBufferedInputStream.read(byte[], int, int) does not use buffer. Thanks to Andreas Loth, Gary Gregory.
Changes
-------
* Bump org.apache.commons:commons-parent from 62 to 64. Thanks to Gary Gregory.
Compatibility with 2.6:
Binary compatible: Yes.
Source compatible: Yes.
Semantic compatible: Yes.
Commons IO 2.7 and up requires Java 8 or above.
Commons IO 2.6 requires Java 7 or above.
Commons IO 2.3 through 2.5 requires Java 6 or above.
Commons IO 2.2 requires Java 5 or above.
Commons IO 1.4 requires Java 1.3 or above.
Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
For complete information on Apache Commons IO, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons IO website:
https://commons.apache.org/proper/commons-io/
Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
Have fun!
-Apache Commons Team
------------------------------------------------------------------------------
Apache Commons IO
Version 2.14.0
Release Notes
Introduction
------------
Commons IO is a package of Java utility classes like java.io.
Classes in this package are considered to be so standard and of such high
reuse as to justify existence in java.io.
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Java 8 required.
New features
------------
* Add DeferredFileOutputStream.getPath(). Thanks to Gary Gregory.
* Add FileCleaningTracker.track(Path, Object[, FileDeleteStrategy]). Thanks to Gary Gregory.
* Add IOUtils.skip[Fully](InputStream, long, Supplier<byte[]>). Thanks to Gary Gregory.
* Add FilesUncheck.find(Path, int, BiPredicate%lt;Path, BasicFileAttributes>, FileVisitOption...) Thanks to Gary Gregory.
* Add IOIntSupplier. Thanks to Gary Gregory.
* Add IOLongSupplier. Thanks to Gary Gregory.
* Add Uncheck.getAsInt(IOIntSupplier [, Supplier<String>]). Thanks to Gary Gregory.
* Add Uncheck.getAsLong(IOLongSupplier [, Supplier<String>]). Thanks to Gary Gregory.
* Add Uncheck.run(IORunnable, Supplier<String>) Thanks to Gary Gregory.
* Add Uncheck.get(IOSupplier, Supplier<String>) Thanks to Gary Gregory.
* IOFileFilter now also extends java.nio.file.PathMatcher. Thanks to Gary Gregory.
* Add PathMatcherFileFilter to adapt java.nio.file.PathMatcher. Thanks to Gary Gregory.
* Add ThresholdingOutputStream.getOutputStream() and deprecate getStream(). Thanks to Gary Gregory.
* Add DeferredFileOutputStream.Builder.setOutputFile(Path). Thanks to Gary Gregory.
* Add DeferredFileOutputStream.Builder.setDirectory(Path). Thanks to Gary Gregory.
* Add AbstractStreamBuilder.setBufferSizeChecker(IntToIntFunction). Thanks to Gary Gregory.
* Add AbstractStreamBuilder.setBufferSizeMax(int). Thanks to Gary Gregory.
Fixed Bugs
----------
* IO-799: ReaderInputStream.read() throws an exception instead of returning -1 when called again after returning -1. Thanks to Jeroen van der Vegt, Gary Gregory.
* IO-804: FileUtils.forceMkdirParent() Javadoc is incorrect. Thanks to Elliotte Rusty Harold, Gary Gregory.
* [StepSecurity] ci: Harden GitHub Actions #461. Thanks to step-security-bot, Gary Gregory.
* MagicNumberFileFilter.accept(Path, BasicFileAttributes) doesn't its byteOffset before reading. Thanks to Gary Gregory.
* Javadoc improvements. Thanks to Gary Gregory.
* Spelling #468. Thanks to Josh Soref, Gary Gregory.
* Use assertThrows #475. Thanks to Jakub Kupczyk.
Changes
-------
* Bump jimfs from 1.2 to 1.3.0 #465 (tests). Thanks to Dependabot.
* Bump commons-parent from 58 to 62. Thanks to Gary Gregory.
* Bump commons-lang3 from 3.12 to 3.13.0. Thanks to Gary Gregory.
Compatibility with 2.6:
Binary compatible: Yes.
Source compatible: Yes.
Semantic compatible: Yes.
Commons IO 2.7 and up requires Java 8 or above.
Commons IO 2.6 requires Java 7 or above.
Commons IO 2.3 through 2.5 requires Java 6 or above.
Commons IO 2.2 requires Java 5 or above.
Commons IO 1.4 requires Java 1.3 or above.
Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
For complete information on Apache Commons IO, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons IO website:
https://commons.apache.org/proper/commons-io/
Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
Have fun!
-Apache Commons Team
------------------------------------------------------------------------------
Apache Commons IO
Version 2.13.0
Release Notes
Introduction
------------
Commons IO is a package of Java utility classes like java.io.
Classes in this package are considered to be so standard and of such high
reuse as to justify existence in java.io.
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Java 8 required.
New features
------------
* Add CharSequenceInputStream.Builder. Thanks to Gary Gregory.
* Add ChunkedOutputStream.Builder. Thanks to Gary Gregory.
* Add AbstractStreamBuilder.setOpenOptions(OpenOption...). Thanks to Gary Gregory.
* Add some missing conversions to AbstractOrigin subclasses. Thanks to Gary Gregory.
* Add AbstractOrigin.getByteArray(long, int). Thanks to Gary Gregory.
* Add and use RandomAccessFiles. Thanks to Gary Gregory.
* Add AbstractOrigin.size(). Thanks to Gary Gregory.
* Add PathUtils.EMPTY_FILE_ATTRIBUTE_ARRAY. Thanks to Gary Gregory.
* Add CharSequenceInputStream.Builder.setCharsetEncoder(CharsetEncoder). Thanks to Gary Gregory.
* Add CharsetEncoders.toCharsetEncoder(CharsetEncoder, Supplier<CharsetEncoder>). Thanks to Gary Gregory.
Fixed Bugs
----------
* IO-791: Regression in FileUtils.touch() - no longer creates parent directories. Thanks to Chad Wilson, Gary Gregory.
* ByteArrayOrigin should be able convert a byte[] to a ByteArrayInputStream. Thanks to Gary Gregory.
* AbstractOriginSupplier.checkOrigin() now throws IllegalStateException instead of NullPointerException. Thanks to Gary Gregory.
* IO-796: FileAlreadyExistsException in PathUtils.createParentDirectories(Path, LinkOption, FileAttribute...). Thanks to Giacomo Boccardo, Gary Gregory.
* Only read the relevant portion of a file in AbstractOrigin.FileOrigin.getByteArray(long, int) Thanks to Gary Gregory.
* Only read the relevant portion of a file in AbstractOrigin.PathOrigin.getByteArray(long, int) Thanks to Gary Gregory.
* IO-798: DeferredFileOutputStream throws exception when system temp dir is a symlink. Thanks to Shai Shapira, Gary Gregory.
* ReaderInputStream.Builder.setCharsetEncoder(null) should reset to a default object, not throw an NPE. Thanks to Gary Gregory.
* ReaderInputStream.Builder.setCharset(null) should reset to a default object, not throw an NPE. Thanks to Gary Gregory.
Changes
-------
* Bump commons-parent from 57 to 58. Thanks to Gary Gregory, Dependabot.
Compatibility with 2.6:
Binary compatible: Yes.
Source compatible: Yes.
Semantic compatible: Yes.
Commons IO 2.7 and up requires Java 8 or above.
Commons IO 2.6 requires Java 7 or above.
Commons IO 2.3 through 2.5 requires Java 6 or above.
Commons IO 2.2 requires Java 5 or above.
Commons IO 1.4 requires Java 1.3 or above.
Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
For complete information on Apache Commons IO, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons IO website:
https://commons.apache.org/proper/commons-io/
Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
Have fun!
-Apache Commons Team
Apache Commons IO
Version 2.12.0
Release Notes
------------------------------------------------------------------------------
Introduction
------------
Commons IO is a package of Java utility classes like java.io.
Classes in this package are considered to be so standard and of such high
reuse as to justify existence in java.io.
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Java 8 required.
New features
------------
* IO-746: Drop unnecessary casts and conversions #267. Thanks to Davide Angelocola.
* Add GitHub coverage.yml. Thanks to Gary Gregory.
* Add BrokenReader.INSTANCE. Thanks to Gary Gregory.
* Add UncheckedBufferedReader. Thanks to Gary Gregory.
* Add UncheckedFilterReader. Thanks to Gary Gregory.
* Add UncheckedFilterWriter. Thanks to Gary Gregory.
* Add StringInputStream. Thanks to Gary Gregory.
* Add UncheckedFilterInputStream. Thanks to Gary Gregory.
* Add UncheckedFilterOutputStream. Thanks to Gary Gregory.
* Add BrokenInputStream.INSTANCE. Thanks to Gary Gregory.
* Add ClosedInputStream.INSTANCE and deprecate CLOSED_INPUT_STREAM. Thanks to Gary Gregory.
* Add ClosedReader.INSTANCE and deprecate CLOSED_READER. Thanks to Gary Gregory.
* Add BrokenWriter.INSTANCE. Thanks to Gary Gregory.
* Add ClosedOutputStream.INSTANCE and deprecate CLOSED_OUTPUT_STREAM. Thanks to Gary Gregory.
* Add ClosedWriter.INSTANCE and deprecate CLOSED_WRITER. Thanks to Gary Gregory.
* Add NullOutputStream.INSTANCE and deprecate NULL_OUTPUT_STREAM. Thanks to Gary Gregory.
* Add NullPrintStream.INSTANCE and deprecate NULL_PRINT_STREAM. Thanks to Gary Gregory.
* Add NullWriter.INSTANCE and deprecate NULL_WRITER. Thanks to Gary Gregory.
* Add NullInputStream.INSTANCE. Thanks to Gary Gregory.
* Add NullReader.INSTANCE. Thanks to Gary Gregory.
* Add PathUtils.readString(Path, Charset). Thanks to Gary Gregory.
* Add FileUtils.newOutputStream(File, boolean). Thanks to Gary Gregory.
* Add PathUtils.newOutputStream(Path, boolean). Thanks to Gary Gregory.
* Add UncheckedAppendable. Thanks to Gary Gregory.
* Add and reuse UncheckedIOExceptions. Thanks to Gary Gregory.
* Add PathUtils.getTempDirectory(). Thanks to Gary Gregory.
* Add FileSystem.getNameSeparator(). Thanks to Gary Gregory.
* Add FileSystem.normalizeSeparators(). Thanks to Gary Gregory.
* Add PathUtils.isNewer(Path, FileTime, LinkOption...). Thanks to Gary Gregory.
* Add PathUtils.isNewer(Path, Instant, LinkOption...). Thanks to Gary Gregory.
* Add AgeFileFilter.AgeFileFilter(Instant).
Add AgeFileFilter.AgeFileFilter(Instant, boolean). Thanks to Gary Gregory.
* Add FileUtils.lastModifiedFileTime(File). Thanks to Gary Gregory.
* Add FileTimes. Thanks to Gary Gregory.
* Add PathUtils.waitFor(Path, Duration, LinkOption...). Thanks to Gary Gregory.
* Add org.apache.commons.io.input.Tailer.getDelayDuration(). Thanks to Gary Gregory.
* Add FileUtils.current(). Thanks to Gary Gregory.
* Add and use PathUtils.setLastModifiedTime(Path) for more precision.
Add and use PathUtils.setLastModifiedTime(Path, Path) for more precision. Thanks to Gary Gregory.
* Add and use PathUtils.isNewer(Path, ChronoZonedDateTime, LinkOption...) for more precision.
Add and use PathUtils.isNewer(Path, Path) for more precision.
Add and use FileUtils.isNewer(File, FileTime) for more precision. Thanks to Gary Gregory.
* Add and use PathUtils.isOlder(Path, FileTime, LinkOption...).
Add and use PathUtils.isOlder(Path, Instant, LinkOption...).
Add and use PathUtils.isOlder(Path, long, LinkOption...).
Add and use PathUtils.isOlder(Path, Path). Thanks to Gary Gregory.
* Add and use PathUtils.sizeOf(Path).
Add and use PathUtils.sizeOfAsBigInteger(Path).
Add and use PathUtils.sizeOfDirectory(Path).
Add and use PathUtils.sizeOfDirectoryAsBigInteger(Path). Thanks to Gary Gregory.
* Add and use IOCase.value(IOCase, IOCase). Thanks to Gary Gregory.
* Add Tailer.Tailable interface to allow tailing of remote files for example using jCIFS. Thanks to Jon Freedman, Gary Gregory.
* Add and use RandomAccessFileMode. Thanks to Gary Gregory.
* Add PathUtils.writeString(Path, CharSequence, Charset, OpenOption...). Thanks to Gary Gregory.
* Add PathUtiFiles.getFileAttributeView() shorthands:
- PathUtils.getAclFileAttributeView(Path, LinkOption...)
- PathUtils.getDosFileAttributeView(Path, LinkOption...)
- PathUtils.getPosixFileAttributeView(Path, LinkOption...) Thanks to Gary Gregory.
* IO-747: Make commons-io a JPMS module by adding module-info.class.
* IO-753: Add IOUtils method to copy output stream to input stream #281. Thanks to SebastianDietrich, Gary Gregory.
* Add PathUtils.isPosix(Path, LinkOption...). #290 Thanks to Gary Gregory.
* Add PathUtils.readAttributes(Path, Class, LinkOption...). #290 Thanks to Gary Gregory.
* Add IOExceptionList.checkEmpty(List, Object). Thanks to Gary Gregory.
* Add IOBiConsumer, IOTriConsumer, IOComparator, IOUnaryOperator, IOBinaryOperator. Thanks to Gary Gregory.
* Add and reuse IOConsumer forAll(*), forEach(*), and forEachIndexed(*). Thanks to Gary Gregory.
* Add CharsetEncoders. Thanks to Gary Gregory.
* Add CharsetDecoders. Thanks to Gary Gregory.
* Add PathUtils.createParentDirectories(Path, LinkOption, FileAttribute...). Thanks to Gary Gregory.
* Update FileEntry to use FileTime instead of long for file time stamps. Thanks to Gary Gregory.
* IO-680: Add more tests for IOUtils.contentEqualsIgnoreEOL #137. Thanks to XenoAmess, sebbASF, Gary Gregory.
* Reduce boilerplate through new UncheckedIO class and friends in org.apache.commons.io.function. Thanks to Gary Gregory.
* Add PathUtils.touch(Path). Thanks to Gary Gregory.
* Add FileSystem.getIllegalFileNameCodePoints(). Thanks to Gary Gregory.
* Add FileUtils.isFileNewer(File, ChronoLocalDate, OffsetTime).
Add FileUtils.isFileNewer(File, OffsetDateTime).
Add FileUtils.isFileOlder(File, ChronoLocalDate, OffsetTime).
Add FileUtils.isFileOlder(File, OffsetDateTime). Thanks to Isira Seneviratne, Gary Gregory.
* Add IOBiConsumer.noop(). Thanks to Gary Gregory.
* Add IOUtils.closeQuietly(Iterable<Closeable>).
Add IOUtils.closeQuietly(Stream<Closeable>). Thanks to Gary Gregory.
* Add Charsets.toCharset(Charset, Charset).
Add Charsets.toCharset(String, Charset). Thanks to Gary Gregory.
* Add XmlStreamWriter(OutputStream, Charset). Thanks to Gary Gregory.
* Add PathUtils.getLastModifiedFileTime(*). Thanks to Gary Gregory.
* Add IOBiFunction, IOTriFunction, IOQuadFunction, IOPredicate, IOIterator, IOSpliterator, IOBaseStream, IOStream, FilesUncheck. Thanks to Gary Gregory.
* Add IOUtils.consume(Reader). Thanks to Gary Gregory.
* Add IOSupplier.asSupplier(). Thanks to Gary Gregory.
* Add IOFunction.asFunction(). Thanks to Gary Gregory.
* Add IOConsumer.asConsumer(). Thanks to Gary Gregory.
* Add TimestampedObserver.isClosed(). Thanks to Gary Gregory.
* IOExceptionList implements Iterable. Thanks to Gary Gregory.
* IO-784: Add support for Appendable to HexDump #418. Thanks to Fredrik Kjellberg, Gary Gregory.
* Add and use ThreadUtils. Thanks to DaGeRe, Gary Gregory.
* IO-786: Add UnsynchronizedFilterInputStream. Thanks to Gary Gregory.
* IO-786: Add UnsynchronizedBufferedInputStream. Thanks to Gary Gregory, Benoit Tellier.
* Add FileSystem.getBlockSize(). Thanks to Gary Gregory.
* Add builders and avoid creating more constructors for all permutations of current options. Thanks to Gary Gregory.
* Refactor using new Supplier API IOUtils.toString(IOSupplier<InputStream>, Charset[, IOSupplier<String>]). Thanks to Gary Gregory, maxxedev.
* Refactor using new Supplier API org.apache.commons.io.file.PathUtils.copy(IOSupplier<InputStream>, Path, CopyOption...). Thanks to Gary Gregory, maxxedev.
Fixed Bugs
----------
* IO-697: IOUtils.toByteArray size validation does not match documentation. Thanks to otter606.
* Fix Javadoc links to the JRE Javadoc 8. Thanks to Gary Gregory.
* IO-744: FileWriterWithEncoding for an existing file no longer truncates the file. #251. Thanks to RBRi, Gary Gregory.
* A null Charset or Charset name in FileWriterWithEncoding constructors uses the default Charset. Thanks to Gary Gregory.
* Fix usage of assertNotNull #269. Thanks to Davide Angelocola.
* IO-727: FilenameUtils directoryContains() should handle files with the same prefix #217. Thanks to trungPa, Gary Gregory.
* IO-748: FileUtils.moveToDirectory() exception documentation and exception message error. Thanks to Dirk Heinrichs, Gary Gregory, Elango Ravi.
* ThreadMonitor.sleep(Duration) ignores nanoseconds. Thanks to Gary Gregory.
* Fix Javadoc in ThreadMonitor#run() method. #273. Thanks to Arturo Bernal.
* IO-749: FileUtils.listFiles() does not list matching files if File parameter is a symbolic link. Thanks to haihuiyang, Gary Gregory.
* Fix typo in Javadocs for FileUtils#convertFileCollectionToFileArray() #276. Thanks to niranjanghule, Gary Gregory.
* Avoid Code Duplication: Reuse Sleep from ThreadMonitor #66. Thanks to DaGeRe, Gary Gregory.
* IO-750: FileUtils.iterateFiles also lists directories. Thanks to Sita Geßner, Sebastian Peters, Gary Gregory.
* IO-721: Wrong exception message in FileUtils.setLastModified(File, File). Thanks to Dirk Heinrichs, Gary Gregory.
* IO-717: Infinite loop in ReaderInputStream instead of throwing exception for CodingErrorAction.REPORT. Thanks to Marcono1234, Gary Gregory.
* IO-716: ReaderInputStream enter infinite loop for too small buffer sizes. Thanks to Marcono1234, Gary Gregory.
* IO-638: Infinite loop in CharSequenceInputStream.read for 4-byte characters with UTF-8 and 3-byte buffer. Thanks to Thayne McCombs, Gary Gregory.
* IO-638: PathUtils.setReadOnly(Path, boolean, LinkOption...) should add READ_* file attributes when using POSIX. Thanks to Gary Gregory.
* IO-638: PathUtils.setReadOnly(Path, boolean, LinkOption...) readOnly argument is always assumed true on POSIX. Thanks to Gary Gregory.
* IO-729: Prevent IllegalArgumentExceptions in BrokenInputStream/Reader/OutputStream/Writer #278. Thanks to Rob Spoor, Gary Gregory.
* FileUtils.copyURLToFile(URL, File, int, int) leaks its URLConnection.
Called by FileUtils.copyURLToFile(URL, File). Thanks to Gary Gregory.
* IO-714: Fixed ReaderInputStream not calling CharsetEncoder.flush issue #283. Thanks to kevinwang1975, Gary Gregory.
* Minor changes #287. Thanks to Arturo Bernal.
* IO-756: Update FileWriterWithEncoding to extend ProxyWriter #296. Thanks to wodencafe, Gary Gregory, Bruno P. Kinoshita.
* Initialize the message of an IOExceptionList to a default if null. Thanks to Gary Gregory.
* IO-751: When deleting symlinks, File/PathUtils.deleteDirectory() changes file permissions of the target. Thanks to Gary Gregory, Richard Cyganiak.
* ReaderInputStream maps null Charset, Charset name, and CharsetEncoder to the platform default instead of throwing a NullPointerException. Thanks to Gary Gregory.
* CharSequenceInputStream maps null Charset and Charset name to the platform default instead of throwing a NullPointerException. Thanks to Gary Gregory.
* WriterOutputStream maps null Charset, Charset name, and CharsetEncoder name to the platform default instead of throwing a NullPointerException. Thanks to Gary Gregory.
* FileUtils.copyURLToFile should create target parent directories and overwrite target file #319. Thanks to Chad Wilson, Gary Gregory.
* IO-484: Fix incorrect FilenameUtils Javadoc for null bytes #310. Thanks to Marcono1234, Gary Gregory.
* IO-484: Change to uppercase variable constant. #323. Thanks to Arturo Bernal.
* IO-484: IOCase.isCaseSensitive(IOCase) result is backward #325. Thanks to David Huang, Gary Gregory.
* IO-758: Deprecate PathUtils.NOFOLLOW_LINK_OPTION_ARRAY in favor of noFollowLinkOptionArray(). Thanks to Marcono1234, Gary Gregory.
* Improve ReaderInputStream documentation #291. Thanks to Marcono1234, Gary Gregory.
* Fix misleading comments in FileFilterTest #334. Thanks to richarda23.
* Add missing Javadoc for exceptions thrown for invalid arguments #339. Thanks to Diego Marcilio.
* FileFilterTest minor fixes #340. Thanks to richarda23.
* IO-764: IOUtils.write() throws OutOfMemoryError/NegativeArraySizeException while writing big strings #343. Thanks to DaGeRe, Gary Gregory.
* IO-768: Add reserved Windows file names CONIN$ and CONOUT$ to FileSystem #355. Thanks to Marcono1234, Michael Osipov.
* IO-773: RegexFileFilter is no longer Serializable. Thanks to Dominik Reinarz, Gary Gregory.
* IO-763: [Javadoc] FileFilterUtils doc does not match impl: missing some file filters. Thanks to Richard Adams, Gary Gregory.
* IO-762: FileSystem.WINDOWS.isReservedFileName doesn't check for file extension. Thanks to Leonidas Chiron, Gary Gregory.
* IO-772: Confusing Javadoc on IOUtils#resourceToURL() and other resource* methods. Thanks to Dan Ziemba, Gary Gregory.
* IO-443: FileUtils.copyFile methods throw an unnecessary "Failed to copy full contents from" exception. Thanks to Dan Ziemba, Gary Gregory.
* IO-564: Pick up Javadoc from super for override write() methods in AbstractByteArrayOutputStream and ByteArrayOutputStream. Thanks to Hao Zhong, Bernd Eckenfels, Pascal Schumacher, Gary Gregory.
* Fix minor typos #367. Thanks to Marc Wrobel.
* IO-776: Fix parameters to requireNonNull call in DeferredOutputSteam #368. Thanks to Chris Povirk.
* Fix PathUtils.copyFileToDirectory(URL,Path,CopyOption[]). Thanks to Gary Gregory.
* IO-386: FileUtils.doCopyFile uses different methods to check the file sizes. Thanks to Sebb, Bernd Eckenfels, zhipengxu, Gary Gregory.
* Fix typos #375. Thanks to Michael Ernst.
* IO-611: FilenameUtils.normalize javadoc and tests #383. Thanks to Fedor Urvanov.
* IO-611: Better docs in IOUtils and IOUtils.byteArray(int size) #374. Thanks to ArdenL-Liu, Bruno P. Kinoshita, Gary Gregory.
* IO-782: SequenceReader should close readers when its close method is called #391. Thanks to Matteo Di Giovinazzo, Gary Gregory.
* IO-790: Fix symbolic link file filter #450. Thanks to Miguel Muñoz, Gary Gregory.
* IO-790: Apply nanoseconds precision for QueueInputStream timeout duration. #453. Thanks to maxxedev, Gary Gregory, Bruno P. Kinoshita.
* Fix overflow for FileUtilsTest constants #456. Thanks to Marcono1234.
* Serialization is deprecated and will be removed in 3.0. Thanks to Gary Gregory.
* FileSystemUtils.performCommand(String[], int, Duration): Use Locale.getDefault() instead of ENGLISH. Thanks to Gary Gregory.
* IO-726: Add MemoryMappedFileInputStream #215. Thanks to shollander, Gary Gregory.
Changes
-------
* Bump actions/cache from 2.1.6 to 3.0.10 #307, #337, #393. Thanks to Dependabot, Gary Gregory.
* Bump actions/checkout from 2.3.4 to 3.1.0 #286, #298, #330, #392. Thanks to Dependabot, Gary Gregory.
* Bump actions/setup-java from 2 to 3.6.0 #346, #397. Thanks to Dependabot.
* Bump github/codeql-action from 1 to 2 #353. Thanks to Dependabot.
* Bump Maven Javadoc plugin from 3.2.0 to 3.4.1. Thanks to Dependabot, Gary Gregory.
* Bump spotbugs-maven-plugin from 4.2.3 to 4.7.3.0 #250, #259, #272, #274, #285, #288, #289, #305, #315, #326, #338, #360, #366, #370, #380, #395, #403. Thanks to Dependabot.
* Bump spotbugs from 4.5.2 to 4.7.3 #313, #317, #357, #382, #398. Thanks to Gary Gregory, Dependabot.
* Bump JUnit from 5.7.2 to 5.8.2. Thanks to Gary Gregory.
* Bump maven-enforcer-plugin from 3.0.0-M3 to 3.3.0 #255, #363, #431, #446. Thanks to Dependabot.
* Bump checkstyle from 8.44 to 9.3 #256, #257, #266, #279, #292. #308. Thanks to Dependabot, Gary Gregory.
* Bump junit-bom from 5.8.0-M1 to 5.9.1 #260, #271, #275, #309, #386. Thanks to Dependabot.
* Bump mockito-inline from 3.11.2 to 4.11.0 #262, #264, #282, #306, #314, #331, #348, #359, #381, #399, #405, #414, #420. Thanks to Dependabot, Gary Gregory.
* Bump jmh.version from 1.32 to 1.36 #258, #316, #342, #404. Thanks to Dependabot.
* Bump moditect-maven-plugin from 1.0.0.RC1 to 1.0.0.Final #280, #439, #445. Thanks to Dependabot.
* Bump junit-pioneer from 1.4.2 to 1.9.1 #304. #335, #362, #402, #406, #409. Thanks to Dependabot, Gary Gregory.
* Bump japicmp-maven-plugin from 0.15.3 to 0.16.0. Thanks to Gary Gregory.
* Bump commons-parent from 52 to 57 #388, #415, #421, #184. Thanks to Gary Gregory, Dependabot.
* Bump jacoco-maven-plugin from 0.8.7 to 0.8.8. Thanks to Gary Gregory.
* Bump maven-antrun-plugin from 3.0.0 to 3.1.0 #354. Thanks to Dependabot.
* Bump commons.surefire.version 3.0.0-M5 to 3.0.0-M7. Thanks to Gary Gregory.
* Bump PMD from 6.44.0 to 6.52.0. Thanks to Gary Gregory.
* Bump maven-pmd-plugin from 3.16.0 to 3.19.0. Thanks to Gary Gregory.
* Bump apache-rat from 0.13 to 0.14. Thanks to Gary Gregory.
* Bump exec-maven-plugin from 3.0.0 to 3.1.0 #369. Thanks to Dependabot.
* Bump maven-checkstyle-plugin from 3.1.2 to 3.2.0 #376. Thanks to Dependabot.
* Bump apache-rat-plugin from 0.14 to 0.15 #387. Thanks to Dependabot.
* Bump default buffer size for CharSequenceInputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory.
* Bump default buffer size for ChunkedOutputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory.
* Bump default buffer size for ChunkedWriter to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory.
* Bump default buffer size for ReaderInputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory.
* Bump default buffer size for WriterOutputStream to IOUtils#DEFAULT_BUFFER_SIZE. Thanks to Gary Gregory.
Compatibility with 2.6:
Binary compatible: Yes.
Source compatible: Yes.
Semantic compatible: Yes.
Commons IO 2.7 and up requires Java 8 or above.
Commons IO 2.6 requires Java 7 or above.
Commons IO 2.3 through 2.5 requires Java 6 or above.
Commons IO 2.2 requires Java 5 or above.
Commons IO 1.4 requires Java 1.3 or above.
Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
For complete information on Apache Commons IO, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons IO website:
https://commons.apache.org/proper/commons-io/
Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
Have fun!
-Apache Commons Team
------------------------------------------------------------------------------
Apache Commons IO
Version 2.11.0
Release Notes
Introduction
------------
Commons IO is a package of Java utility classes like java.io.
Classes in this package are considered to be so standard and of such high
reuse as to justify existence in java.io.
The Apache Commons IO library contains utility classes, stream implementations, file filters,
file comparators, endian transformation classes, and much more.
Java 8 required.
Fixed Bugs
----------
* IO-741: FileUtils.listFiles does not list matching files if File parameter is a symbolic link. Thanks to Zach Sherman.
* IO-724: FileUtils#deleteDirectory(File) exception Javadoc inaccurate update #245. Thanks to liran2000.
* Minor changes #243. Thanks to Arturo Bernal.
* Replace construction of FileInputStream and FileOutputStream objects with Files NIO APIs. #221. Thanks to Arturo Bernal.
* Fix IndexOutOfBoundsException in IOExceptionList constructors. Thanks to Gary Gregory.
* Remove IOException from the method signatures that no longer throw IOException.
This maintains binary compatibility but not source compatibility.
- FilenameUtils
directoryContains(String, String)
- BoundedReader
BoundedReader(java.io.Reader, int)
- IOUtils
lineIterator(java.io.InputStream, Charset)
lineIterator(java.io.InputStream, String)
toByteArray(String)
toInputStream(CharSequence, String)