import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class FileEncAndDecUtil {
private static final int numOfEncAndDec = 0x99; //加密解密秘钥 2进制 99
private static int dataOfFile = 0; //文件字节内容
public static void main(String[] args) {
// String srcFilePath = "C:\\Users\\Administrator\\Desktop\\enc\\1.txt"; //初始文件路径
// String encFilePath = "C:\\Users\\Administrator\\Desktop\\enc\\22.txt"; //加密文件路径
// String decFilePath = "C:\\Users\\Administrator\\Desktop\\enc\\33.txt"; //解密文件路径
String srcFilePath = "C:/Users/Administrator/Desktop/enc/1.txt"; //初始文件路径
String encFilePath = "C:/Users/Administrator/Desktop/enc/22.txt"; //加密文件路径
String decFilePath = "C:/Users/Administrator/Desktop/enc/33.txt"; //解密文件路径
try {
EncFile(srcFilePath, encFilePath); //加密操作
DecFile(encFilePath, decFilePath); //加密操作
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 文件加密
* @param srcFilePath 初始文件路径
* @param encFilePath 加密文件路径
* @throws Exception
*/
public static void EncFile(File srcFile, File encFile) throws IOException {
if (!srcFile.exists()) {
System.out.println("source file not exixt");
return;
}
if (!encFile.exists()) {
System.out.println("encrypt file created");
encFile.createNewFile();
}
InputStream fis = new FileInputStream(srcFile);
OutputStream fos = new FileOutputStream(encFile);
try {
byte[] buf = new byte[1024*64];
while (true){
int readBytes = fis.read(buf);
if(readBytes == -1)
break;
fos.write(buf, 0, readBytes);
}
} finally {
fis.close();
fos.flush();
fos.close();
}
}
/**
* 解密文件
* @param encFilePath 加密文件路径
* @param decFilePath 解密文件路径
* @throws Exception
*/
private static void DecFile(String encFilePath, String decFilePath) throws Exception {
File encFile = new File(encFilePath);
File decFile = new File(decFilePath);
if(!encFile.exists()){
System.out.println("encrypt file not exixt");
return;
}
if(!decFile.exists()){
System.out.println("decrypt file created");
decFile.createNewFile();
}
InputStream fis = new FileInputStream(encFile);
OutputStream fos = new FileOutputStream(decFile);
while ((dataOfFile = fis.read()) > -1) {
fos.write(dataOfFile^numOfEncAndDec);
}
fis.close();
fos.flush();
fos.close();
}
}