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("程序结束");:输出程序结束的提示信息。
相关推荐
猫猫不是喵喵.几秒前
Java开发高频面试题汇总(通俗易懂版)
java·开发语言·java高频面试
k4m7v2pz7 分钟前
用 rust-verb-shell 重写进程管理:从 game.sh 到 .rvs 的迁移实录
开发语言·后端·rust
2603_965896629 分钟前
JavaScript 对象零基础详解|属性、方法、遍历、增删改查
开发语言·javascript·ecmascript
我命由我1234511 分钟前
Android 设备的日志缓冲区被写满,logcat: Unexpected EOF!
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
dear_bi_MyOnly14 分钟前
数组字符串深度解析:从入门到卡牌实战
开发语言·c++·学习
xcl092516 分钟前
分销返利商城系统开发实战:返利算法与架构设计指南
java·spring boot
正在走向自律19 分钟前
从 Python 基础到大模型落地:读《深入浅出 Python 人工智能》,吃透 AI 工程化 CRUD 实战
开发语言·人工智能·python·机器学习·知识脉络
171320330计算机毕设编程20 分钟前
2027计算机毕设五大方向对比&选题推荐
java·ide·python·算法·django·php·推荐算法
171320330计算机毕设编程21 分钟前
基于SpringBoot的在线拍卖系统
android·java·spring boot·小程序·课程设计
未秃头的程序猿26 分钟前
一次秒杀把服务打挂了,我用Sentinel规则配置化救了回来
java·后端·spring cloud