JAVA-SE基础篇-文件的加密与解密
基本实现的方法 可以改进
public class TestStream02 {
public static void main(String[] args) {
File encodingFile=new File("d:\\IO\\baobao.txt");
//创建一个加密后的文件和名字
File encodedFile=new File(encodingFile.getParent(),String.format("加密文件%s",encodingFile.getName()));
encodeFile(encodingFile,encodedFile);
}
private static void encodeFile(File encodingFile,File encodedFile) {
// TODO Auto-generated method stub
/*
* 加密此方法为:
* 把encodingFile的内容进行加密,然后保存到encodedFile文件中
* 加密算法:
* 数字:在原来数字上加一 例如 3变成4;
* 注释: 9变成0;
* 字母:在原来的基础上加一 例如 a变成b;
* 注释: z变成a
* 字符需要保留大小写
* 非字母字符:
* 比如: ¥ # 保留不变 中文保留不变
*/
try (FileReader fr=new FileReader(encodingFile);FileWriter fw=new FileWriter(encodedFile)){
//创建基于要加密文件长度的字符串数组
char[] all=new char[(int)encodingFile.length()];
//读取文件内容
fr.read(all);
System.out.println("加密前的内容是:");
System.out.println(all);
for (int i=0;i<all.length;i++) {
if (all[i]>='0'&&all[i]<'9'||all[i]>='a'&&all[i]<'z'||all[i]>='A'&&all[i]<'Z') {
all[i]+=1;
} else {
switch (all[i]) {
case '9':
all[i]='0';
break;
case 'z':
all[i]='a';
break;
case 'Z':
all[i]='A';
break;
default:
break;//其他不属于这里面的不做处理
}
}
}
System.out.println("加密后的文件是:");
System.out.println(all);
//创建这个文件 encodedFile文件
encodedFile.createNewFile();
//写入加密后的字符数组
fw.write(all);
} catch (FileNotFoundException e) {
// TODO: handle exception
System.out.println("文件创建未成功!");
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
public class TestStream03 {
/*
* 解密文件:
* 解密算法:
* 数字:在原来数字上减一 例如 3变成2;
* 注释: 0变成9;
* 字母:在原来的基础上加一 例如 c变成b;
* 注释: a变成z
* 字符需要保留大小写
* 非字母字符:
* 比如: ¥ # 保留不变 中文保留不变
*/
public static void main(String[] args) {
System.out.println("请输入你要解密的文件的地址目录:");
System.out.println("例如: d:\\IO\\baobao.txt");
Scanner s=new Scanner(System.in);
String path=s.next();
File file=new File(path);
decodeFileExam(file);
}
//解密方法
private static void decodeFileExam(File file) {
// TODO Auto-generated method stub
//创建解密后的文件 ,并且命名
File files=new File(file.getParent(),String.format("解密后%s",file.getName()));
try (FileReader fr=new FileReader(file);FileWriter fw=new FileWriter(files)){
//创建这个文件 encodedFile文件
files.createNewFile();
//创建基于要加密文件长度的字符串数组
char[] all=new char[(int)file.length()];
//读取文件内容
fr.read(all);
System.out.println("解密前的内容是:");
System.out.println(all);
for (int i=0;i<all.length;i++) {
if (all[i]>='0'&&all[i]<'9'||all[i]>='a'&&all[i]<'z'||all[i]>='A'&&all[i]<'Z') {
all[i]-=1;
} else {
switch (all[i]) {
case '0':
all[i]='9';
break;
case 'a':
all[i]='z';
break;
case 'A':
all[i]='Z';
break;
default:
break;//其他不属于这里面的不做处理
}
}
}
System.out.println("解密后的文件是:");
System.out.println(all);
//写入加密后的字符数组
fw.write(all);
} catch (FileNotFoundException e) {
// TODO: handle exception
System.out.println("文件创建未成功!");
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}