可以比较两个任意格式的文件,但文件不能太大。如果文件太大,可以分割文件比较,因为会在“ byte[] data1 = new byte[len1];”报错,所以要在“todo”里面增添新的方法。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileCompare
{
public FileCompare()
{
boolean isEqa = verifyFile("f://file1.flv", "f://file2.flv");
System.out.println(isEqa);
}
private boolean verifyFile(String fileName1, String fileName2)
{
FileInputStream fis1 = null;
FileInputStream fis2 = null;
try
{
fis1 = new FileInputStream(fileName1);
fis2 = new FileInputStream(fileName2);
int len1 = fis1.available();
int len2 = fis2.available();
if (len1 == len2)
{
byte[] data1 = new byte[len1];
byte[] data2 = new byte[len2];
fis1.read(data1);
fis2.read(data2);
for (int i = 0; i < len1; i++)
{
if (data1[i] != data2[i])
{
return false;
}
}
return true;
} else
{
return false;
}
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
} catch (OutOfMemoryError e)
{ //todo:分割方法
e.printStackTrace();
} finally
{
closeFileStream(fis1, fis2);
}
return false;
}
private void closeFileStream(FileInputStream fis1, FileInputStream fis2)
{
if (fis1 != null)
{
try
{
fis1.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
if (fis2 != null)
{
try
{
fis2.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
new FileCompare();
}
}
本文介绍了一个简单的文件比较工具的实现方法,该工具能够比较两个文件的内容是否完全相同。通过使用Java的FileInputStream,此工具能够逐字节读取并比较文件数据。当文件大小适中时,可以直接加载到内存中进行对比;对于超大文件,则需要实现额外的方法来分块处理。


被折叠的 条评论
为什么被折叠?



