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();
		}
	}
	

}
经验分享 程序员 微信小程序 职场和发展