Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中比较两个没有循环的文本文件(内容)?_Java_Base64_Bytearray_File Comparison - Fatal编程技术网

如何在Java中比较两个没有循环的文本文件(内容)?

如何在Java中比较两个没有循环的文本文件(内容)?,java,base64,bytearray,file-comparison,Java,Base64,Bytearray,File Comparison,有没有办法不使用循环就比较两个文本(ODT)文件 关键是,在一个servlet中,我从JavaScript接收到一个文件,我想将它与服务器中存储的另一个文件进行比较。这就是我正在做的,但它不起作用,它说它们不相等,但它们是相等的,它们的内容完全相同,因为它们是相同的文件 我在base64中接收文件的内容,并将其解析为字节[](contentvar),然后打开存储的文件(savedFilevar),并将其解析为字节[](savedFileBytevar)。然后我尝试使用Arrays.equals(

有没有办法不使用循环就比较两个文本(ODT)文件

关键是,在一个
servlet
中,我从JavaScript接收到一个文件,我想将它与服务器中存储的另一个文件进行比较。这就是我正在做的,但它不起作用,它说它们不相等,但它们是相等的,它们的内容完全相同,因为它们是相同的文件

我在base64中接收文件的内容,并将其解析为字节[](
content
var),然后打开存储的文件(
savedFile
var),并将其解析为字节[](
savedFileByte
var)。然后我尝试使用
Arrays.equals()
比较两个byte[]变量。正如我所说,它总是返回false,但是我确信内容是相同的。那我做错了什么?或者,有没有其他方法来处理这个问题

我不想使用循环,因为这可能会比较很多文件,所以使用循环会降低性能。不管怎样,如果这是唯一的办法,就说出来!谢谢

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String fileName = String.valueOf(request.getParameter("fileName"));

    byte[] content = Base64.decodeBase64(IOUtils.toByteArray(request.getInputStream()));

    FileInputStream savedFile = new FileInputStream("path/"+fileName);

    byte[] savedFileByte = IOUtils.toByteArray(savedFile);

    if (Arrays.equals(content, savedFileByte))
        System.out.println("MATCH!");
    else
        System.out.println("DO NOT MATCH!");

    savedFile.close();
}

您可以使用apachecommons。但你必须知道,在内部,循环会发生

例如:

File file1 = new File("test1.odt");
File file2 = new File("test2.odt");

boolean compare1and2 = FileUtils.contentEquals(file1, file2);

System.out.println("Are test1.txt and test2.txt the same? " + compare1and2);
要从
字节[]
转换为
文件
,请同时使用Apache Commons或:


但是如何将byte[]数据转换为
文件
对象呢?检查并编辑我的问题
FileOutputStream fos = new FileOutputStream("pathname");
fos.write(myByteArray);
fos.close();