posts - 2,  comments - 0,  views - 462

来个好玩的小案例

复制代码
 1 package ZY.day09.ZZZ333;
 2 
 3 import java.io.*;
 4 import java.util.Scanner;
 5 
 6 public class zbt {
 7     public static void main(String[] args) throws IOException {
 8 
 9        Jia("D:\\原神\\Genshin Impact\\Genshin Impact Game\\新建 RTF 文件.rtf");
10        Jie("D:\\原神\\Genshin Impact\\Genshin Impact Game\\新建 RTF 文件.rtf");
11 
12 
13 
14 //**需求背景**:为了保证磁盘文件数据的安全性,就需要对原始文件进行加密存储,再使用的时候再对其进行解密处理。
15 //        加密原理:对原始文件中的每一个字节数据进行更改,然后将更改以后的数据存储到新的文件中。
16 //        解密原理:  读取加密后的文件,把每个字节数据进行还原,然后将还原后的数据存储的新文件中.
17 //                **实现提示**:
18 //        1. 定义两个方法, 一个用来给文件加密(参数是"要加密的文件的绝对路径"), 一个用来给文件解密(参数是"要解密的文件的绝对路径")
19 
20     }
21     public static void Jia(String s) throws IOException {
22 //1.把"要加密的原文件的绝对路径"的字符串,转换为"源文件File对象"
23        File  Yfile = new File(s);
24 //2.获取"源文件File对象"所在的文件夹getParent
25         String parent = Yfile.getParent();
26 //3.根据"源文件File对象"创建文件输入流FileInputStream
27        FileInputStream fis = new FileInputStream(Yfile);
28 //4.创建"加密后文件"对象(文件名任意,例如jm.bak,但所在文件夹为"源文件File对象"所在的文件夹)
29         File eFile = new File(parent, "jm.bak");
30         //5.根据"加密后文件"对象,创建文件输出流FileOutputStream
31         FileOutputStream fos = new FileOutputStream(eFile);
32 //6.使用输入流读,使用输出流写,进行文件复制
33 //7.一次读取一个文件
34         int len;
35         while ((len=fis.read())!=-1){
36 //8.每次读取一个字节后,先加密(比如让每个字节"异或10"),然后再写入
37             fos.write(len^10);
38         }
39         //9.关闭输入流和输出流
40         fis.close();
41         fos.close();
42         //10.删除要加密的源文件
43         Yfile.delete();
44         //11.把"加密后文件"重命名为源文件
45         eFile.renameTo(Yfile);
46         //       加密后文件File对象.renameTo(源文件File对象);
47 
48 
49     }
50 
51     public static void Jie(String a) throws IOException {
52 //1.把"要解密的文件"的字符串,转换为"解密文件File对象"
53         File file = new File(a);
54 //2.获取"解密文件File对象"所在的文件夹getParent()
55         String parent = file.getParent();
56 //3.根据"解密文件File对象"创建文件输入流FileInputStream
57      FileInputStream f11= new FileInputStream(file);
58 //4.创建"解密后文件"对象(文件名任意,例如jm.bak,但所在文件夹为"解密文件File对象"所在的文件夹)
59        File file1 = new File(parent, "jm.bak");
60 //5.根据"解密后文件"对象,创建文件输出流FileOutputStream
61         FileOutputStream f22 = new FileOutputStream(file1);
62 //6.使用输入流读,使用输出流写,进行文件复制
63 //7.一次读取一个文件
64 //8.每次读取一个字节后,再次异或(比如还是"异或10"),然后再写入
65 //9.关闭输入流和输出流
66         int len;
67         while ((len=f11.read())!=-1){
68             f22.write(len^10);
69         }
70         f11.close();
71         f22.close();
72         //10.删除"要解密的文件"
73 file.delete();
74 //11.把"解密后文件"的文件重命名为"要解密的文件"
75         file1.renameTo(file);
76         //       file.renameTo(dfile);
77 
78     }
79    }
复制代码

 

posted on   神奇的阿久  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示