IO流练习(加密和解密文件)

java 复制代码
package com.lkbhua.IO.Test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class test2 {
    public static void main(String[] args) throws IOException {
        /*   加密和解密文件   */

        // ^ 异或:0^0=0,0^1=1,1^0=1,1^1=0 两边相同false、否则true
        // 一个数字异或两次相同的数字,结果为本身
        // 加密: 拿着原本的数据进行异或,得到一个密文
        // 解密: 拿着密文进行异或,得到原本的数据

        // 1、创建对象关联原始文件
        FileInputStream fis = new FileInputStream("C:\\Users\\27116\\Desktop\\test\\a.txt");
        // 2、创建对象关联加密文件
        FileOutputStream fos = new FileOutputStream("C:\\Users\\27116\\Desktop\\test\\b.txt");
        // 3、加密处理
        int b;
        while ((b = fis.read()) != -1) {
            fos.write(b ^ 5);
        }
        fos.close();
        fis.close();
        System.out.println("加密完毕");
        // 4、解密处理
        FileInputStream fis2 = new FileInputStream("C:\\Users\\27116\\Desktop\\test\\b.txt");
        FileOutputStream fos2 = new FileOutputStream("C:\\Users\\27116\\Desktop\\test\\c.txt");
        while ((b = fis2.read()) != -1) {
            fos2.write(b ^ 5);
        }
        fos2.close();
        fis2.close();
        System.out.println("解密完毕");
        System.out.println("程序结束");
    }
}
加密部分
  • FileInputStream fis = new FileInputStream("C:\\Users\\27116\\Desktop\\test\\a.txt");:创建 FileInputStream 对象 fis,用于读取原始文件 a.txt
  • FileOutputStream fos = new FileOutputStream("C:\\Users\\27116\\Desktop\\test\\b.txt");:创建 FileOutputStream 对象 fos,用于写入加密后的文件 b.txt
  • int b;:声明一个整型变量 b,用于存储读取到的字节。
  • while ((b = fis.read()) != -1):循环读取文件中的字节,直到文件末尾(返回 -1)。
  • fos.write(b ^ 5);:将读取到的字节 b5 进行异或运算,并将结果写入到 b.txt 文件中。
  • fos.close();fis.close();:关闭文件流,释放资源。
  • System.out.println("加密完毕");:输出加密完成的提示信息。
解密部分
  • FileInputStream fis2 = new FileInputStream("C:\\Users\\27116\\Desktop\\test\\b.txt");:创建 FileInputStream 对象 fis2,用于读取加密文件 b.txt
  • FileOutputStream fos2 = new FileOutputStream("C:\\Users\\27116\\Desktop\\test\\c.txt");:创建 FileOutputStream 对象 fos2,用于写入解密后的文件 c.txt
  • while ((b = fis2.read()) != -1):循环读取文件中的字节,直到文件末尾(返回 -1)。
  • fos2.write(b ^ 5);:将读取到的字节 b5 进行异或运算,并将结果写入到 c.txt 文件中。
  • fos2.close();fis2.close();:关闭文件流,释放资源。
  • System.out.println("解密完毕");:输出解密完成的提示信息。
  • System.out.println("程序结束");:输出程序结束的提示信息。
相关推荐
TracyCoder12317 小时前
Java String:从内存模型到不可变设计
java·算法·string
想用offer打牌17 小时前
Spring AI Alibaba与 Agent Scope到底选哪个?
java·人工智能·spring
情缘晓梦.17 小时前
C++ 内存管理
开发语言·jvm·c++
黄晓琪17 小时前
Java AQS底层原理:面试深度解析(附实战避坑)
java·开发语言·面试
我是大咖17 小时前
二维数组与数组指针
java·数据结构·算法
_ziva_17 小时前
Miniconda 下载 + 安装 + VS Code 集成使用教程
笔记
姓蔡小朋友17 小时前
Java 定时器
java·开发语言
crossaspeed17 小时前
Java-SpringBoot的启动流程(八股)
java·spring boot·spring
tq108617 小时前
商业环境中的三重生命:自然、职业与组织的平衡模型
笔记
百锦再18 小时前
python之路并不一马平川:带你踩坑Pandas
开发语言·python·pandas·pip·requests·tools·mircro