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("程序结束");:输出程序结束的提示信息。
相关推荐
吃饱了得干活3 分钟前
Java并发安全:看这一篇就懂了!
java·后端·面试
前端双越老师5 分钟前
前端学习 Java 其实很容易:TS 和 Java 语法的 N 个相同点
java·全栈
Claire_885 分钟前
企业文件管理系统选型技术框架与主流产品对比分析
开发语言·php
(Charon)13 分钟前
【C++】:使用 mutex + deque 实现一个简单的 LockedQueue
开发语言·c++
星轨初途23 分钟前
LeetCode 热题 100——day10 和为 K 的子数组
开发语言·c++·算法·leetcode
sycmancia25 分钟前
Qt——自定义控件温度计
开发语言·qt
Q741_14737 分钟前
TcpDump 使用笔记
网络·c++·笔记·测试工具·tcpdump
疯狂打码的少年42 分钟前
【数据结构】队列的应用:循环队列
数据结构·笔记·算法
evans在进步1 小时前
LeetCode 17:电话号码的字母组合——Java DFS 回溯法详解
java·leetcode·深度优先
2401_850481171 小时前
UVA10391
java