java實現(xiàn)兩個文件的異或運算
更新時間:2018年07月03日 10:11:07 作者:卡夫卡的DOVE
這篇文章主要為大家詳細介紹了java實現(xiàn)兩個文件的異或運算,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java實現(xiàn)兩個文件的異或運算的具體代碼,供大家參考,具體內容如下
以下代碼是將兩個大小相同的文件異或之后生成一個新的文件,具體思想是用FileInputStream方法讀取文件,以字節(jié)為單位對兩個文件進行異或運算,然后用FileOutputStream方法輸出文件,具體代碼如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test
{
int i=0;
static int count=0;
public static void main(String[] args) throws IOException
{
//創(chuàng)建字節(jié)輸入流
FileInputStream filea = new FileInputStream("d:\\JavaXor\\a");
FileInputStream fileb = new FileInputStream("d:\\JavaXor\\b");
File outfile=new File("d:\\JavaXor\\outfile");
int filesizea=filea.available();//計算文件的大小
FileOutputStream fos=new FileOutputStream(outfile);
byte[] bufa = new byte[1024]; //存放filea文件的字節(jié)數(shù)組
byte[] bufb = new byte[1024]; //存放fileb文件的字節(jié)數(shù)組
byte[] bufc = new byte[1024]; //存放兩個文件異或后的字節(jié)數(shù)組
byte[] buf_yu=new byte[filesizea%1024]; //存放文件異或的最后一部分,因為文件的大小可能不是1024的整數(shù)倍,如果繼續(xù)用bufc的話輸出的文件大小會比應有值大
//就是最后一個字節(jié)數(shù)組沒有放滿1024個字節(jié)
int hasReada = 0;
int hasReadb = 0;
//FileInputStream類的read()方法把讀取的流放在bufa中,并且返回字節(jié)的個數(shù)賦給hasReada
//下面的函數(shù)就是將文件的最后一部分與其他部分分別對待
while( ((hasReada=filea.read(bufa))>0) && ((hasReadb=fileb.read(bufb))>0) )
{
if(count<filesizea-filesizea%1024)
{
for(int i=0;i<bufa.length && count<filesizea-filesizea%1024;i++)
{
bufc[i]=(byte)((bufa[i]^bufb[i]) & 0xFF);
count++;
}
fos.write(bufc);
}
else if(count>=filesizea-filesizea%1024 && count<filesizea)
{
for(int j=0; count>=filesizea-filesizea%1024 && count<filesizea ;j++)
{
buf_yu[j]=(byte)((bufa[j]^bufb[j]) & 0xFF);
count++;
}
fos.write(buf_yu);
}
}
System.out.println(count);
filea.close(); //關閉輸入輸出流
fileb.close();
fos.close();
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Spring?boot?RedisTemplate?序列化服務化配置方式
這篇文章主要介紹了Springboot?RedisTemplate序列化服務化配置方式,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
Dubbo在Spring和Spring Boot中的使用詳解
這篇文章主要介紹了Dubbo在Spring和Spring Boot中的使用詳解,需要的朋友可以參考下2017-10-10
Spring如何根據(jù)條件創(chuàng)建bean,@Conditional注解使用方式
這篇文章主要介紹了Spring如何根據(jù)條件創(chuàng)建bean,@Conditional注解使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06

