美文网首页
比较两个文件的内容是否一样

比较两个文件的内容是否一样

作者: 温酒居士 | 来源:发表于2020-05-13 20:28 被阅读0次

    现在我们有一个需要,就是要比较两个文件的内容是否一样。如果文件的内容很少,找到两个文件的差异并不难,但是如果两个文件的内容很多,用肉眼就很难了。下面我们就用Java代码来实现这一功能

    
    public class CompareFile {
    
        public boolean isSameFile(String fileName1,String fileName2){
            FileInputStream fis1 = null;
            FileInputStream fis2 = null;
            try {
                fis1 = new FileInputStream(fileName1);
                fis2 = new FileInputStream(fileName2);
    
                int len1 = fis1.available();//返回总的字节数
                int len2 = fis2.available();
    
                if (len1 == len2) {//长度相同,则比较具体内容
                    //建立两个字节缓冲区
                    byte[] data1 = new byte[len1];
                    byte[] data2 = new byte[len2];
    
                    //分别将两个文件的内容读入缓冲区
                    fis1.read(data1);
                    fis2.read(data2);
    
                    //依次比较文件中的每一个字节
                    for (int i=0; i<len1; i++) {
                        //只要有一个字节不同,两个文件就不一样
                        if (data1[i] != data2[i]) {
                            System.out.println("文件内容不一样");
                            return false;
                        }
                    }
                    System.out.println("两个文件完全相同");
                    return true;
                } else {
                    //长度不一样,文件肯定不同
                    System.out.println("文件内容不一样");
                    return false;
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {//关闭文件流,防止内存泄漏
                if (fis1 != null) {
                    try {
                        fis1.close();
                    } catch (IOException e) {
                        //忽略
                        e.printStackTrace();
                    }
                }
                if (fis2 != null) {
                    try {
                        fis2.close();
                    } catch (IOException e) {
                        //忽略
                        e.printStackTrace();
                    }
                }
            }
            return false;
        }
    
        public static void main(String[] args) {
            String fileName1="D:\\text\\name1.txt";
            String fileName2="D:\\text\\name2.txt";
    
            boolean sameFile = new CompareFile().isSameFile(fileName1, fileName2);
            System.out.println(sameFile);
        }
    }
    
    

    当两个文本文件中的内容相同时,运行结果如下

    image

    当两个文本文件中的内容不完全相同时,运行结果如下

    image

    不过有一点需要注意的是,空格和换行也是比较差异的地方

    个人网站:www.panbingwen.cn

    相关文章

      网友评论

          本文标题:比较两个文件的内容是否一样

          本文链接:https://www.haomeiwen.com/subject/mwinyctx.html