Cet exemple partage le code spécifique pour Java pour implémenter l'opération XOR de deux fichiers pour votre référence. Le contenu spécifique est le suivant
Le code suivant consiste à générer un nouveau fichier après deux fichiers de la même taille. L'idée spécifique est d'utiliser la méthode FileInputStream pour lire le fichier, effectuer l'opération XOR dans les deux fichiers en octets, puis utiliser la méthode FileOutputStream pour sortir le fichier. Le code spécifique est le suivant:
import java.io.file; import java.io.fileInputStream; import java.io.fileoutputStream; import java.io.ioException; public class test {int i = 0; statique int count = 0; public static void main (String [] args) lève ioException {// Create Byte Input Stream FileInputStream Filea = new FileInputStream ("d: // javaxor // a"); FileInputStream fileB = new FileInputStream ("d: // javaxor // b"); File outfile = nouveau fichier ("d: // javaxor // outfile"); int FileSizea = filea.available (); // Calculez la taille du fichier fileoutputStream fos = new FileOutputStream (outfile); octet [] bufa = nouveau octet [1024]; // Byte de stockage Tableau d'octet de fichier filea [] bufb = nouveau octet [1024]; // Array d'octet de stockage d'octet de fichier fileb [] bufc = nouveau octet [1024]; // stockage le tableau d'octets après deux fichiers xor byte [] buf_yu = new byte [filesizea% 1024]; // Stockage La dernière partie du fichier XOR, car la taille du fichier peut ne pas être un multiple entier de 1024. Si vous continuez à utiliser BUFC, la taille du fichier de sortie sera supérieure à la valeur. int hasreadb = 0; // La méthode read () de la classe FileInputStream met le flux de lecture dans BUFA et attribue le nombre d'octets à Hasreada // La fonction suivante traite la dernière partie du fichier et d'autres pièces respectivement while (((hasreada = filea.read (bufb))> 0) {(hasreadb = fileb.read (bufb))> 0)) { if (count <filesizea-filesia% 1024) {for (int i = 0; i <bufa.length && count <filesizea-filesia% 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-filesia% 1024 && count <filesizea) {for (int j = 0; count> = filesizea-filesiaea% 1024 && count <filezea; j ++) {FileSiaSea buf_yu [j] = (byte) ((bufa [j] ^ bufb [j]) & 0xff); Count ++; } fos.write (buf_yu); }} System.out.println (count); filea.close (); // Fermez le flux d'entrée et de sortie fileb.close (); fos.close (); }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.