java对文件的二进制流base64编码解码

相关依赖

        <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;
    }

文献: https://www.cnblogs.com/qlqwjy/p/12121205.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容