diff --git a/src/main/org/apache/tools/ant/taskdefs/Checksum.java b/src/main/org/apache/tools/ant/taskdefs/Checksum.java index aa4d0965f..91a7b6bfb 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Checksum.java +++ b/src/main/org/apache/tools/ant/taskdefs/Checksum.java @@ -53,10 +53,11 @@ */ package org.apache.tools.ant.taskdefs; -import java.io.DataInputStream; +import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.InputStreamReader; import java.io.IOException; import java.security.DigestInputStream; import java.security.MessageDigest; @@ -377,15 +378,14 @@ public class Checksum extends MatchingTask implements Condition { if (existingFile.exists() && existingFile.length() == checksum.length()) { fis = new FileInputStream(existingFile); - DataInputStream edis = new DataInputStream(fis); - String suppliedChecksum = ""; - if (edis.available() > 0) { - suppliedChecksum = edis.readLine(); - } + InputStreamReader isr = new InputStreamReader(fis); + BufferedReader br = new BufferedReader(isr); + String suppliedChecksum = br.readLine(); fis.close(); fis = null; - edis.close(); - checksumMatches = + br.close(); + isr.close(); + checksumMatches = checksum.equals(suppliedChecksum); } else { checksumMatches = false; @@ -394,6 +394,8 @@ public class Checksum extends MatchingTask implements Condition { File dest = (File) destination; fos = new FileOutputStream(dest); fos.write(checksum.getBytes()); + fos.close(); + fos = null; } } }