Java小练习-文件内容编码

解密在文件加密中生成的文件。
设计一个方法
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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值