Android 查找相同的文件

Android 查找相同的文件,android,file,compare,byte,Android,File,Compare,Byte,考虑文件夹中的1000个文件。现在我想在该文件夹中找到相同的文件 我一个字节一个字节地比较了一遍,但花了很长时间才完成。 这是密码 fs1=new BufferedInputStream(new FileInputStream(file1)); fs2=new BufferedInputStream(new FileInputStream(file2)); int b1,b2; do { b1=fs1.read(); b2=fs2.read(); if(b1!=b2) {

考虑文件夹中的1000个文件。现在我想在该文件夹中找到相同的文件

我一个字节一个字节地比较了一遍,但花了很长时间才完成。 这是密码

fs1=new BufferedInputStream(new FileInputStream(file1));
fs2=new BufferedInputStream(new FileInputStream(file2));

int b1,b2;
do
{
b1=fs1.read();
b2=fs2.read();
    if(b1!=b2)
    {
        match=false;    
        break;
    }
}while(found && b1 !=- 1);

if(match)
{
    Log.e("cyb", "Matched");
}

找到相同文件的任何其他方法?

要优化代码,首先要检查比较文件的大小。如果大小不一样,那么将文件读入内存并逐字节比较就没有意义了


您可以做的另一件事是首先计算每个文件的CRC,然后仅对具有相同CRC(和相同长度)的文件进行实际比较。如果您正在处理许多相同长度的不同文件,这将大大限制昂贵的逐字节比较的数量。

要优化代码,首先应该检查比较文件的大小。如果大小不一样,那么将文件读入内存并逐字节比较就没有意义了


您可以做的另一件事是首先计算每个文件的CRC,然后仅对具有相同CRC(和相同长度)的文件进行实际比较。如果您正在处理许多相同长度的不同文件,这将大大限制昂贵的逐字节比较的数量。

您使用了什么方法?看看这个问题的答案:另外,你应该确保你只获得一次每个文件的大小(例如,将其缓存在地图中)Ok bro。我会尝试一下并告诉你。对你的CRC想法很好奇-是否有一个预计算的、存储的CRC,以某种方式可用,从而不用读取文件来创建一个?除非有,否则这似乎效率低下,尽管文件大小的想法当然很重要。请注意,您不必逐个字节进行比较,您可以将指针投射到字大小单位并进行比较,直到最后得到一个可能的余数。我不认为您可以从Java访问存储在任何位置(文件系统中?)的预计算CRC。不管怎么说,如果你碰巧处理了许多相同长度的不同文件,这个方法可能会很好——所以这取决于数据。你使用了什么方法?看看这个问题的答案:另外,你应该确保你只获得一次每个文件的大小(例如,将其缓存在地图中)Ok bro。我会尝试一下并告诉你。对你的CRC想法很好奇-是否有一个预计算的、存储的CRC,以某种方式可用,从而不用读取文件来创建一个?除非有,否则这似乎效率低下,尽管文件大小的想法当然很重要。请注意,您不必逐个字节进行比较,您可以将指针投射到字大小单位并进行比较,直到最后得到一个可能的余数。我不认为您可以从Java访问存储在任何位置(文件系统中?)的预计算CRC。无论如何,如果您碰巧处理许多相同长度的不同文件,那么该方法可能会很好——因此它取决于数据。