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.0 to 1.1</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.0 to version 1.1. 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 Ebrahimiand endian transformation classes. 36*0c4d7b72SSadaf Ebrahimi 37*0c4d7b72SSadaf Ebrahimi 38*0c4d7b72SSadaf EbrahimiIncompatible changes from 1.0 39*0c4d7b72SSadaf Ebrahimi----------------------------- 40*0c4d7b72SSadaf EbrahimiBinary compatible - Yes 41*0c4d7b72SSadaf Ebrahimi 42*0c4d7b72SSadaf EbrahimiSource compatible - Yes 43*0c4d7b72SSadaf Ebrahimi 44*0c4d7b72SSadaf EbrahimiSemantic compatible - Yes, except: 45*0c4d7b72SSadaf Ebrahimi- FileUtils.writeStringToFile() 46*0c4d7b72SSadaf Ebrahimi A null encoding previously used 'ISO-8859-1', now it uses the platform default 47*0c4d7b72SSadaf Ebrahimi Generally this will make no difference 48*0c4d7b72SSadaf Ebrahimi 49*0c4d7b72SSadaf Ebrahimi- LockableFileWriter 50*0c4d7b72SSadaf Ebrahimi Improved validation and now create directories if necessary 51*0c4d7b72SSadaf Ebrahimi 52*0c4d7b72SSadaf Ebrahimiplus these bug fixes may affect you semantically: 53*0c4d7b72SSadaf Ebrahimi- FileUtils.touch() (Bug fix 29821) 54*0c4d7b72SSadaf Ebrahimi Now creates the file if it did not previously exist 55*0c4d7b72SSadaf Ebrahimi 56*0c4d7b72SSadaf Ebrahimi- FileUtils.toFile(URL) (Bug fix 32575) 57*0c4d7b72SSadaf Ebrahimi Now handles escape syntax such as %20 58*0c4d7b72SSadaf Ebrahimi 59*0c4d7b72SSadaf Ebrahimi- FileUtils.sizeOfDirectory() (Bug fix 36801) 60*0c4d7b72SSadaf Ebrahimi May now return a size of 0 if the directory is security restricted 61*0c4d7b72SSadaf Ebrahimi 62*0c4d7b72SSadaf Ebrahimi 63*0c4d7b72SSadaf EbrahimiDeprecations from 1.0 64*0c4d7b72SSadaf Ebrahimi--------------------- 65*0c4d7b72SSadaf Ebrahimi- CopyUtils has been deprecated. 66*0c4d7b72SSadaf Ebrahimi Its methods have been moved to IOUtils. 67*0c4d7b72SSadaf Ebrahimi The new IOUtils methods handle nulls better, and have clearer names. 68*0c4d7b72SSadaf Ebrahimi 69*0c4d7b72SSadaf Ebrahimi- IOUtils.toByteArray(String) - Use {@link String#getBytes()} 70*0c4d7b72SSadaf Ebrahimi- IOUtils.toString(byte[]) - Use {@link String#String(byte[])} 71*0c4d7b72SSadaf Ebrahimi- IOUtils.toString(byte[],String) - Use {@link String#String(byte[],String)} 72*0c4d7b72SSadaf Ebrahimi 73*0c4d7b72SSadaf Ebrahimi 74*0c4d7b72SSadaf EbrahimiBug fixes from 1.0 75*0c4d7b72SSadaf Ebrahimi------------------ 76*0c4d7b72SSadaf Ebrahimi- FileUtils - touch() [29821] 77*0c4d7b72SSadaf Ebrahimi Now creates the file if it did not previously exist 78*0c4d7b72SSadaf Ebrahimi 79*0c4d7b72SSadaf Ebrahimi- FileUtils - toFile(URL) [32575] 80*0c4d7b72SSadaf Ebrahimi Now handles escape syntax such as %20 81*0c4d7b72SSadaf Ebrahimi 82*0c4d7b72SSadaf Ebrahimi- FileFilterUtils - makeCVSAware(IOFileFilter) [33023] 83*0c4d7b72SSadaf Ebrahimi Fixed bug that caused method to be completely broken 84*0c4d7b72SSadaf Ebrahimi 85*0c4d7b72SSadaf Ebrahimi- CountingInputStream [33336] 86*0c4d7b72SSadaf Ebrahimi Fixed bug that caused the count to reduce by one at the end of the stream 87*0c4d7b72SSadaf Ebrahimi 88*0c4d7b72SSadaf Ebrahimi- CountingInputStream - skip(long) [34311] 89*0c4d7b72SSadaf Ebrahimi Bytes from calls to this method were not previously counted 90*0c4d7b72SSadaf Ebrahimi 91*0c4d7b72SSadaf Ebrahimi- NullOutputStream [33481] 92*0c4d7b72SSadaf Ebrahimi Remove unnecessary synchronization 93*0c4d7b72SSadaf Ebrahimi 94*0c4d7b72SSadaf Ebrahimi- AbstractFileFilter - accept(File, String) [30992] 95*0c4d7b72SSadaf Ebrahimi Fixed broken implementation 96*0c4d7b72SSadaf Ebrahimi 97*0c4d7b72SSadaf Ebrahimi- FileUtils [36801] 98*0c4d7b72SSadaf Ebrahimi Previously threw NPE when listing files in a security restricted directory 99*0c4d7b72SSadaf Ebrahimi Now throw IOException with a better message 100*0c4d7b72SSadaf Ebrahimi 101*0c4d7b72SSadaf Ebrahimi- FileUtils - writeStringToFile() 102*0c4d7b72SSadaf Ebrahimi Null encoding now correctly uses the platform default 103*0c4d7b72SSadaf Ebrahimi 104*0c4d7b72SSadaf Ebrahimi 105*0c4d7b72SSadaf EbrahimiEnhancements from 1.0 106*0c4d7b72SSadaf Ebrahimi--------------------- 107*0c4d7b72SSadaf Ebrahimi- FilenameUtils - new class [33303,29351] 108*0c4d7b72SSadaf Ebrahimi A static utility class for working with filenames 109*0c4d7b72SSadaf Ebrahimi Seeks to ease the pain of developing on Windows and deploying on Unix 110*0c4d7b72SSadaf Ebrahimi 111*0c4d7b72SSadaf Ebrahimi- FileSystemUtils - new class [32982,36325] 112*0c4d7b72SSadaf Ebrahimi A static utility class for working with file systems 113*0c4d7b72SSadaf Ebrahimi Provides one method at present, to get the free space on the filing system 114*0c4d7b72SSadaf Ebrahimi 115*0c4d7b72SSadaf Ebrahimi- IOUtils - new public constants 116*0c4d7b72SSadaf Ebrahimi Constants for directory and line separators on Windows and Unix 117*0c4d7b72SSadaf Ebrahimi 118*0c4d7b72SSadaf Ebrahimi- IOUtils - toByteArray(Reader,encoding) 119*0c4d7b72SSadaf Ebrahimi Handles encodings when reading to a byte array 120*0c4d7b72SSadaf Ebrahimi 121*0c4d7b72SSadaf Ebrahimi- IOUtils - toCharArray(InputStream) [28979] 122*0c4d7b72SSadaf Ebrahimi - toCharArray(InputStream,encoding) 123*0c4d7b72SSadaf Ebrahimi - toCharArray(Reader) 124*0c4d7b72SSadaf Ebrahimi Reads a stream/reader into a character array 125*0c4d7b72SSadaf Ebrahimi 126*0c4d7b72SSadaf Ebrahimi- IOUtils - readLines(InputStream) [36214] 127*0c4d7b72SSadaf Ebrahimi - readLines(InputStream,encoding) 128*0c4d7b72SSadaf Ebrahimi - readLines(Reader) 129*0c4d7b72SSadaf Ebrahimi Reads a stream/reader line by line into a List of Strings 130*0c4d7b72SSadaf Ebrahimi 131*0c4d7b72SSadaf Ebrahimi- IOUtils - toInputStream(String) [32958] 132*0c4d7b72SSadaf Ebrahimi - toInputStream(String,encoding) 133*0c4d7b72SSadaf Ebrahimi Creates an input stream that uses the string as a source of data 134*0c4d7b72SSadaf Ebrahimi 135*0c4d7b72SSadaf Ebrahimi- IOUtils - writeLines(Collection,lineEnding,OutputStream) [36214] 136*0c4d7b72SSadaf Ebrahimi - writeLines(Collection,lineEnding,OutputStream,encoding) 137*0c4d7b72SSadaf Ebrahimi - writeLines(Collection,lineEnding,Writer) 138*0c4d7b72SSadaf Ebrahimi Writes a collection to a stream/writer line by line 139*0c4d7b72SSadaf Ebrahimi 140*0c4d7b72SSadaf Ebrahimi- IOUtils - write(...) 141*0c4d7b72SSadaf Ebrahimi Write data to a stream/writer (moved from CopyUtils with better null handling) 142*0c4d7b72SSadaf Ebrahimi 143*0c4d7b72SSadaf Ebrahimi- IOUtils - copy(...) 144*0c4d7b72SSadaf Ebrahimi Copy data between streams (moved from CopyUtils with better null handling) 145*0c4d7b72SSadaf Ebrahimi 146*0c4d7b72SSadaf Ebrahimi- IOUtils - contentEquals(Reader,Reader) 147*0c4d7b72SSadaf Ebrahimi Method to compare the contents of two readers 148*0c4d7b72SSadaf Ebrahimi 149*0c4d7b72SSadaf Ebrahimi- FileUtils - toFiles(URL[]) 150*0c4d7b72SSadaf Ebrahimi Converts an array of URLs to an array of Files 151*0c4d7b72SSadaf Ebrahimi 152*0c4d7b72SSadaf Ebrahimi- FileUtils - copyDirectory() [32944] 153*0c4d7b72SSadaf Ebrahimi New methods to copy a directory 154*0c4d7b72SSadaf Ebrahimi 155*0c4d7b72SSadaf Ebrahimi- FileUtils - readFileToByteArray(File) 156*0c4d7b72SSadaf Ebrahimi Reads an entire file into a byte array 157*0c4d7b72SSadaf Ebrahimi 158*0c4d7b72SSadaf Ebrahimi- FileUtils - writeByteArrayToFile(File,byte[]) 159*0c4d7b72SSadaf Ebrahimi Writes a byte array to a file 160*0c4d7b72SSadaf Ebrahimi 161*0c4d7b72SSadaf Ebrahimi- FileUtils - readLines(File,encoding) [36214] 162*0c4d7b72SSadaf Ebrahimi Reads a file line by line into a List of Strings 163*0c4d7b72SSadaf Ebrahimi 164*0c4d7b72SSadaf Ebrahimi- FileUtils - writeLines(File,encoding,List) 165*0c4d7b72SSadaf Ebrahimi writeLines(File,encoding,List,lineEnding) 166*0c4d7b72SSadaf Ebrahimi Writes a collection to a file line by line 167*0c4d7b72SSadaf Ebrahimi 168*0c4d7b72SSadaf Ebrahimi- FileUtils - EMPTY_FILE_ARRAY 169*0c4d7b72SSadaf Ebrahimi Constant for an empty array of File objects 170*0c4d7b72SSadaf Ebrahimi 171*0c4d7b72SSadaf Ebrahimi- ConditionalFileFilter - new interface [30705] 172*0c4d7b72SSadaf Ebrahimi Defines the behavior of list based filters 173*0c4d7b72SSadaf Ebrahimi 174*0c4d7b72SSadaf Ebrahimi- AndFileFilter, OrFileFilter [30705] 175*0c4d7b72SSadaf Ebrahimi Now support a list of filters to and/or 176*0c4d7b72SSadaf Ebrahimi 177*0c4d7b72SSadaf Ebrahimi- WildcardFilter [31115] 178*0c4d7b72SSadaf Ebrahimi New filter that can match using wildcard file names 179*0c4d7b72SSadaf Ebrahimi 180*0c4d7b72SSadaf Ebrahimi- FileFilterUtils - makeSVNAware(IOFileFilter) 181*0c4d7b72SSadaf Ebrahimi New method, like makeCVSAware, that ignores Subversion source control directories 182*0c4d7b72SSadaf Ebrahimi 183*0c4d7b72SSadaf Ebrahimi- ClassLoaderObjectInputStream 184*0c4d7b72SSadaf Ebrahimi An ObjectInputStream that supports a ClassLoader 185*0c4d7b72SSadaf Ebrahimi 186*0c4d7b72SSadaf Ebrahimi- CountingInputStream,CountingOutputStream - resetCount() [28976] 187*0c4d7b72SSadaf Ebrahimi Adds the ability to reset the count part way through reading/writing the stream 188*0c4d7b72SSadaf Ebrahimi 189*0c4d7b72SSadaf Ebrahimi- DeferredFileOutputStream - writeTo(OutputStream) [34173] 190*0c4d7b72SSadaf Ebrahimi New method to allow current contents to be written to a stream 191*0c4d7b72SSadaf Ebrahimi 192*0c4d7b72SSadaf Ebrahimi- DeferredFileOutputStream [34142] 193*0c4d7b72SSadaf Ebrahimi Performance optimizations avoiding double buffering 194*0c4d7b72SSadaf Ebrahimi 195*0c4d7b72SSadaf Ebrahimi- LockableFileWriter - encoding support [36825] 196*0c4d7b72SSadaf Ebrahimi Add support for character encodings to LockableFileWriter 197*0c4d7b72SSadaf Ebrahimi Improve the validation 198*0c4d7b72SSadaf Ebrahimi Create directories if necessary 199*0c4d7b72SSadaf Ebrahimi 200*0c4d7b72SSadaf Ebrahimi- IOUtils and EndianUtils are no longer final [28978] 201*0c4d7b72SSadaf Ebrahimi Allows developers to have subclasses if desired 202*0c4d7b72SSadaf Ebrahimi</source> 203*0c4d7b72SSadaf Ebrahimi</p> 204*0c4d7b72SSadaf Ebrahimi</section> 205*0c4d7b72SSadaf Ebrahimi 206*0c4d7b72SSadaf Ebrahimi</body> 207*0c4d7b72SSadaf Ebrahimi</document> 208