实现高效的文件内容比较工具函数。 参考了网上的一些方法并做了改进。 测试发现使用MD5方式比较是不完备的,如果文件只改动一个字节,比如 本来数字“1”改成数字“2”,是无法正确比较的。 所以还是采用了读取所有字节进行比较的方式比较靠谱。读取文件内容是的buffer大小会影响执行效率。对于10K级别的文本文件,经测试在10MS以内比较完成。 /** * <p> * compare two file's content. if not equal then return false; else return true; * </p> * @param oldFilePath * @param newFilePath * @return */ public static boolean isFileContentEqual(String oldFilePath, String newFilePath) { //check does the two file exist. if (!TextUtils.isEmpty(oldFilePath) && !TextUtils.isEmpty(newFilePath)) { File oldFile = new File(oldFilePath); File newFile = new File(newFilePath); FileInputStream oldInStream = null; FileInputStream newInStream = null; try { oldInStream = new FileInputStream(oldFile); newInStream = new FileInputStream(newFile); int oldStreamLen = oldInStream.available(); int newStreamLen = newInStream.available(); //check the file size first. if (oldStreamLen > 0 && oldStreamLen == newStreamLen) { //read file data with a buffer. int cacheSize = 128; byte[] data1 = new byte[cacheSize]; byte[] data2 = new byte[cacheSize]; do { int readSize = oldInStream.read(data1); newInStream.read(data2); for (int i = 0; i < cacheSize; i++) { if (data1[i] != data2[i]) { return false; } } if (readSize == -1) { break; } } while (true); return true; } } catch (Exception e) { e.printStackTrace(); } finally { //release the stream resource. try { if (oldInStream != null) oldInStream.close(); if (newInStream != null) newInStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return false; }
参考了文章:java比较文件内容是否相同的方法
相关推荐
1. **按字节读取文件内容** Java中`java.io.FileInputStream`类提供了按字节读取文件的功能。这种方法适用于读取二进制文件,例如图像、音频或视频文件。下面的代码示例展示了如何按字节读取文件: ```java ...
java读取txt文件,可以以文件路径构造这个流,:FileInputStream fin = new FileInputStream("d:/test.txt"); 然后使用这个流直接读取到文件,再使用reader构造BufferedReader,按行读取一整行的文本,作为字符串返回...
里面包含了高效处理文件流的一个java文件,工作时总会用到 个人原创 请使用者标明作者信息 谢谢 oneRose 奉献(下载后的朋友们给点意见 谢谢)
总结来说,通过Java和Apache POI,我们可以实现两个Word文档的高效比较和差异标记。在实践中,需要根据具体需求调整和优化代码,以满足各种复杂场景。对于大型或格式复杂的文档,建议使用专门的比较库以提升效果和...
对于内容比较,可以使用`java.nio.file.Files`的`readAllBytes()`方法读取文件内容,然后进行字节对齐比较。如果文件较大,可以采用分块读取并比较的方法。 3. **Socket通信**: Java的`java.net.Socket`和`...
在Java中,写入大数据文件通常需要考虑文件的大小、写入速度、内存占用等因素,以确保写入操作的高效性和可靠性。 在给定的Java代码中,我们可以看到,程序首先定义了写入文件的路径、切分文件的路径、数据的个数、...
"JAVA高效读取大文件" 概述:本文将讨论如何使用 Java 高效地读取大文件,解决读取大文件时可能遇到的 OutOfMemoryError 异常问题。同时,文章还将介绍使用 Guava 和 Apache Commons IO 库来读取大文件的不同方法,...
Java的文件比较是一个重要的开发任务,特别是在版本控制和代码审查中。DiffUtils-1.2.1.jar 是一个专门用于这个目的的Java库,它提供了高效且灵活的文本和对象的差异计算。这个库是开源的,允许开发者在Java应用程序...
在按顺序读取文件时,通常我们会先创建一个`FileReader`对象,然后将其传递给`BufferedReader`,以便高效地逐行读取文件内容。 以下是一个简单的示例,展示如何使用`BufferedReader`按顺序读取文件: ```java ...
在Java编程中,复制文件的方法有很多,而且经常要用到。我以前一直是缓冲输入输出流来实现的(绝大多数人都是如此),近来在研究JDK文档时发现,用文件通道(FileChannel)来实现文件复制竟然比用老方法快了近三分之...
首先,我们需要理解文件预览的基本原理:用户通过浏览器发送请求到服务器,服务器处理请求并返回文件内容,然后在浏览器中以适合的方式展示这些内容。为了实现这一过程,我们需要考虑以下几个关键步骤: 1. **文件...
- 通过`readLine()`方法逐行读取文件内容,该方法会返回一行字符串,如果没有更多的行则返回`null`。 - 如果某行包含指定的字符串,则输出该行内容。 5. **异常处理**: - 通过`try-catch`结构处理可能出现的...
综上所述,实现"java重复文件查找"程序涉及的知识点包括文件I/O操作、文件内容比较、多线程、用户界面设计、任务管理、文件过滤、结果展示以及效率优化等。理解并熟练掌握这些知识点对于进行复杂的Java应用开发具有...
传统的逐行读取文件的方法可能会消耗大量内存,因为整个文件内容会被加载到内存中。为了避免这种问题,我们可以采用流式处理(Streaming)来高效地计算文件的行数。 以下是一种使用Java进行大文件行数计数的优化...
【Java文件同步开源项目Sync】是一个基于Java语言开发的实用工具,主要目的是提供高效、可靠的文件和目录同步功能。这个开源项目为开发者提供了一个简单易用的命令行接口,允许用户方便地对本地或远程文件系统进行...
3. **读取小文件内容**:通过FileInputStream的read()方法逐字节地读取每个小文件的内容。 4. **写入合并文件**:使用FileOutputStream的write()方法将读取到的字节写入合并文件。 5. **关闭流**:在所有操作完成...
通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包...
3. 比较文件内容:逐行读取两个文件的内容,直到文件末尾。如果某一行内容不匹配,则可以判断两个文件数据不一致。 ```java String line1, line2; while ((line1 = br1.readLine()) != null && (line2 = br2....
在Java编程中,处理大容量...同时,结合适当的解析策略和数据库插入操作,可以有效地将大文件内容解析并存储到数据库中。在实际应用中,应根据具体场景进行优化,如调整缓冲区大小、使用并发处理等,以达到最佳性能。
- 使用`BufferedReader`的`readLine()`方法,逐行读取文件内容。这可以用来获取HTML文件的文本。 2. **处理HTML内容** - HTML内容通常包含标签和文本,如果只需要文本内容,可以使用`Jsoup`库解析HTML。`Jsoup`是...