Java通过字节流比对两个文件是不是同一个文件

1.具体思路:编写一个A方法用来获取一个文件的字节码,通过FileInputStream的read方法将文件的字节码读取到byte[] 数组中去,数组的长度通过File的length方法获取,这样可以避免数组长度过长或者过短造成程序出错,方法的返回值类型为一个数组类型。然后编写一个比对的方法,首先两次调用A方法,获取A方法中的数组,先判断数组长度是否一致,然后将数组中的元素逐个取出进行对比。

/*
 * Copyright (c) 2020, 2023,  All rights reserved.
 *
 */
package cn.scl;

import java.io.File;
import java.io.FileInputStream;

/**
 * <p>Project: JavaStudy - Work4</p>
 * <p>Powered by scl On 2023-07-21 17:13:03</p>
 * <p>描述:<p>
 *
 * @author scl [1846080280@qq.com]
 * @version 1.0
 * @since 17
 */
public class Work4 {
    //判断是不是同一个文件
    public static void main(String[] args) {
        byte[] b = word(new File("E:\\user1.txt"));
        byte[] a = word(new File("E:\\user23.txt"));
        comparison(a,b);
    }

    //比对方法
    public static void comparison(byte[] a,byte[] b){
        int i = 0;
        boolean f = false;
        if (b.length == a.length) {
            while (i < b.length) {
                int bb = b[i];
                int aa = a[i];
                if (aa != bb) {
                    System.out.println("不是同一个文件");
                    f = false;
                    break;
                }
                ++i;
                f=true;
            }
        }else {
            System.out.println("不是同一个文件");
        }
        if (f) System.out.println("是同一个文件");
    }

    //获取一个文件的字节数组  方法
    public static byte[] word(File file) {
        byte[] bytes = null;
        if (file.isFile()) {
            long len = file.length();
            try (FileInputStream ff = new FileInputStream(file)) {
                StringBuilder str = new StringBuilder();
                bytes = new byte[(int) len];
                ff.read(bytes);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return bytes;
    }
}

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个用Java语言实现的合并两个指定文件并排序的例子: ```java import java.io.*; public class MergeFiles { public static void main(String[] args) { String file1 = "file1.txt"; String file2 = "file2.txt"; String outputFile = "output.txt"; try { // 读取文件1和文件2 FileInputStream fis1 = new FileInputStream(file1); FileInputStream fis2 = new FileInputStream(file2); DataInputStream dis1 = new DataInputStream(fis1); DataInputStream dis2 = new DataInputStream(fis2); // 创建输出文件 FileOutputStream fos = new FileOutputStream(outputFile); DataOutputStream dos = new DataOutputStream(fos); // 读取文件1和文件2的内容,合并成一个数组 int[] arr = new int[100]; int i = 0; while (dis1.available() > 0) { arr[i++] = dis1.readInt(); } while (dis2.available() > 0) { arr[i++] = dis2.readInt(); } // 将数组排序 int n = i; for (i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } // 将排序后的数组写入输出文件 for (i = 0; i < n; i++) { dos.writeInt(arr[i]); } // 关闭文件 fis1.close(); fis2.close(); fos.close(); dis1.close(); dis2.close(); dos.close(); System.out.println("文件合并并排序完成!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 在这个例子中,我们先定义了文件1、文件2和输出文件的名称,然后使用文件字节输入和数据输入读取文件1和文件2的内容,并将它们合并到一个数组中。接着,我们对这个数组进行排序,最后使用文件字节输出和数据输出将排序后的数组写入输出文件中。最后,我们关闭文件,并输出一个提示信息。 注意,这个例子中使用了一个比较简单的排序算法,实际上,在处理大量数据时,我们应该使用更高效的排序算法,比如归并排序或快速排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值