<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document xmlns="http://maven.apache.org/XDOC/2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
 <properties>
  <title>Upgrade from 2.1 to 2.2</title>
  <author email="dev@commons.apache.org">Apache Commons Team</author>
 </properties>
<body>

<section name="Upgrade from 2.1 to 2.2">
<p>
These are the release notes and advice for upgrading Commons-IO from
version 2.1 to version 2.2
<source>
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.

Commons IO contains utility classes, stream implementations, file filters, 
file comparators, endian transformation classes, and much more.

==============================================================================
Commons IO Package Version 2.2
==============================================================================

Changes in this version include:

New features:
o IO-305:  New copyLarge() method in IOUtils that takes additional offset, length arguments Thanks to Manoj Mokashi. 
o IO-287:  Use terabyte (TB) , petabyte (PB) and exabyte (EB) in FileUtils.byteCountToDisplaySize(long size) Thanks to Ron Kuris, Gary Gregory. 
o IO-173:  FileUtils.listFiles() doesn't return directories Thanks to Marcos Vinícius da Silva. 
o IO-297:  CharSequenceInputStream to efficiently stream content of a CharSequence Thanks to Oleg Kalnichevski. 
o IO-304:  The second constructor of Tailer class does not pass 'delay' to the third one Thanks to liangly. 
o IO-303:  TeeOutputStream does not call branch.close() when main.close() throws an exception Thanks to fabian.barney. 
o IO-302:  ArrayIndexOutOfBoundsException in BOMInputStream when reading a file without BOM multiple times Thanks to jsteuerwald, detinho. 
o IO-301:  Add IOUtils.closeQuietly(Selector) necessary Thanks to kaykay.unique. 
o IO-292:  IOUtils.closeQuietly() should take a ServerSocket as a parameter Thanks to sebb. 
o IO-290:  Add read/readFully methods to IOUtils Thanks to sebb. 
o IO-288:  Supply a ReversedLinesFileReader Thanks to Georg Henzler. 
o IO-291:  Add new function FileUtils.directoryContains. Thanks to ggregory. 
o IO-275:  FileUtils.contentEquals and IOUtils.contentEquals - Add option to ignore "line endings"
        Added contentEqualsIgnoreEOL methods to both classes Thanks to CJ Aspromgos. 

Fixed Bugs:
o IO-300:  FileUtils.moveDirectoryToDirectory removes source directory if destination is a subdirectory 
o IO-307:  ReaderInputStream#read(byte[] b, int off, int len) should check for valid parameters 
o IO-306:  ReaderInputStream#read(byte[] b, int off, int len) should always return 0 for length == 0 
o IO-276:  "FileUtils#deleteDirectoryOnExit(File)" does not work Thanks to nkami. 
o IO-273:  BoundedInputStream.read() treats max differently from BoundedInputStream.read(byte[]...) Thanks to sebb. 
o IO-298:  Various methods of class 'org.apache.commons.io.FileUtils' incorrectly suppress 'java.io.IOException' Thanks to Christian Schulte. 

Changes:
o IO-296:  ReaderInputStream optimization: more efficient reading of small chunks of data Thanks to Oleg Kalnichevski. 

Compatibility with 2.1 and 1.4:
Binary compatible: Yes
Source compatible: Yes
Semantic compatible: Yes. Check the bug fixes section for semantic bug fixes

Commons IO 2.2 requires a minimum of JDK 1.5. 
Commons IO 1.4 requires a minimum of JDK 1.3. 
</source>
</p>
</section>

</body>
</document>
