Este exemplo compartilha o código específico para Java implementar a operação XOR de dois arquivos para sua referência. O conteúdo específico é o seguinte
O código a seguir é gerar um novo arquivo após dois arquivos do mesmo tamanho. A idéia específica é usar o método FileInputStream para ler o arquivo, executar operação XOR nos dois arquivos em bytes e, em seguida, usar o método FileOutputStream para emitir o arquivo. O código específico é o seguinte:
importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar java.io.ioException; public class Test {int i = 0; estático int contagem = 0; public static void main (string [] args) lança IoException {// Crie bytes de entrada de fluxo FileInputStream filea = new FileInputStream ("d: // javaxor // a"); FileInputStream fileB = new FileInputStream ("d: // javaxor // b"); Arquivo outfile = novo arquivo ("d: // javaxor // outfile"); int filesizea = filea.Available (); // Calcule o tamanho do arquivo FileOutputStream fos = new FileOutputStream (outfile); byte [] BUFA = novo byte [1024]; // Matriz de bytes de armazenamento do arquivo filea byte [] bufb = novo byte [1024]; // Matriz de bytes de armazenamento do arquivo fileb byte [] bufc = novo byte [1024]; // armazenamento a matriz de bytes após dois arquivos xor byte [] buf_yu = new Byte [filesizea%1024]; // armazenamento a última parte do arquivo xor, porque o tamanho do arquivo pode não ser um múltiplo inteiro de 1024. Se você continuar usando o BUFC, o tamanho do arquivo de saída será maior que o valor./ ou é, a última matriz de bytes não será preenchida com 1024 bytes int hasreada = 0; int hasReadb = 0; // O método read () da classe FileInputStream coloca o fluxo de leitura no BUFA e atribui o número de bytes a hasreada // a seguinte função trata a última parte do arquivo e outras partes, respectivamente, (((hasreadAs = FileAl.read))> 0) && (hasadb = FileB. (bufb))> 0)) for (int i = 0; i <bufa.length && count <filesizea-fileAea%1024; i ++) {bufc [i] = (byte) ((bufa [i]^bufb [i]) e 0xff); contagem ++; } fos.write (bufc); } else if (count> = filesizea-filesea%1024 && count <filesizea) {for (int j = 0; count> = filesizea-fileaea%1024 && count <filesizea) {for (int j = 0; count> = fileSizea-filesizeea%1024 && contam <arquivosiZeAl; buf_yu [j] = (byte) ((BUFA [j]^bufb [j]) e 0xff); contagem ++; } fos.write (buf_yu); }} System.out.println (contagem); fila.close (); // Fechar o fluxo de entrada e saída fileb.close (); fos.close (); }}O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.