All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.daisy.braille.utils.pef.FileCompare Maven / Gradle / Ivy

There is a newer version: 1.0.7
Show newest version
/*
 * Braille Utils (C) 2010-2011 Daisy Consortium
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this library; if not, write to the Free Software Foundation, Inc.,
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
package org.daisy.braille.utils.pef;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;

/**
 * Provides functionality to check if files are equal.
 *
 * @author Joel Håkansson
 */
public class FileCompare {
    private int pos;

    /**
     * Creates a new FileCompare object.
     */
    public FileCompare() {
        super();
    }

    /**
     * Gets the intermediary file created
     * from the first argument of the latest call to compareXML
     * (as base for the post normalization binary compare).
     *
     * @return returns the first file
     * @throws IllegalStateException if temporary files are not kept
     *                               or if compareXML has not been called.
     * @deprecated this method serves no purpose here
     */
    @Deprecated
    public File getFileOne() {
        throw new IllegalStateException();
    }

    /**
     * Gets the intermediary file created
     * from the second argument of the latest call to compareXML
     * (as base for the post normalization binary compare).
     *
     * @return returns the second file
     * @throws IllegalStateException if temporary files are not kept
     *                               or if compareXML has not been called.
     * @deprecated this method serves no purpose here
     */
    @Deprecated
    public File getFileTwo() {
        throw new IllegalStateException();
    }

    /**
     * Gets the byte position where the latest call to compareBinary or compareXML failed, or -1
     * if compare was successful.
     *
     * @return returns the byte position
     */
    public int getPos() {
        return pos;
    }

    /**
     * Compares the input streams binary.
     *
     * @param f1 the first input stream
     * @param f2 the second input stream
     * @return returns true if the streams are equal, false otherwise
     * @throws IOException if IO fails
     */
    public boolean compareBinary(InputStream f1, InputStream f2) throws IOException {
        try (InputStream bf1 = new BufferedInputStream(f1);
             InputStream bf2 = new BufferedInputStream(f2)) {
            int b1;
            int b2;
            pos = 0;
            while ((b1 = bf1.read()) != -1 & b1 == (b2 = bf2.read())) {
                pos++;
                //continue
            }
            if (b1 != -1 || b2 != -1) {
                return false;
            }
            pos = -1;
            return true;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy