1.题目
加密算法:
数字:
如果不是9的数字,在原来的基础上加1,比如5变成6, 3变成4,如果是9的数字,变成0
字母字符:
如果是非z字符,向右移动一个,比如d变成e, G变成H,如果是z,z->a, Z-A,字符需要保留大小写
非字母字符
比如’,&^ 保留不变,中文也保留不变
2.实现思路
1.先在f1中写入内容
2.查ASCII码表
3.然后实现encondeFile(File encondingFlie,File encondedFlie)方法,encondingFlie是加密前的文件,即f1,encondedFlie是加密后的文件,即f2。
4.实现encondeFile(File encondingFlie,File encondedFlie)方法时先读f1文件后使用上述加密算法,再将加密后的内容写入f2中。
3.参考代码
package review4;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TestEncondeFile {
public static void main(String[] args) throws IOException {
File f1 = new File("d:/Test/4.txt");
File f2 = new File("d:/Test/5.txt");
//创建Test文件夹
f1.getParentFile().mkdirs();
//创建4.txt文件
f1.createNewFile();
//创建5.txt文件
f2.createNewFile();
String s = "我的手机号是:15524945335 && 我的邮箱号是[email protected]";
char[] content = s.toCharArray();
try(FileWriter fw = new FileWriter(f1)){
fw.write(content);
}catch (Exception e) {
e.printStackTrace();
}
encondeFile(f1, f2);
}
public static void encondeFile(File encondingFlie,File encondedFlie) throws IOException {
try (FileReader fr = new FileReader(encondingFlie);
FileWriter fw = new FileWriter(encondedFlie)){
char[] read = new char[(int) encondingFlie.length()];
fr.read(read);
System.out.println("加密前的文件内容:");
for(char r : read) {
System.out.print(r);
}
System.out.println("\r\n加密后的文件内容:");
for(char r : read) {
//数字0~8
if(r>=48 && r<57) {
r+=1;
}
//数字9
if(r == 57) {
r = 48;
}
//字母A~Y || a~y
if((r>=65 && r<90) || (r>=97 && r< 122)) {
r+=1;
}
//字母Z
if(r == 90 ) {
r = 65;
}
//字母z
if(r == 122) {
r = 97;
}
System.out.print(r);
fw.write(r);
}
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}