java實(shí)現(xiàn)兩個文件的異或運(yùn)算
本文實(shí)例為大家分享了java實(shí)現(xiàn)兩個文件的異或運(yùn)算的具體代碼,供大家參考,具體內(nèi)容如下
以下代碼是將兩個大小相同的文件異或之后生成一個新的文件,具體思想是用FileInputStream方法讀取文件,以字節(jié)為單位對兩個文件進(jìn)行異或運(yùn)算,然后用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();//計(jì)算文件的大小 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]; //存放文件異或的最后一部分,因?yàn)槲募拇笮】赡懿皇?024的整數(shù)倍,如果繼續(xù)用bufc的話輸出的文件大小會比應(yīng)有值大 //就是最后一個字節(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(); //關(guān)閉輸入輸出流 fileb.close(); fos.close(); } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?boot?RedisTemplate?序列化服務(wù)化配置方式
這篇文章主要介紹了Springboot?RedisTemplate序列化服務(wù)化配置方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07Dubbo在Spring和Spring Boot中的使用詳解
這篇文章主要介紹了Dubbo在Spring和Spring Boot中的使用詳解,需要的朋友可以參考下2017-10-10Spring如何根據(jù)條件創(chuàng)建bean,@Conditional注解使用方式
這篇文章主要介紹了Spring如何根據(jù)條件創(chuàng)建bean,@Conditional注解使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06Maven多模塊及version修改的實(shí)現(xiàn)方法
這篇文章主要介紹了Maven多模塊及version修改的實(shí)現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06Mybatis Plus 代碼生成器的實(shí)現(xiàn)
這篇文章主要介紹了Mybatis Plus 代碼生成器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03