Java I/O 不懂的朋友可以参考这篇博客(现在还没写,但敬请期待)
//客户端测试类
public class Client {
public static void main(String[] args) {
EncryptFacade ef = new EncryptFacade();
//文件写入,相对路径是以项目根路径为默认路径
ef.fileEncrypt("src/t13/facade/src.txt", "src/t13/facade/des.txt");
}
}
//加密外观类:外观类
public class EncryptFacade {
private FileReader reader;
private CipherMachine cipher;
private FileWriter writer;
public EncryptFacade() {
reader = new FileReader();
cipher = new CipherMachine();
writer = new FileWriter();
}
public void fileEncrypt(String fileNameSrc, String fileNameDes) {
String plainStr = reader.read(fileNameSrc);
String encryptStr = cipher.encrypt(plainStr);
writer.write(encryptStr, fileNameDes);
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
//文件读取类:子系统类
class FileReader {
public String read(String fileNameSrc) {
System.out.println("读取文件,获取明文。");
StringBuilder sb = new StringBuilder();
try {
FileInputStream inFS = new FileInputStream(fileNameSrc);
int data;
while ((data = inFS.read()) != -1) {
sb.append((char) data);
}
inFS.close();
} catch (FileNotFoundException e) {
System.out.println("文件不存在!");
} catch (IOException e) {
System.out.println("文件操作错误!");
}
return sb.toString();
}
}
//数据加密类:子系统类
public class CipherMachine {
public String encrypt(String plainText) {
System.out.println("数据加密,将明文转换为密文。");
StringBuilder es = new StringBuilder();
for (int i = 0; i < plainText.length(); i++) {
String c = String.valueOf(plainText.charAt(i) % 7);
es.append(c);
}
return es.toString();
}
}
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
//文件保存类:子系统类
public class FileWriter {
public void write(String encryptStr, String fileNameDes) {
System.out.println("保存密文,写入文件。");
try {
FileOutputStream outFS = new FileOutputStream(fileNameDes);
outFS.write(encryptStr.getBytes());
outFS.close();
} catch (FileNotFoundException e) {
System.out.println("文件不存在!");
} catch (IOException e) {
System.out.println("文件操作错误!");
}
}
}