加密模块
准备一个文本文件(非二进制),其中包含ASCII码的字符和中文字符。
设计一个方法
public static void encodeFile(File encodingFile, File encodedFile);
在这个方法中把encodingFile的内容进行加密,然后保存到encodedFile文件中。
加密算法:
数字:
如果不是9的数字,在原来的基础上加1,比如5变成6, 3变成4
如果是9的数字,变成0
字母字符:
如果是非z字符,向右移动一个,比如d变成e, G变成H
如果是z,z->a, Z-A。
字符需要保留大小写
非字母字符:
比如’,&^ 保留不变,中文也保留不变
部分代码:
// 加密模块
public static void encodeFile(File encodingFile, File encodedFile) {
/*
加密 准备一个文本文件(非二进制),其中包含ASCII码的字符和中文字符。 设计一个方法
public static void encodeFile(File encodingFile, File encodedFile);
在这个方法中把encodingFile的内容进行加密,然后保存到encodedFile文件中。
加密算法:
数字: 如果不是9的数字,在原来的基础上加1,比如5变成6, 3变成4 如果是9的数字,变成0
字母字符: 如果是非z字符,向右移动一个,比如d变成e, G变成H 如果是z,z->a, Z-A。 字符需要保留大小写 非字母字符 比如',&^
保留不变,中文也保留不变 建议: 使用以前学习的练习题中的某个Java文件,比如循环练习,就有很多的字符和数字
*/
try (FileReader fr = new FileReader(encodingFile); FileWriter fw = new FileWriter(encodedFile)){
char[] data = new char[(int)encodingFile.length()];
fr.read(data);//读
System.out.println("====加密前的内容");
System.out.println(data);
for (int i = 0; i < data.length; i++) {
if (Character.isDigit(data[i])) {
//如果是数字
if(data[i] == '9') {
data[i] = '0';
} else {
data[i] += 1;
}
} else if (Character.isLetter(data[i])) {
//如果是字母,中文也算字母,加一个判断
if(data[i] == 'z') {
data[i] = 'a';
} else if (data[i] == 'Z'){
data[i] = 'A';
} else if (data[i] >= 'a' && data[i] < 'z' || data[i] >= 'A' && data[i] <