Skip to content

Commit 05df14e

Browse files
author
Christian Schulte
committed
o Updated to stop suppressing exception's thrown when closing streams.
o Updated to correctly test for end of file conditions. o Catching up with the following 'commons-io' bug fixes: https://issues.apache.org/jira/browse/IO-298 https://issues.apache.org/jira/browse/IO-502
1 parent ea5e38c commit 05df14e

File tree

3 files changed

+37
-10
lines changed

3 files changed

+37
-10
lines changed

src/main/java/org/codehaus/plexus/util/FileUtils.java

+32-5
Original file line numberDiff line numberDiff line change
@@ -389,10 +389,12 @@ public static String fileRead( File file, String encoding )
389389
}
390390
int count;
391391
char[] b = new char[512];
392-
while ( ( count = reader.read( b ) ) > 0 ) // blocking read
392+
while ( ( count = reader.read( b ) ) >= 0 ) // blocking read
393393
{
394394
buf.append( b, 0, count );
395395
}
396+
reader.close();
397+
reader = null;
396398
}
397399
finally
398400
{
@@ -439,6 +441,8 @@ public static void fileAppend( String fileName, String encoding, String data )
439441
{
440442
out.write( data.getBytes() );
441443
}
444+
out.close();
445+
out = null;
442446
}
443447
finally
444448
{
@@ -515,6 +519,8 @@ public static void fileWrite( File file, String encoding, String data )
515519
writer = new OutputStreamWriter( out );
516520
}
517521
writer.write( data );
522+
writer.close();
523+
writer = null;
518524
}
519525
finally
520526
{
@@ -761,18 +767,23 @@ public static boolean contentEquals( final File file1, final File file2 )
761767

762768
InputStream input1 = null;
763769
InputStream input2 = null;
770+
boolean equals = false;
764771
try
765772
{
766773
input1 = new FileInputStream( file1 );
767774
input2 = new FileInputStream( file2 );
768-
return IOUtil.contentEquals( input1, input2 );
769-
775+
equals = IOUtil.contentEquals( input1, input2 );
776+
input1.close();
777+
input1 = null;
778+
input2.close();
779+
input2 = null;
770780
}
771781
finally
772782
{
773783
IOUtil.close( input1 );
774784
IOUtil.close( input2 );
775785
}
786+
return equals;
776787
}
777788

778789
/**
@@ -813,11 +824,11 @@ public static File toFile( final URL url )
813824
public static URL[] toURLs( final File[] files )
814825
throws IOException
815826
{
816-
final URL[] urls = new URL[files.length];
827+
final URL[] urls = new URL[ files.length ];
817828

818829
for ( int i = 0; i < urls.length; i++ )
819830
{
820-
urls[i] = files[i].toURL();
831+
urls[i] = files[i].toURI().toURL();
821832
}
822833

823834
return urls;
@@ -1112,6 +1123,14 @@ private static void doCopyFile( File source, File destination )
11121123
count = size - pos > FILE_COPY_BUFFER_SIZE ? FILE_COPY_BUFFER_SIZE : size - pos;
11131124
pos += output.transferFrom( input, pos, count );
11141125
}
1126+
output.close();
1127+
output = null;
1128+
fos.close();
1129+
fos = null;
1130+
input.close();
1131+
input = null;
1132+
fis.close();
1133+
fis = null;
11151134
}
11161135
finally
11171136
{
@@ -1197,6 +1216,10 @@ public static void copyStreamToFile( final InputStreamFacade source, final File
11971216
input = source.getInputStream();
11981217
output = new FileOutputStream( destination );
11991218
IOUtil.copy( input, output );
1219+
output.close();
1220+
output = null;
1221+
input.close();
1222+
input = null;
12001223
}
12011224
finally
12021225
{
@@ -2332,6 +2355,10 @@ public static void copyFile( File from, File to, String encoding, FilterWrapper[
23322355
}
23332356

23342357
IOUtil.copy( reader, fileWriter );
2358+
fileWriter.close();
2359+
fileWriter = null;
2360+
fileReader.close();
2361+
fileReader = null;
23352362
}
23362363
finally
23372364
{

src/main/java/org/codehaus/plexus/util/IOUtil.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public static void copy( final InputStream input,
186186
{
187187
final byte[] buffer = new byte[bufferSize];
188188
int n = 0;
189-
while ( -1 != ( n = input.read( buffer ) ) )
189+
while ( 0 <= ( n = input.read( buffer ) ) )
190190
{
191191
output.write( buffer, 0, n );
192192
}
@@ -210,7 +210,7 @@ public static void copy( final Reader input, final Writer output, final int buff
210210
{
211211
final char[] buffer = new char[bufferSize];
212212
int n = 0;
213-
while ( -1 != ( n = input.read( buffer ) ) )
213+
while ( 0 <= ( n = input.read( buffer ) ) )
214214
{
215215
output.write( buffer, 0, n );
216216
}
@@ -699,7 +699,7 @@ public static boolean contentEquals( final InputStream input1,
699699
final InputStream bufferedInput2 = new BufferedInputStream( input2 );
700700

701701
int ch = bufferedInput1.read();
702-
while ( -1 != ch )
702+
while ( 0 <= ch )
703703
{
704704
final int ch2 = bufferedInput2.read();
705705
if ( ch != ch2 )
@@ -710,7 +710,7 @@ public static boolean contentEquals( final InputStream input1,
710710
}
711711

712712
final int ch2 = bufferedInput2.read();
713-
if ( -1 != ch2 )
713+
if ( 0 <= ch2 )
714714
{
715715
return false;
716716
}

src/test/java/org/codehaus/plexus/util/IOUtilTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ private void assertEqualContent( File f0, File f1 )
127127

128128
try
129129
{
130-
while ( -1 != n0 )
130+
while ( 0 <= n0 )
131131
{
132132
n0 = is0.read( buf0 );
133133
n1 = is1.read( buf1 );

0 commit comments

Comments
 (0)