h2j

package stream;

 

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

 

public class TestStream {

    /**

     *

     * @param encodingFile

     *            被加密的文件

     * @param encodedFile

     *            加密后保存的位置

     */

    public static void encodeFile(File encodingFile, File encodedFile) {

 

        try (FileReader fr = new FileReader(encodingFile); FileWriter fw = new FileWriter(encodedFile)) {

            // 读取源文件

            char[] fileContent = new char[(int) encodingFile.length()];

            fr.read(fileContent);

            System.out.println("加密前的内容:");

            System.out.println(new String(fileContent));

 

            // 进行加密

            encode(fileContent);

            // 把加密后的内容保存到目标文件

            System.out.println("加密后的内容:");

            System.out.println(new String(fileContent));

 

            fw.write(fileContent);

        catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

 

    private static void encode(char[] fileContent) {

        for (int i = 0; i < fileContent.length; i++) {

            char c = fileContent[i];

            if (isLetterOrDigit(c)) {

                switch (c) {

                case '9':

                    c = '0';

                    break;

                case 'z':

                    c = 'a';

                    break;

                case 'Z':

                    c = 'A';

                    break;

                default:

                    c++;

                    break;

                }

            }

            fileContent[i] = c;

        }

    }

 

    public static boolean isLetterOrDigit(char c) {

        // 不使用Character类的isLetterOrDigit方法是因为,中文也会被判断为字母

        String letterOrDigital = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

        return -1 == letterOrDigital.indexOf(c) ? false true;

    }

 

    public static void main(String[] args) {

        File encodingFile = new File("E:/project/j2se/src/Test1.txt");

        File encodedFile = new File("E:/project/j2se/src/Test2.txt");

        encodeFile(encodingFile, encodedFile);

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值