今天是周三,时间过得还算挺快的,经过了两个月倒是适应起这种生活了。今天下定决心,过年前准备跑掉,哈哈哈,我舅估计要气死了。虽然知道我不能在这里长久的干下去,但是半年就走也不是太好。哎,还剩下大概半年的时间,使劲学吧,尽量给企业带来点价值,吃软饭总归不太爽。今天买的小米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);
}
}
}
京公网安备 11010502036488号