SVNFileUtil.closeFile(file1IS); SVNFileUtil.closeFile(file2IS);
    private boolean checkFilesDifferent(FSRoot root1, String path1, FSRoot root2, String path2) throws SVNException {        boolean changed = areFileContentsChanged(root1, path1, root2, path2);        /* If the filesystem claims the things haven't changed, then          * they haven't changed.          */        if(!changed){            return false;        }        /* From this point on, assume things haven't changed. */        /* So, things have changed.  But we need to know if the two sets          * of file contents are actually different. If they have differing         * sizes, then we know they differ.          */        FSRevisionNode revNode1 = myRevNodesPool.getRevisionNode(root1, path1, myReposRootDir);        FSRevisionNode revNode2 = myRevNodesPool.getRevisionNode(root2, path2, myReposRootDir);        if(getFileLength(revNode1) != getFileLength(revNode2)){            return true;        }        /* Same sizes? Well, if their checksums differ, we know          * they differ.          */        if(!FSRepositoryUtil.getFileChecksum(revNode1).equals(FSRepositoryUtil.getFileChecksum(revNode2))){            return true;        }        /* Same sizes, same checksums. Chances are really good that          * files don't differ, but to be absolute sure, we need to          * compare bytes.          */        InputStream file1IS = null;        InputStream file2IS = null;        try{            file1IS = FSReader.getFileContentsInputStream(root1, path1, myRevNodesPool, myReposRootDir);//FSInputStream.createDeltaStream(revNode1, myReposRootDir);            file2IS = FSReader.getFileContentsInputStream(root2, path2, myRevNodesPool, myReposRootDir);//FSInputStream.createDeltaStream(revNode2, myReposRootDir);            int r1 = -1;            int r2 = -1;            while(true){                r1 = file1IS.read();                r2 = file2IS.read();                if(r1 != r2){                    SVNFileUtil.closeFile(file1IS);                    SVNFileUtil.closeFile(file2IS);                    return true;                }                if(r1 == -1){//we've finished - files do differ                    break;                }            }        }catch(IOException ioe){            SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.IO_ERROR, ioe.getLocalizedMessage());            SVNErrorManager.error(err, ioe);        }finally{            SVNFileUtil.closeFile(file1IS);            SVNFileUtil.closeFile(file2IS);        }        return false;    }