相关依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
public class MyFileUtils {
//编码
public static String encodeFile(String filePath) throws IOException {
return encodeFile(new File(filePath));
}
public static String encodeFile(File file) throws IOException {
byte[] readFileToByteArray = FileUtils.readFileToByteArray(file);
return Base64.encodeBase64String(readFileToByteArray);
}
//解码
public static void decodeFile(String codes, String filePath) throws IOException {
decodeFile(codes, new File(filePath));
}
public static void decodeFile(String codes, File file) throws IOException {
byte[] decodeBase64 = Base64.decodeBase64(codes);
FileUtils.writeByteArrayToFile(file, decodeBase64);
}
//编码,解码前后文件格式需要保持一致,否则文件会损坏
public static void main(String[] args) throws IOException {
String x = encodeFile("D:/data/1.pdf");
System.out.println(x);
System.out.println("=======我是分割线=="+x.length()+"==========================================");
decodeFile(x,"D:/data/2.pdf");
//修改文件内容(修改PDF有问题)
// modifyFileContent(new File("D:/1.txt"), "合法家分为非核武器", "合法家分为_____");
}
}
public static boolean modifyFileContent(File file, String oldStr, String newStr) throws IOException {
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
StringBuilder context = new StringBuilder();
String line = null;
while (( line = bufferedReader.readLine()) != null){
context.append(line);
context.append("\n");
}
fileReader.close();
bufferedReader.close();
String str = String.valueOf(context);
str = str.replaceAll(oldStr,newStr);
FileWriter fileWriter = new FileWriter(new File("D:/2.txt"));
CharArrayWriter charArrayWriter = new CharArrayWriter();
charArrayWriter.write(str);
charArrayWriter.writeTo(fileWriter);
fileWriter.close();
charArrayWriter.close();
return true;
}