java文件夹比较(java 写文件的三种方法比较)

本篇文章给大家谈谈java文件夹比较,以及java 写文件三种方法比较对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

1、java如何快速比较两个文件是否相同2、java比较2个文件是否是相同的文件,是一个一个字节比较还是计算MD5比较好啊?3、有两个名字一样的java文件,怎样比较其内容的不同地方(一个是以前写的,一个更新的程序)?有什么方法?4、如何将java文件内容进行比较5、java 文件内容 比较

java如何快速比较两个文件是否相同

计算MD5或SHA-1,一样的就是同一个文件

下面的代码,不需要额外使用第三方组件,且支持超大文件

// 计算文件的 MD5 值

publicstatic String getFileMD5(File file) {

    if (!file.isFile()) {

        return null;

    }

    MessageDigest digest = null;

    FileInputStream in = null;

    byte buffer[] = newbyte[8192];

    int len;

    try {

        digest =MessageDigest.getInstance(“MD5”);

        in = new FileInputStream(file);

        while ((len = in.read(buffer)) != -1) {

            digest.update(buffer, 0, len);

        }

        BigInteger bigInt = new BigInteger(1, digest.digest());

        return bigInt.toString(16);

    } catch (Exception e) {

        e.printStackTrace();

        return null;

    } finally {

        try {

            in.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

 

}

// 计算文件的 SHA-1 值

publicstatic String getFileSha1(File file) {

    if (!file.isFile()) {

        return null;

    }

    MessageDigest digest = null;

    FileInputStream in = null;

    byte buffer[] = newbyte[8192];

    int len;

    try {

        digest =MessageDigest.getInstance(“SHA-1”);

        in = new FileInputStream(file);

        while ((len = in.read(buffer)) != -1) {

            digest.update(buffer, 0, len);

        }

        BigInteger bigInt = new BigInteger(1, digest.digest());

        return bigInt.toString(16);

    } catch (Exception e) {

        e.printStackTrace();

        return null;

    } finally {

        try {

            in.close();

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}

java文件夹比较(java 写文件的三种方法比较)

java比较2个文件是否是相同的文件,是一个一个字节比较还是计算MD5比较好啊?

不同内容得出相同MD5值,虽然概率低,但总是不放心。如果在已知文件编码范围的条件下,找到MD5绝对区分长度范围(即:该范围内取样内容的MD5相同的,内容保证相同;绝不存在不同内容得出相同MD5值的现象),那么,可按合理的长度分片、按一定顺序遍历整个文件(属性信息、头部、尾部、同步随机点、其他),比较MD5,一旦有异立即判定文件不同,终止比较。这种分片取样比较MD5的思路可能快于逐字节比较也绝对可信

要确保 100%正确就必须校验全文,通过以上思路来比较,即是。

(注:

其他据说相对于MD5来讲不易碰撞(即不同内容得出相同MD5值的概率可能更低)的算法推荐:起码 SHA1 ,最好 SHA256、 SHA512、MD5+CRC32、HMAC,或者几种不同类型算法的同步进行。

在精通算法的情况下,将这里推荐的算法取代上文中提到的MD5来考量,能扩大绝对区分长度范围,可能更方便更快的比较。

但是又有这样的考虑:逐字节比较的算法最简单,算法弄复杂了反而会增加额余的时间;逐字节比较的算法也可以放到上文中来考量,进行同步取样和各种遍历的顺序与方式,说不定,在保证100%的可信度的条件下,逐字比较反而最快呢?

我觉得时间的耗费关键处在于,所有的算法,都要将两个位于不同区域或载体的文件的同位区域收集到一起进行比较,这个收集花费时间Ta(i),与取样长度、存储区域或载体等相关;{如果要将文件取很大一部或全部读入内存,然后再逐一集中比较,则会减小以上的Ta(i),而增加一个额外读入的时间Tc(i)*次数M(i)}。比较的次数大致为N(i);而如果在一个文件中顺序读取一个区域并且计算它的某个整体评定值,这个花费的时间为Tb(i),与取样长度、计算程序、设备性能等相关。

总体的比较时间大致是Ta(i)*N(i)*Tb(i)+{Tc(i)*M(i)}

逐字节比较,其中Tb(i)、Ta(i)都是最短的,但是N(i)最大,

总之,可以设计不同的算法,通过实际环境和文件的检测,来决定采用何种算法。

外一则:

两个取样内容, MD5等算法的计算值 不同,则内容一定不同; 计算值相同,则 内容可能相同,但可能性是否达到100%,内容相同的概率是多少,根据编码范围、算法来确定。如果是比较一个文件和许多其他文件是否相同,并且提前知道其他文件的 MD5 值,可先比较 MD5 值可以大大提高文件比较的速度。

有两个名字一样的java文件,怎样比较其内容的不同地方(一个是以前写的,一个更新的程序)?有什么方法?

1、如果一个是本地文件,一个是svn服务器上的,可以直接使用eclipse里面svn的“比较对象”——“资源库中的最新内容”(你的应该是英文)

2、UltraEdit中“文件”——“比较文件”,选中要比较的两个文件即可。

如何将java文件内容进行比较

比较文件的MD5即可

import java.io.File;

import java.io.FileInputStream;

import java.math.BigInteger;

import java.security.MessageDigest;

import java.util.HashMap;

import java.util.Map;

public class FileDigest {

/**

* 获取单个文件的MD5值!

* @param file

* @return

*/

public static String getFileMD5(File file) {

if (!file.isFile()){

return null;

}

MessageDigest digest = null;

FileInputStream in=null;

byte buffer[] = new byte[1024];

int len;

try {

digest = MessageDigest.getInstance(“MD5”);

in = new FileInputStream(file);

while ((len = in.read(buffer, 0, 1024)) != -1) {

digest.update(buffer, 0, len);

}

in.close();

} catch (Exception e) {

e.printStackTrace();

return null;

}

BigInteger bigInt = new BigInteger(1, digest.digest());

return bigInt.toString(16);

}

/**

* 获取文件夹中文件的MD5值

* @param file

* @param listChild ;true递归子目录中的文件

* @return

*/

public static MapString, String getDirMD5(File file,boolean listChild) {

if(!file.isDirectory()){

return null;

}

//filepath,md5

MapString, String map=new HashMapString, String();

String md5;

File files[]=file.listFiles();

for(int i=0;ifiles.length;i++){

File f=files[i];

if(f.isDirectory()listChild){

map.putAll(getDirMD5(f, listChild));

} else {

md5=getFileMD5(f);

if(md5!=null){

map.put(f.getPath(), md5);

}

}

}

return map;

}

public static void main(String[] args) {

File file1 = new File(“a.txt”);

File file2 = new File(“b.txt”);

System.out.println(getFileMD5(file1).equals(getFileMD5(file2)));

}

}

java 文件内容 比较

比较文件的MD5即可

import java.io.File;

import java.io.FileInputStream;

import java.math.BigInteger;

import java.security.MessageDigest;

import java.util.HashMap;

import java.util.Map;

public class FileDigest {

/**

* 获取单个文件的MD5值!

* @param file

* @return

*/

public static String getFileMD5(File file) {

if (!file.isFile()){

return null;

}

MessageDigest digest = null;

FileInputStream in=null;

byte buffer[] = new byte[1024];

int len;

try {

digest = MessageDigest.getInstance(“MD5”);

in = new FileInputStream(file);

while ((len = in.read(buffer, 0, 1024)) != -1) {

digest.update(buffer, 0, len);

}

in.close();

} catch (Exception e) {

e.printStackTrace();

return null;

}

BigInteger bigInt = new BigInteger(1, digest.digest());

return bigInt.toString(16);

}

/**

* 获取文件夹中文件的MD5值

* @param file

* @param listChild ;true递归子目录中的文件

* @return

*/

public static MapString, String getDirMD5(File file,boolean listChild) {

if(!file.isDirectory()){

return null;

}

//filepath,md5

MapString, String map=new HashMapString, String();

String md5;

File files[]=file.listFiles();

for(int i=0;ifiles.length;i++){

File f=files[i];

if(f.isDirectory()listChild){

map.putAll(getDirMD5(f, listChild));

} else {

md5=getFileMD5(f);

if(md5!=null){

map.put(f.getPath(), md5);

}

}

}

return map;

}

public static void main(String[] args) {

File file1 = new File(“a.txt”);

File file2 = new File(“b.txt”);

System.out.println(getFileMD5(file1).equals(getFileMD5(file2)));

}

}

关于java文件夹比较和java 写文件的三种方法比较的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月1日 06:55:03
下一篇 2024年4月1日 07:02:18

相关推荐

  • linux给文件写权限,linux怎么给文件权限

    linux宝塔写入权限不足 1、可以使用chmod命令修改权限。语法:chmod [-cfvR] [–help] [–version] mode file…说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。 2、通过更改文件权限可以使用c…

    2024年5月23日
    5000
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4800
  • c语言多文件调用,c语言多文件操作

    c语言一个结构体如何在多个源文件里面调用? 在这种方法中,可以先将多个源文件分别编译成目标文件,然后再将它们链接成一个可执行文件。 在头文件里定义结构,例如:typedef struct { int a, b;} S;S s_instance;在其他文件里引用就可以。 创建程序入口点main函数,在main函数中条用其它函数。达到同时运行的母的。如果不这样,…

    2024年5月23日
    4100
  • linux.o生成,linux 生成core文件

    linux下多个.o文件如何链接生成可执行程序 你好!很简单,使用-o选项就可以了。如果有a.o,b.o,c.o,d.o4个.o文件,则使用以下命令:gcc -o (生成的目标名称)test a.o b.o c.o d.o 希望对你有所帮助,望采纳。 连接成可执行文件了:gcc hello.c -o h 这时,你的当前目录下就多出了一个叫 h 的文件,它就是…

    2024年5月23日
    4200
  • 为linux命令做链接gcc,linux cp 链接文件

    linux系统中gcc的命令怎么用? 1、linux系统常用操作命令linux系统常用操作命令如下:ls:全拼list,功能是列出目录的内容及其内容属性信息。cd:全拼change directory,功能是从当前工作目录切换到指定的工作目录。cp:全拼copy,其功能为复制文件或目录。 2、linux系统常用操作命令如下:ls:全拼list,功能是列出目录…

    2024年5月23日
    4100
  • java将文件转换为二进制,java将文件转成二进制

    Java中如何把图片转换成二进制流 1、所以定义的数组长度为10240,也就是10kb吧,当然你也可以定义小点,然後分次读。反正二进制都在这个数组里面,最後两句我只是举了个例子教你怎麼看这个二进制,第一个是现实二进制对应的整数,第二个是显示二进制了。 2、//执行 g.dispose(); //输出图片结果 saveImage(image); }我能够输出绘…

    2024年5月23日
    4100
  • java读取文件内容乱码,java读取文件编码格式

    java中filewriter中文乱码怎么解决? 1、如果你期望写到文件中的汉字是 GBK编码,可以写文件时,将字符串准换成 GBK编码的byte[]。网页编码和输出流编码一致。 2、读取文件的时候如果是用的read方法(字节流),碰到中文输出就是乱码,然后存储的时候设置下编码为GBK或者是UTF-8形式即可,可以有效的解决乱码问题。 3、只是个别文件出现了…

    2024年5月23日
    4600
  • java写property文件,java写入properties

    javaweb怎样在classpath建立一个property配置文件 1、一般在scr下面新建一个属性文件*.properties,如a.properties 然后在Java程序中读取或操作这个属性文件。 2、在我的电脑界面,鼠标右键点击“此电脑”。在弹出的列表中,点击最下方的“属性”。在跳转到的界面中,点击“高级系统设置”。在弹出的系统属性界面,点击右下…

    2024年5月23日
    4600
  • excel文件多人同时编辑,excel文件怎么多人编辑

    多人编辑同一个excel怎么弄 1、点击审阅 打开Excel表格,点击界面上方的审阅。共享工作簿 点击界面右上方的共享工作簿。勾选同时编辑 勾选允许多用户同时编辑,点击下面的确定。 2、打开需要进行协同编辑的Excel表格,在菜单栏中找到【特色应用】选项。单击【特色应用】项下的【在线协作】功能。弹出一个上传文档的窗口,需等待文件上传成功后进行下一步操作。 3…

    2024年5月23日
    3800
  • linux上传文件覆盖,linux文件覆盖命令

    linux怎样将文件覆盖到另一个文件 1、cp -f 强行复制文件或目录,不论目标文件或目录是否已存在。 2、linux系统使用cp命令即可将一个文件夹里面的文件复制到另外一个文件夹里面。这个命令相当于dos下面的copy命令,具体用法是:cp_r源文件目的文件,其中参数r是指连同源文件中的子目录一同拷贝。 3、Linux cp命令主要用于复制文件或目录,英…

    2024年5月23日
    3900

发表回复

登录后才能评论



关注微信