@@ -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 {
0 commit comments