Este ejemplo comparte el código específico para Java para implementar la operación XOR de dos archivos para su referencia. El contenido específico es el siguiente
El siguiente código es generar un nuevo archivo después de dos archivos del mismo tamaño. La idea específica es usar el método FileInputStream para leer el archivo, realizar la operación XOR en los dos archivos en bytes y luego usar el método FileOutputStream para emitir el archivo. El código específico es el siguiente:
import java.io.file; import java.io.fileinputstream; import java.io.fileOutputStream; import java.io.ioException; prueba de clase pública {int i = 0; static int count = 0; public static void main (string [] args) lanza IOException {// Crear byte Entrada Stream FileInputStream fileA = new FileInputStream ("d: // javaxor // a"); FileInputStream fileB = new FileInputStream ("d: // javaxor // b"); Archivo outfile = nuevo archivo ("d: // javaxor // outfile"); int filsizea = filea.available (); // Calcule el tamaño de archivo fileoutputStream fos = new FileOutputStream (OutFile); byte [] bufa = nuevo byte [1024]; // matriz de bytes de almacenamiento del archivo filea byte [] bufb = new byte [1024]; // matriz de bytes de almacenamiento del archivo FileB byte [] bufc = new Byte [1024]; // almacenamiento de la matriz de bytes después de dos archivos Xor byte [] buf_yu = new byte [filesizea%1024]; // Almacenamiento La última parte del archivo XOR, debido a que el tamaño del archivo puede no ser un múltiplo entero de 1024. Si continúa usando BUFC, el tamaño del archivo de salida será mayor que el valor que debe tener. int hasReadb = 0; // El método Read () de la clase FileInputStream coloca la transmisión de lectura en BUFA y asigna el número de bytes a Hasreada // La siguiente función trata la última parte del archivo y otras partes respectivamente mientras (((Hasreada = FileA.Read (BUFA))> 0) && (((Hasseadb = FileB.Read (BUFB)> 0))) for (int i = 0; i <bufa.length && count <filesizea-FILSIZEA%1024; i ++) {bufc [i] = (byte) ((bufa [i]^bufb [i]) & 0xff); contar ++; } fos.write (bufc); } else if (count> = filesizeA-FILSIZEA%1024 && count <filesizeA) {for (int j = 0; count> = filsizizea-FILSIEAA%1024 && count <filesizea) {for (int j = 0; count> = filesizea-filsizea%1024 && count <filesizea; j ++) { buf_yu [j] = (byte) ((bufa [j]^bufb [j]) & 0xff); contar ++; } fos.write (buf_yu); }} System.out.println (cuenta); filea.close (); // Cierre la transmisión de entrada y salida FileB.Close (); fos.close (); }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.