2015-09-04 42 views
0

我基本上是新编程,我想做一个程序,在一个文件夹中找到重复的文件(有大量的程序其中一些免费,不关心,我想要做我的程序),问题是什么礼仪需要2个文件是一个匹配? 起初我想如果他们是MP3,做一个名称和大小检查,一个PDF相同,一个TXT相同+实际内容检查? 而且按照这个顺序,我读了一个地方,首先他们正在检查大小,然后是其他的东西,这样对我来说并不合适。 我需要一些其他或更好的想法。什么标准应该适用于程序找到重复的匹配

谢谢

+0

查看比较2个文件的MD5校验和。 – McNultyyy

+1

你是这个开发项目的“客户”,所以你可以决定应该是什么标准。首先,问自己在这种情况下“你”“想要”重复“是什么意思。如果你不能告诉我们,那么我们不能开始建议你。 –

+0

感谢小伙子...仍然遇到一些问题,我在某处阅读,如果equals()是真的,那么散列码也是真实的,但是另一种方式,si不一定是真的。 – LES

回答

3

我认为这是您的想法来检查扩展名和文件大小是一种很好。根据你需要,我可以提示你,我认为会工作的东西是什么:

1.检查扩展:

当你想排除其中的一些。但是,如果你想严格检查里面的东西是行不通的。

简单的例子:内0001位具有

My_file.pdf,以及具有内部0001位My_file.jpg,将被排除在外,但它们仍然是相同的。

2.检查大小:

如果您将检查扩展,检查文件的大小是不具有包含两个文件“.PDF”(0001)和第二届(0100)很不错的主意职高,你可以伊斯利看到他们不是平等的,但检查大小将返回true,但当然,如果两个文件不相等的大小,你可以摆脱他们,并说他们不是平等的。

3.检查散列:从您的文件

制作乱码,比较它们会给你的信息,如果他们是平等的,淡然的散列函数总是返回相同的哈希值相同的对象。

检查更多:每字节https://en.wikipedia.org/wiki/Hash_function

4.检查字节:

虽然它不是非常好主意,但假设你有2x4GB的文件,你的哈希函数可以工作很长,每个字节当然字节将工作更长的时间,但你可以已经得到这样的情况:

File1.pdf(4GB)文件的Beggining:011010 ... 0 File2.pdf(4GB)111010 ... 0

正如你所看到的,首先检查第一个字节会自动返回那些文件不等于,并且你将节省很多时间。

当然,你必须考虑,你需要什么,你想如何比较你的文件,这些只是snipets,可以帮助你建立你的应用程序。

所有这些方法在Java中都很简单,您不会在实现它们时遇到任何问题。

PS:Sry为我的英语,这不是我的主要语言。

+0

1 - 正如我看到java返回全名(我的意思是扩展名),所以你不会有问题“MyPic.jpg”与“MyPic.png”相等,因为他们有不同的扩展名2 -i'm不确定我明白,2大小是否相等?我不知道你的意思在2评论,3 - 我会检查我不知道什么是散列,4 - 该计划的ideea主要是为MP3(我认为)现在我也想要小文件文本和pdf和其他扩展常用(我认为这是更难的照片) – LES

+0

@LES 1.是的,你可以很容易地检查在Java中的扩展,但你可以得到具有不同的扩展名和相同的数据里面,尤其是当你做这些文件由你自己。 2.我刚才说'file1的大小!= file2的大小',会起作用,但它们不可能相等,但'file1 == size2的大小'的信息一般不会告诉你。 3.你已经在Java中实现了散列函数(我不知道如何从对象类作品hashCode()我总是使用自定义散列函数,但我认为它会做这项工作) – Thodgnir

+0

但作为程序员知道如何散列功能起作用,它们通常被使用。 4.你使用什么扩展并不重要,用Java来检查这样的类,例如File,BufferedInputStream。但是如果你的程序使用小文件散列函数会好很多。 – Thodgnir