Java输入输出之文件字符IO流之文件加密
发布时间:2022-12-22 16:04:07 所属栏目:安全 来源:
导读: 任务描述
本关任务:对给定文件的内容加密,并将加密后的内容输出到另一个文件。
相关知识
之前我们学习了 Reader(字符输入流)和 Writer (字符输出流),下面我们来了解一下它们的常用
本关任务:对给定文件的内容加密,并将加密后的内容输出到另一个文件。
相关知识
之前我们学习了 Reader(字符输入流)和 Writer (字符输出流),下面我们来了解一下它们的常用
|
任务描述 本关任务:对给定文件的内容加密,并将加密后的内容输出到另一个文件。 相关知识 之前我们学习了 Reader(字符输入流)和 Writer (字符输出流),下面我们来了解一下它们的常用子类,FileReader (文件字符输入流)和 FileWriter(文件字符输出流)。 FileReader (文件字符输入流) FileReader 是 Reader 的子类,用于从文件中获取字符流。 ######FileReader 的构造方法 下表中是它的常用构造方法: 构造方法说明 FileReader(File file) 通过打开一个到实际文件的连接来创建一个 FileReader 对象,该文件通过文件系统中的 File 对象指定 FileReader(String name) 通过打开一个到实际文件的连接来创建一个 FileReader 对象文档内容加密,该文件通过文件系统中的路径名 name 指定 构造方法示例: public static void main(String[] args) throws IOException{// 通过File对象创建FileReader对象File file = new File("C:\\Users\\yy\\Desktop\\file\\a.txt");FileReader fileReader1 = new FileReader(file);// 通过字符串路径直接创建FileReader对象FileReader fileReader = new FileReader("C:\\Users\\yy\\Desktop\\file\\a.txt");} FileReader 的方法 下表中是它的常用方法: 方法名方法说明 read() 从文件中读取单个字符,返回一个 int 型变量,代表读取到的字符 read(byte b[]) 从文件中读取字符流到数组中 read(byte b[], int off, int len) 从文件中读取字符到数组中。off:数组中的起始偏移量,len:写入的字符数 read(byte b[]) 方法使用示例: public static void main(String[] args) throws IOException{// 通过File对象创建FileReader对象,该路径下的a.txt文件中内容为abcdFile file = new File("C:\\Users\\yy\\Desktop\\file\\a.txt");try(FileReader fileReader = new FileReader(file);){// 创建字符数组,长度为文件长度char[] characters = new char[(int)file.length()];// 读取字符流到数组中int read = fileReader.read(characters);// 打印数组System.out.print(characters);}} 执行结果: abcd FileWriter (文件字符输出流) FileWriter 是 Writer 的子类,用于将字符流写入到文件中。 FileWriter 构造方法 下表中是它的常用构造方法: 构造方法说明 FileWriter(File file) 通过文件对象创建 FileWriter 对象 FileWriter(File file, boolean append) 如果 append 参数为 true,则将字节写入文件末尾处,相当于追加信息。如果 append 参数为 false, 则覆盖文件信息 FileWriter(String name) 通过字符串路径创建 FileWriter 对象 FileWriter(String name, boolean append) 如果 append 参数为 true,则将字节写入文件末尾处,相当于追加信息。如果 append 参数为 false, 则覆盖文件信息 FileWriter(File file, boolean append) 构造方法示例: public static void main(String[] args) throws IOException{// 通过File对象创建FileWriter对象File file = new File("C:\\Users\\yy\\Desktop\\file\\a.txt"); FileWriter filewriter = new FileWriter(file,false);} FileWriter 的方法 下表中是它的常用方法: 方法名方法说明 write(int b) 将字符写入文件输出流 write(byte b[]) 将字符数组写入文件输出流 write(byte b[], int off, int len) 将字符数组写入文件输出流,off:数组中的起始偏移量,len:写入的字节数 close() 关闭流 write(byte b[], int off, int len) 方法使用示例: public static void main(String[] args) throws IOException{// 通过File对象创建FileWriter对象,该路径下的a.txt文件中内容abcdFile file = new File("C:\\Users\\yy\\Desktop\\file\\a.txt"); try(FileWriter filewriter = new FileWriter(file,false);){// 创建字符数组char[] characters = {f,g,h,j};// 将字符数组中部分数据写入文件流(从数组中下标为 1 的位置,取 2 个元素)filewriter.write(characters,1,2);}} 执行结果:文件中写入了 gh,并且原字符串被覆盖了 import java.io.*; import static java.lang.Character.isLetterOrDigit; import java.util.Scanner; public class FileTest { public static void main(String[] args) throws IOException { // 请在Begin-End间编写完整代码 /********** Begin **********/ // 接收给定字符串,获取相关路径 Scanner input = new Scanner(System.in); String str = input.nextLine(); String[] array = str.split(","); // 读取源文件 File file1 = new File(array[0]); char[] chars = new char[Math.toIntExact(file1.length())]; try( FileReader fileReader = new FileReader(file1);) { fileReader.read(chars); } //加密 for (int i = 0; i < chars.length; i ++){ chars[i] = (char) Encryption(chars[i]); } // 把加密后的内容保存到目标文件 File file2 = new File(array[1]); try( FileWriter fileWriter = new FileWriter(file2);) { fileWriter.write(chars); } } // 定义加密方法 public static int Encryption(int len){ if ((len >= '0' & len < '9') | (len >= 'a' & len < 'z') | (len >= 'A' & len < 'Z')){ return len + 1; }else if (len == '9'){ return len - 9; }else if (len == 'z' | len == 'Z'){ return len - 25; }else { return len; } } /********** End **********/ } (编辑:海洋资讯信息网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐

