有没有办法在不使用循环的情况下比较 2 个文本 (ODT) 文件?
关键是,在 aservlet
中,我从 JavaScript 接收一个文件,我想将它与存储在服务器中的另一个文件进行比较。这就是我正在做的事情,但它不起作用,它说它们不相等,但它们是,它们的内容完全相同,因为它们是相同的文件。
我在 base64 中接收文件的内容并将其解析为 byte[](content
var),然后打开存储的文件(savedFile
var)并将其解析为 byte[](savedFileByte
var)。然后我尝试使用Arrays.equals()
. 正如我所说,它总是返回 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();
}