#include<fstream>
using namespace std
int main(int argc, char *argv[]){
if(argc!=3){
cerr <<"命令行喊物格式错,请使用格式:\n程序名 文件名1 文件名2\n"
return 1
}
ifstream fin1(argv[1],ios::binary)
ifstream fin2(argv[2],ios::binary)
if(!fin1 || !fin2){
cerr <<掘梁"打开文件时出错。请检查文件名:\n" <<argv[1] <<"或:\n" <<argv[2] <<endl
return 1
}
fin1.seekg(0, ios::end)
fin2.seekg(0, ios::end)
if(fin1.tellg()!=fin2.tellg()){
fin1.close()
fin2.close()
cout <<"Dif\n"
return 0
}
fin1.seekg(0,ios::beg)
fin2.seekg(0,ios::beg)
int r1,r2
char b1[512],b2[512]
fin1.read(b1,512)
fin2.read(b2,512)
r1=fin1.gcount()
r2=fin2.gcount()
if(r1!=r2){
fin1.close()
fin2.close()
cerr <<"读文件时出错。\n"
return 1
}
int i
while(!fin1.eof()){
for(i=0i<r1i++){
if(b1[i]!=b2[i]){
fin1.close()
fin2.close()
cout <<"郑散液Dif\n"
return 0
}
}
fin1.read(b1,512)
fin2.read(b2,512)
r1=fin1.gcount()
r2=fin2.gcount()
if(r1!=r2){
fin1.close()
fin2.close()
cerr <<"读文件时出错。\n"
return 1
}
}
fin1.close()
fin2.close()
cout <<"Same\n"
return 0
}
1)程序运行开始的时候,提示输出两个文件的路径;2)程序一行一行比较,当其中有一行不一样的时候,提示文茄弯件内容不同的行数以及内容;
3)如果文件内容一样,提示用户内容一样。
package buffered
import java.io.*
import java.lang.String
import java.util.Scanner
public class BufferedTest
{
public static void main(String[] args){
try{Scanner readr=new Scanner(System.in)<br/>System.out.println("输入第一个文件的路径及文件名:")<br/>String file1=readr.next()<br/>System.out.println("输入第二个文件的路径及文件名:")<br/>String file2=readr.next()<br/>FileReader inOne1=new FileReader(file1)<br/唯纳罩>BufferedReader inTwo1=new BufferedReader(inOne1)<br/>String s1=null<br/>int i=0//行数 <br/>boolean b=true//检察是行数 <br/>FileReader inOne2=new FileReader(file2)<br/>BufferedReader inTwo2=new BufferedReader(inOne2)<br/>String s2=null<br/>//文件内容对比 <br/>while((s1=inTwo1.readLine())!=null){ <br/>i++<br/>while((s2=inTwo2.readLine())!=null){ <br/><br/>if(s1.equals(s2)!=true){ <br/>System.out.println("第"+i+"行:"+s1+"和"+s2+"内容不一样")<br/>b=false<br/指闹>}
break
}
}
if(b){System.out.println("文件内容一样")}
}
catch(IOException e){
System.out.println(e)
}
}
}
本不想来啰嗦,但销镇楼上的程序的确有缺陷。如果两个文件长度不同,上面的程序就会得出错误结果。比如头一个文件内容为:abcde第二个文件内容为:abcdefg会得出错误结果。
程序改写如下,已编译通过:
#include
<stdio.h>
#include
<stdlib.h>
int
main(){
FILE
*
f1
=
fopen("dd.txt","r")/*
改戚颂为实际文件名
*/
FILE
*
f2
=
fopen("bb.txt","r")
char
c1
=
fgetc(f1)
char
c2
=
fgetc(f2)
while(!feof(f1)
&&
!feof(f2)){
if(c1
!=
c2){printf("NO")system("pause")return
0}
c1
=
fgetc(f1)
c2
=
fgetc(f2)
}
if(c1==EOF&&c2==EOF)
/*
判断两个文件是否高斗郑都到结尾
*/
printf("YES")
else
printf("NO")
printf("\n")
fclose(f1)
fclose(f2)
system("pause")
return
0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)