今天是周三,时间过得还算挺快的,经过了两个月倒是适应起这种生活了。今天下定决心,过年前准备跑掉,哈哈哈,我舅估计要气死了。虽然知道我不能在这里长久的干下去,但是半年就走也不是太好。哎,还剩下大概半年的时间,使劲学吧,尽量给企业带来点价值,吃软饭总归不太爽。今天买的小米5到了,下了个公司开发的APP,这个APP感觉好low啊,充斥着各种软**,不对,都是明摆着的**内容了。恰点饭真难啊,佟姐这边一个月都拿了8000块钱了,我这就是别人施舍给我的5000/月。虽然说佟姐这个工作内容看起来好像很容易,但是人家门槛高啊。本科985是真的吃香。哎,当年多考个3、40分就好咯,早知这样就复读去了,不过世界上可没有后悔药,过去的时光也不能重来了,努力学编程吧。老爸老妈又给我训一顿,愁死了,明明压力已经很大了,为啥又要给我增加压力呢。不说了,我想静静。

package homework;
/**文件加密,文件解密
 * 在这个方法中把encodingFile/decodingFile的内容进行加密(解密),然后保存到encodedFile/decodedFile文件中。
 * 加密/解密算法:
 * 数字:
 * 如果不是0的数字,在原来的基础上减1,比如6变成5, 4变成3
 * 如果是0的数字,变成9
 * 字母字符:
 * 如果是非a字符,向左移动一个,比如e变成d, H变成G
 * 如果是a,a->z, A-Z。
 * 字符需要保留大小写
 * 非字母字符:
 * 比如',&^ 保留不变,中文也保留不变
 */

import java.io.*;

public class Test {
    public static void main(String[] args) {
        File encodingFile = new File("D:\\xyz\\lol.txt");
        File encodedFile = new File("D:\\xyz\\test.txt");
        encodeFile(encodingFile,encodedFile);

        File decodingFile = new File("D:\\xyz\\test.txt");
        File decodedFile = new File("D:\\xyz\\test2.txt");
        decodeFile(decodingFile,decodedFile);

    }

    /**
     *
     * @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("加密前的内容:");
            String string1 = new String(fileContent);
            System.out.println(string1);
            //对数组进行加密
            encode(fileContent);
            System.out.println("加密后的内容:");
            String string2 = new String(fileContent);
            System.out.println(string2);
            fw.write(fileContent);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     *
     * @param decodingFile 要进行解密的文件
     * @param decodedFile 解密后的文件
     */
    public static void decodeFile(File decodingFile, File decodedFile){
        try (FileReader fr = new FileReader(decodingFile); FileWriter fw = new FileWriter(decodedFile)){
            //读取源文件,定义文件内容数组
            char[] fileContent = new char[(int) decodingFile.length()];
            fr.read(fileContent);
            System.out.println("解密前的内容:");
            String string1 = new String(fileContent);
            System.out.println(string1);
            //对数组进行解密
            decode(fileContent);
            System.out.println("解密后的内容:");
            String string2 = new String(fileContent);
            System.out.println(string2);
            fw.write(fileContent);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     *
     * @param fileContent 要进行加密的数组(文件内容)
     */
    public static void encode(char[] fileContent){
        for (int i = 0;i < fileContent.length;i++){
            char c1 = fileContent[i];
            if (isLetterOrDigit(c1)){
                switch (c1){
                    case '9':
                        c1 = '0';
                        break;
                    case 'z':
                        c1 = 'a';
                        break;
                    case 'Z':
                        c1 = 'A';
                        break;
                    default:
                        c1++;
                        break;
                }
                fileContent[i] = c1;
            }
        }
    }
    public static void decode(char[] fileContent){
        for (int i = 0;i < fileContent.length;i++){
            char c2 = fileContent[i];
            if (isLetterOrDigit(c2)){
                switch(c2){
                    case '0':
                        c2 = '9';
                        break;
                    case 'a':
                        c2 = 'z';
                        break;
                    case 'A':
                        c2 = 'Z';
                        break;
                    default:
                        c2--;
                        break;
                }
                fileContent[i] = c2;
            }
        }
    }
    public static boolean isLetterOrDigit(char c){
        String letterOrDigital = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        if (letterOrDigital.indexOf(c) == -1){
            return false;
        } else {
            return true;
        }
    }

}
package homework;


import java.io.*;

public class Test {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String str = "中";
        showCode(str);
    }
    private static void showCode(String str) {
        String[] encodes = { "BIG5", "GBK", "GB2312", "UTF-8", "UTF-16", "UTF-32" };
        for (String encode : encodes) {
            showCode(str, encode);
        }
    }

    private static void showCode(String str, String encode) {
        try {
            System.out.printf("字符: \"%s\" 的在编码方式%s下的十六进制值是%n", str, encode);
            byte[] bs = str.getBytes(encode);

            for (byte b : bs) {
                //将byte转化为int
                int i = b&0xff;
                //输出字符的16进制表示
                System.out.print(Integer.toHexString(i) + "\t");
            }
            System.out.println();
        } catch (UnsupportedEncodingException e) {
            System.out.printf("UnsupportedEncodingException: %s编码方式无法解析字符%s\n", encode, str);
        }
    }
}