xref: /aosp_15_r20/external/apache-commons-io/src/site/xdoc/upgradeto2_0.xml (revision 0c4d7b72e49a04598d65c566f44504b95342d75a)
1*0c4d7b72SSadaf Ebrahimi<?xml version="1.0"?>
2*0c4d7b72SSadaf Ebrahimi<!--
3*0c4d7b72SSadaf EbrahimiLicensed to the Apache Software Foundation (ASF) under one or more
4*0c4d7b72SSadaf Ebrahimicontributor license agreements.  See the NOTICE file distributed with
5*0c4d7b72SSadaf Ebrahimithis work for additional information regarding copyright ownership.
6*0c4d7b72SSadaf EbrahimiThe ASF licenses this file to You under the Apache License, Version 2.0
7*0c4d7b72SSadaf Ebrahimi(the "License"); you may not use this file except in compliance with
8*0c4d7b72SSadaf Ebrahimithe License.  You may obtain a copy of the License at
9*0c4d7b72SSadaf Ebrahimi
10*0c4d7b72SSadaf Ebrahimi     http://www.apache.org/licenses/LICENSE-2.0
11*0c4d7b72SSadaf Ebrahimi
12*0c4d7b72SSadaf EbrahimiUnless required by applicable law or agreed to in writing, software
13*0c4d7b72SSadaf Ebrahimidistributed under the License is distributed on an "AS IS" BASIS,
14*0c4d7b72SSadaf EbrahimiWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*0c4d7b72SSadaf EbrahimiSee the License for the specific language governing permissions and
16*0c4d7b72SSadaf Ebrahimilimitations under the License.
17*0c4d7b72SSadaf Ebrahimi-->
18*0c4d7b72SSadaf Ebrahimi<document>
19*0c4d7b72SSadaf Ebrahimi <properties>
20*0c4d7b72SSadaf Ebrahimi  <title>Upgrade from 1.4 to 2.0</title>
21*0c4d7b72SSadaf Ebrahimi  <author email="[email protected]">Commons Documentation Team</author>
22*0c4d7b72SSadaf Ebrahimi </properties>
23*0c4d7b72SSadaf Ebrahimi<body>
24*0c4d7b72SSadaf Ebrahimi
25*0c4d7b72SSadaf Ebrahimi<section name="Upgrade">
26*0c4d7b72SSadaf Ebrahimi<p>
27*0c4d7b72SSadaf EbrahimiThese are the release notes and advice for upgrading Commons-IO from
28*0c4d7b72SSadaf Ebrahimiversion 1.4 to version 2.0.
29*0c4d7b72SSadaf Ebrahimi<source>
30*0c4d7b72SSadaf EbrahimiCommons IO is a package of Java utility classes for java.io's hierarchy.
31*0c4d7b72SSadaf EbrahimiClasses in this package are considered to be so standard and of such high
32*0c4d7b72SSadaf Ebrahimireuse as to justify existence in java.io.
33*0c4d7b72SSadaf Ebrahimi
34*0c4d7b72SSadaf EbrahimiCommons IO contains utility classes, stream implementations, file filters,
35*0c4d7b72SSadaf Ebrahimifile comparators and endian transformation classes.
36*0c4d7b72SSadaf Ebrahimi
37*0c4d7b72SSadaf Ebrahimi
38*0c4d7b72SSadaf EbrahimiCompatibility with 1.4
39*0c4d7b72SSadaf Ebrahimi----------------------
40*0c4d7b72SSadaf EbrahimiBinary compatible - Yes
41*0c4d7b72SSadaf Ebrahimi
42*0c4d7b72SSadaf EbrahimiSource compatible - Yes
43*0c4d7b72SSadaf Ebrahimi
44*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes
45*0c4d7b72SSadaf Ebrahimi  Check the bug fixes section for semantic bug fixes
46*0c4d7b72SSadaf Ebrahimi
47*0c4d7b72SSadaf EbrahimiCommons IO 2.0 requires a minimum of JDK 1.5
48*0c4d7b72SSadaf Ebrahimi (Commons IO 1.4 had a minimum of JDK 1.3)
49*0c4d7b72SSadaf Ebrahimi
50*0c4d7b72SSadaf Ebrahimi
51*0c4d7b72SSadaf EbrahimiDeprecations from 1.4
52*0c4d7b72SSadaf Ebrahimi---------------------
53*0c4d7b72SSadaf Ebrahimi
54*0c4d7b72SSadaf Ebrahimi- IOUtils
55*0c4d7b72SSadaf Ebrahimi  - write(StringBuffer, Writer) in favour of write(CharSequence, Writer)
56*0c4d7b72SSadaf Ebrahimi  - write(StringBuffer, OutputStream)  in favour of write(CharSequence, OutputStream)
57*0c4d7b72SSadaf Ebrahimi  - write(StringBuffer, OutputStream, String) in favour of write(CharSequence, OutputStream, String)
58*0c4d7b72SSadaf Ebrahimi
59*0c4d7b72SSadaf Ebrahimi- FileFilterUtils
60*0c4d7b72SSadaf Ebrahimi  - andFileFilter(IOFileFilter, IOFileFilter) in favour of and(IOFileFilter...)
61*0c4d7b72SSadaf Ebrahimi  - orFileFilter(IOFileFilter, IOFileFilter)  in favour of or(IOFileFilter...)
62*0c4d7b72SSadaf Ebrahimi
63*0c4d7b72SSadaf Ebrahimi
64*0c4d7b72SSadaf EbrahimiEnhancements from 1.4
65*0c4d7b72SSadaf Ebrahimi---------------------
66*0c4d7b72SSadaf Ebrahimi
67*0c4d7b72SSadaf Ebrahimi  * [IO-140] Move minimum Java requirement from JDK 1.3 to JDK 1.5
68*0c4d7b72SSadaf Ebrahimi             - use Generics
69*0c4d7b72SSadaf Ebrahimi             - add new CharSequence write() flavour methods to IOUtils and FileUtils
70*0c4d7b72SSadaf Ebrahimi             - replace StringBuffer with StringBuilder, where appropriate
71*0c4d7b72SSadaf Ebrahimi             - add new Reader/Writer methods to ProxyReader and ProxyWriter
72*0c4d7b72SSadaf Ebrahimi             - Annotate with @Override and @Deprecated
73*0c4d7b72SSadaf Ebrahimi
74*0c4d7b72SSadaf Ebrahimi  * [IO-178] New BOMInputStream and ByteOrderMark implementations - to detect and optionally exclude an initial Byte Order mark (BOM)
75*0c4d7b72SSadaf Ebrahimi  * [IO-197] New BoundedInputStream (copied from Apache JackRabbit)
76*0c4d7b72SSadaf Ebrahimi  * [IO-193] New Broken Input and Output streams
77*0c4d7b72SSadaf Ebrahimi  * [IO-132] New File Listener/Monitor facility
78*0c4d7b72SSadaf Ebrahimi  * [IO-158] New ReaderInputStream and WriterOutputStream implementations
79*0c4d7b72SSadaf Ebrahimi  * [IO-139] New StringBuilder Writer implementation
80*0c4d7b72SSadaf Ebrahimi  * [IO-192] New Tagged Input and Output streams
81*0c4d7b72SSadaf Ebrahimi  * [IO-177] New Tailer class - simple implementation of the Unix "tail -f" functionality
82*0c4d7b72SSadaf Ebrahimi  * [IO-162] New XML Stream Reader/Writer implementations (from ROME via plexus-utils)
83*0c4d7b72SSadaf Ebrahimi
84*0c4d7b72SSadaf Ebrahimi  * [IO-142] Comparators - add facility to sort file lists/arrays
85*0c4d7b72SSadaf Ebrahimi  * [IO-186] Comparators - new Composite and Directory File Comparator implementations
86*0c4d7b72SSadaf Ebrahimi  * [IO-176] DirectoryWalker - add filterDirectoryContents() callback method for filtering directory contents
87*0c4d7b72SSadaf Ebrahimi  * [IO-210] FileFilter - new Magic Number FileFilter
88*0c4d7b72SSadaf Ebrahimi  * [IO-221] FileFilterUtils - add methods for suffix and prefix filters which take an IOCase object
89*0c4d7b72SSadaf Ebrahimi  * [IO-232] FileFilterUtils - add method for name filters which take an IOCase object
90*0c4d7b72SSadaf Ebrahimi  * [IO-229] FileFilterUtils - add varargs and() and or() methods
91*0c4d7b72SSadaf Ebrahimi  * [IO-198] FileFilterUtils - add ability to apply file filters to collections and arrays
92*0c4d7b72SSadaf Ebrahimi  * [IO-156] FilenameUtils - add normalize() and normalizeNoEndSeparator() methods which allow the separator character to be specified
93*0c4d7b72SSadaf Ebrahimi  * [IO-194] FileSystemUtils - add freeSpaceKb() method with no input arguments
94*0c4d7b72SSadaf Ebrahimi  * [IO-185] FileSystemUtils - add freeSpaceKb() methods that take a timeout parameter - fixes freeSpaceWindows() blocks
95*0c4d7b72SSadaf Ebrahimi  * [IO-155] FileUtils - use NIO to copy files
96*0c4d7b72SSadaf Ebrahimi  * [IO-168] FileUtils - add new isSymlink() method
97*0c4d7b72SSadaf Ebrahimi  * [IO-219] FileUtils - throw FileExistsException when moving a file or directory if the destination already exists
98*0c4d7b72SSadaf Ebrahimi  * [IO-234] FileUtils - add Methods for retrieving System User/Temp directories/paths
99*0c4d7b72SSadaf Ebrahimi  * [IO-208] FileUtils - add timeout (connection and read) support for copyURLToFile() method
100*0c4d7b72SSadaf Ebrahimi  * [IO-238] FileUtils - add sizeOf(File) method
101*0c4d7b72SSadaf Ebrahimi  * [IO-181] LineIterator now implements Iterable
102*0c4d7b72SSadaf Ebrahimi  * [IO-224] IOUtils - add closeQuietly(Closeable) and closeQuietly(Socket) methods
103*0c4d7b72SSadaf Ebrahimi  * [IO-203] IOUtils - add skipFully() method for InputStreams
104*0c4d7b72SSadaf Ebrahimi  * [IO-137] IOUtils and ByteArrayOutputStream - add toBufferedInputStream() method to avoid unnecessary array allocation/copy
105*0c4d7b72SSadaf Ebrahimi  * [IO-195] Proxy streams/Reader/Writer - provide exception handling methods
106*0c4d7b72SSadaf Ebrahimi  * [IO-211] Proxy Input/Output streams - add pre/post processing support
107*0c4d7b72SSadaf Ebrahimi  * [IO-242] Proxy Reader/Writer - add pre/post processing support
108*0c4d7b72SSadaf Ebrahimi
109*0c4d7b72SSadaf Ebrahimi
110*0c4d7b72SSadaf EbrahimiBug fixes from 1.4
111*0c4d7b72SSadaf Ebrahimi------------------
112*0c4d7b72SSadaf Ebrahimi  * [IO-214] ByteArrayOutputStream - fix inconsistent synchronization of fields
113*0c4d7b72SSadaf Ebrahimi  * [IO-201] Counting Input/Output streams - fix inconsistent synchronization
114*0c4d7b72SSadaf Ebrahimi  * [IO-159] FileCleaningTracker - fix remove() never returns null
115*0c4d7b72SSadaf Ebrahimi  * [IO-220] FileCleaningTracker - fix Vector performs badly under load
116*0c4d7b72SSadaf Ebrahimi  * [IO-167] FilenameUtils - fix case-insensitive string handling in FilenameUtils and FilesystemUtils
117*0c4d7b72SSadaf Ebrahimi  * [IO-179] FilenameUtils - fix StringIndexOutOfBounds exception in getPathNoEndSeparator()
118*0c4d7b72SSadaf Ebrahimi  * [IO-248] FilenameUtils - fix getFullPathNoEndSeparator() returns empty while path is a one level directory
119*0c4d7b72SSadaf Ebrahimi  * [IO-246] FilenameUtils - fix wildcardMatch gives incorrect results
120*0c4d7b72SSadaf Ebrahimi  * [IO-187] FileSystemUtils - fix freeSpaceKb() doesn't work with relative paths on Linux
121*0c4d7b72SSadaf Ebrahimi  * [IO-160] FileSystemUtils - fix freeSpace() fails on solaris
122*0c4d7b72SSadaf Ebrahimi  * [IO-209] FileSystemUtils - fix freeSpaceKb() fails to return correct size for a windows mount point
123*0c4d7b72SSadaf Ebrahimi  * [IO-163] FileUtils - fix toURLs() using deprecated method of conversion to URL
124*0c4d7b72SSadaf Ebrahimi  * [IO-168] FileUtils - fix Symbolic links followed when deleting directory
125*0c4d7b72SSadaf Ebrahimi  * [IO-231] FileUtils - fix wrong exception message generated in isFileNewer() method
126*0c4d7b72SSadaf Ebrahimi  * [IO-207] FileUtils - fix race condition in forceMkdir() method
127*0c4d7b72SSadaf Ebrahimi  * [IO-217] FileUtils - fix copyDirectoryToDirectory() makes infinite loops
128*0c4d7b72SSadaf Ebrahimi  * [IO-166] FileUtils - fix URL decoding in toFile(URL)
129*0c4d7b72SSadaf Ebrahimi  * [IO-190] FileUtils - fix copyDirectory not preserving lastmodified date on subdirectories
130*0c4d7b72SSadaf Ebrahimi  * [IO-240] FileFilterUtils - ensure cvsFilter and svnFilter are only created once.
131*0c4d7b72SSadaf Ebrahimi  * [IO-175] IOUtils - fix copyFile() issues with very large files
132*0c4d7b72SSadaf Ebrahimi  * [IO-191] Improvements from static analysis
133*0c4d7b72SSadaf Ebrahimi  * [IO-216] LockableFileWriter - delete files quietly when an exception is thrown during initialization
134*0c4d7b72SSadaf Ebrahimi  * [IO-243] SwappedDataInputStream - fix readBoolean is inverted
135*0c4d7b72SSadaf Ebrahimi  * [IO-235] Tests - remove unused YellOnFlushAndCloseOutputStream from CopyUtilsTest
136*0c4d7b72SSadaf Ebrahimi  * [IO-161] Tests - fix FileCleaningTrackerTestCase hanging
137*0c4d7b72SSadaf Ebrahimi
138*0c4d7b72SSadaf Ebrahimi
139*0c4d7b72SSadaf EbrahimiDocumentation changes from 1.4
140*0c4d7b72SSadaf Ebrahimi------------------------------
141*0c4d7b72SSadaf Ebrahimi  * [IO-183 FilenameUtils.getExtension() method documentation improvements
142*0c4d7b72SSadaf Ebrahimi  * [IO-226 FileUtils.byteCountToDisplaySize() documentation corrections
143*0c4d7b72SSadaf Ebrahimi  * [IO-205 FileUtils.forceMkdir() documentation improvements
144*0c4d7b72SSadaf Ebrahimi  * [IO-215 FileUtils copy file/directory improve documentation regarding preserving the last modified date
145*0c4d7b72SSadaf Ebrahimi  * [IO-189 HexDump.dump() method documentation improvements
146*0c4d7b72SSadaf Ebrahimi  * [IO-171 IOCase document that it assumes there are only two OSes: Windows and Unix
147*0c4d7b72SSadaf Ebrahimi  * [IO-223 IOUtils.copy() documentation corrections
148*0c4d7b72SSadaf Ebrahimi  * [IO-247 IOUtils.closeQuietly() improve documentation with examples
149*0c4d7b72SSadaf Ebrahimi  * [IO-202 NotFileFilter documentation corrections
150*0c4d7b72SSadaf Ebrahimi  * [IO-206 ProxyInputStream - fix misleading parameter names
151*0c4d7b72SSadaf Ebrahimi  * [IO-212 ProxyInputStream.skip() documentation corrections
152*0c4d7b72SSadaf Ebrahimi</source>
153*0c4d7b72SSadaf Ebrahimi</p>
154*0c4d7b72SSadaf Ebrahimi</section>
155*0c4d7b72SSadaf Ebrahimi
156*0c4d7b72SSadaf Ebrahimi</body>
157*0c4d7b72SSadaf Ebrahimi</document>
158