解密在文件加密中生成的文件。
设计一个方法
public static void decodeFile(File decodingFile, File decodedFile);
在这个方法中把decodingFile的内容进行解密,然后保存到decodedFile文件中。
如果不是0的数字,在原来的基础上减1,比如6变成5, 4变成3
如果是0的数字,变成9
字母字符:
如果是非a字符,向左移动一个,比如e变成d, H变成G
如果是a,a->z, A-Z。
字符需要保留大小写
非字母字符:
比如’,&^ 保留不变,中文也保留不变
package stream;
//解密在文件加密中生成的文件。
//设计一个方法
//public static void decodeFile(File decodingFile, File decodedFile);
//在这个方法中把decodingFile的内容进行解密,然后保存到decodedFile文件中。
//如果不是0的数字,在原来的基础上减1,比如6变成5, 4变成3
//如果是0的数字,变成9
//字母字符:
//如果是非a字符,向左移动一个,比如e变成d, H变成G
//如果是a,a->z, A-Z。
//字符需要保留大小写
//非字母字符:
//比如',&^ 保留不变,中文也保留不变
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class TestStream {
static File encodingFile=new File("d:/test.txt");
static File encodedFile=new File("d:/test1.txt");
public static void main(String[] args) {
encodeFile(encodingFile, encodedFile);
}
public static void encodeFile(File encodingFile, File encodedFile) {
try(FileReader fr=new FileReader(encodingFile);
FileWriter fw=new FileWriter(encodedFile)) {
char[] ch=new char[(int) encodingFile.length()];
fr.read(ch);
System.out.println("编码前的内容为:");
for(char x:ch) {//输出编码前的内容
System.out.print(x);
}
System.out.println("");
System.out.println("编码后的内容为:");//输出编码后的内容
for (int i = 0; i < ch.length; i++) {
if (ch[i]>='0'&&ch[i]<=9||ch[i]>='A'&&ch[i]<='z') {//不能直接用Charactor.isLetter(),汉字也会得到true!!!
if(ch[i]=='z') {
ch[i]='a';
}
if (ch[i]=='Z') {
ch[i]='A';
}else {
ch[i]=(char)(ch[i]+1);
}
}
if (Character.isDigit(ch[i])) {
if (ch[i]=='0') {
ch[i]=9;
}else {
ch[i]-=1;
}
}
System.out.print(ch[i]);
}
fw.write(ch);
System.out.println("");
String str=new String(ch);
System.out.println("ch的内容为:"+"\n"+str);
} catch (Exception e) {
// TODO: handle exception
}
}
}
笔记:
Charactor.isLetter(‘零’)报ture。