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("程序结束");:输出程序结束的提示信息。
相关推荐
在坚持一下我可没意见14 小时前
Python 修仙修炼录 08:字典秘境,参悟键值玄机
开发语言·笔记·python·入门·字典
凌波粒14 小时前
深度学习入门(鱼书)第1章笔记——Python 基础
笔记·python·深度学习
luck_bor14 小时前
Map&Stream流
java·开发语言
阿文的代码库14 小时前
如何在C++中使用标准库的智能指针
开发语言·c++·算法
用户2986985301414 小时前
Java 统计 Word 文档中的单词数量
java·后端
一只机电自动化菜鸟15 小时前
一建机电备考笔记(38) 焊接技术—焊接质量检验(含考频+题型)
笔记·学习·职场和发展·生活·学习方法
yujunl15 小时前
U9客开Demo代码中的错误
开发语言
郝学胜-神的一滴15 小时前
Qt 高级开发 008: 使用QSetting记住上次打开路径
开发语言·c++·qt·开源软件
_洋15 小时前
Three.js 着色器相关方法总结
开发语言·javascript·着色器
aini_lovee15 小时前
MATLAB 基于多层编码遗传算法的车间调度优化
开发语言·matlab