Base64读取文件方法

使用jdk的base工具类操作

代码如下,对本地的文件进行读取并转码

package org.jeecg.modules.fsmService.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import java.io.*;

public class Base64FileUtil {

    public static String targetFilePath = "D:\\opt\\upFiles\\activity扩展字段_1636114837738.json";
    public static String targetFilePath0 = "D:/opt/upFiles/activity扩展字段_1636114837738.json";
    public static String targetFilePath2 = "D:\\opt\\upFiles\\activity扩展字段_1636114837738_bak.json";

    public static final String FILE_SEPARATOR = System.getProperty("file.separator");

    public static void main(String[] args) throws Exception {
//        String originalFilename = "华创_FSM扩展平台_接口清单V2.0.xlsx";
//        String firstName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
//        String lastName = originalFilename.substring(originalFilename.lastIndexOf("."));
//        System.out.println(firstName);
//        System.out.println(lastName);

//        System.out.println(File.separator);
//        System.out.println(targetFilePath);
//        String rename = getRealFilePath(targetFilePath);
//        System.out.println(rename);
//        System.out.println(targetFilePath0);
//        String rename2 = getRealFilePath(targetFilePath0);
//        System.out.println(rename2);

//        String fileStr = readFileByPath(rename);
//        System.out.println(fileStr);

//        String base64Str = getFileBase64Str(targetFilePath);
//        System.out.println("base64Str ===\n" + base64Str);
//        System.out.println("base64Str length===" + base64Str.length());
//
//        System.out.println(generateFile(base64Str, targetFilePath2));
//        System.out.println("end");

        String targetFilePath2 = "D:\\opt\\upFiles\\表单.txt";
        String base64Str = "Jm5ic3A7PHRhYmxlIGlkPSJmZF8zOWNiNjhmZWE0ODk1OCIgZm9ybWRlc2lnbj0ibGFuZHJheSIgYWxpZ249ImNlbnRlciIgY2xhc3M9InRiX25vcm1hbCIgc3R5bGU9IndpZHRoOiA5OCU7IiBsYXlvdXQyY29sPSJ1bmRlZmluZWQiIGZkX3ZhbHVlcz0ie2lkOiZxdW90O2ZkXzM5Y2I2OGZlYTQ4OTU4JnF1b3Q7LGxhYmVsOiZxdW90O+S4u+ihqCZxdW90Oyxpc0RlZmF1bHQ6JnF1b3Q7dHJ1ZSZxdW90O30iIGZkX3R5cGU9InN0YW5kYXJkVGFibGUiPjx0Ym9keT48dHI+PHRkIHJvdz0iMCIgY29sdW1uPSIwLDEsMiwzIiBjbGFzcz0idGRfbm9ybWFsX3RpdGxlIiBzdHlsZT0id2lkdGg6IGF1dG87IiBjb2xzcGFuPSI0IiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOTcxIj48bGFiZWwgZm9ybWRlc2lnbj0ibGFuZHJheSIgY2xhc3M9Inhmb3JtX2xhYmVsIiBpc2hpZGRlbmlubW9iaWxlPSJmYWxzZSIgbGluZT0ibm9ybWFsIiBmZF92YWx1ZXM9IntpZDomcXVvdDtmZF8zOWNiNmQ5ZjZmYmEwMiZxdW90Oyxjb250ZW50OiZxdW90O+ihqOWNleWFg+e0oCZxdW90Oyxmb250OiZxdW90OyZxdW90OyxzaXplOiZxdW90OzE4cHgmcXVvdDssY29sb3I6JnF1b3Q7IzAwMCZxdW90OyxsaW5lOiZxdW90O25vcm1hbCZxdW90OyxlZmZlY3Q6JnF1b3Q7JnF1b3Q7LGI6JnF1b3Q7dHJ1ZSZxdW90OyxpOiZxdW90O2ZhbHNlJnF1b3Q7LHVuZGVybGluZTomcXVvdDtmYWxzZSZxdW90Oyxpc0hpZGRlbkluTW9iaWxlOiZxdW90O2ZhbHNlJnF1b3Q7fSIgZmRfdHlwZT0idGV4dExhYmVsIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDE4cHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtd2VpZ2h0OiBib2xkOyB3aWR0aDogYXV0bzsgd29yZC1icmVhazogYnJlYWstYWxsOyBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyI+6KGo5Y2V5YWD57SgPC9sYWJlbD48L3RkPjwvdHI+PHRyPjx0ZCByb3c9IjEiIGNvbHVtbj0iMCIgY2xhc3M9InRkX25vcm1hbF90aXRsZSIgd2lkdGg9IjMzIiBzdHlsZT0id2lkdGg6IDE2NS41NjJweDsiPjxsYWJlbCBmb3JtZGVzaWduPSJsYW5kcmF5IiBjbGFzcz0ieGZvcm1fbGFiZWwiIGlzaGlkZGVuaW5tb2JpbGU9ImZhbHNlIiBsaW5lPSJub3JtYWwiIGZkX3ZhbHVlcz0ie2lkOiZxdW90O2ZkXzM5Y2I2OTAzZTVhY2MyJnF1b3Q7LGNvbnRlbnQ6JnF1b3Q75paH5pysLeWtl+espiZxdW90Oyxmb250OiZxdW90OyZxdW90OyxzaXplOiZxdW90OyZxdW90Oyxjb2xvcjomcXVvdDsjMDAwJnF1b3Q7LGxpbmU6JnF1b3Q7bm9ybWFsJnF1b3Q7LGVmZmVjdDomcXVvdDsmcXVvdDssYjomcXVvdDtmYWxzZSZxdW90OyxpOiZxdW90O2ZhbHNlJnF1b3Q7LHVuZGVybGluZTomcXVvdDtmYWxzZSZxdW90Oyxpc0hpZGRlbkluTW9iaWxlOiZxdW90O2ZhbHNlJnF1b3Q7fSIgZmRfdHlwZT0idGV4dExhYmVsIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBjb2xvcjogcmdiKDAsIDAsIDApOyB3aWR0aDogYXV0bzsgd29yZC1icmVhazogYnJlYWstYWxsOyBvdmVyZmxvdy13";
        System.out.println(generateFile(base64Str, targetFilePath2));
    }

    public static String getRealFilePath(String path) {
        return path.replace("/", FILE_SEPARATOR).replace("\\", FILE_SEPARATOR);
    }

    //使用lastIndexOf()结合subString()获取后缀名
    public static String getLastName(String fileName){
        if(fileName.lastIndexOf(".")==-1){
            return "";//文件没有后缀名的情况
        }
        //此时返回的是带有 . 的后缀名,
        return fileName.substring(fileName.lastIndexOf("."));
    }

    /**
     * 根据文件全路径读取文件内容返回字符串
     *
     * @param fullFilePath 文件全路径
     */
    public static String readFileByPath(String fullFilePath) {
        StringBuilder result = new StringBuilder();
        try {
            File file = new File(fullFilePath);
            FileInputStream fileInputStream = new FileInputStream(file);
            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String line = null;
            while ((line = bufferedReader.readLine()) != null) {
                result.append(line);
            }
            bufferedReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result.toString();
    }

    /**
     * 文件转化成base64字符串 将文件转化为字节数组字符串,并对其进行Base64编码处理
     *
     * @param filePath 文件全路径
     */
    public static String getFileBase64Str(String filePath) {
        InputStream in = null;
        byte[] data = null;
        // 读取文件字节数组
        try {
            in = new FileInputStream(filePath);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        // 返回 Base64 编码过的字节数组字符串
        return encoder.encode(data);
    }

    /**
     * base64字符串转化成文件,可以是JPEG、PNG、TXT和AVI等等
     *
     * @param base64FileStr
     * @param filePath
     * @return
     * @throws Exception
     */
    public static boolean generateFile(String base64FileStr, String filePath) throws Exception {
        // 数据为空
        if (base64FileStr == null) {
            System.out.println("参数为空");
            return false;
        }
        BASE64Decoder decoder = new BASE64Decoder();
        // Base64解码,对字节数组字符串进行Base64解码并生成文件
        byte[] byt = decoder.decodeBuffer(base64FileStr);
        for (int i = 0, len = byt.length; i < len; ++i) {
            // 调整异常数据
            if (byt[i] < 0) {
                byt[i] += 256;
            }
        }
        OutputStream out = null;
        InputStream input = new ByteArrayInputStream(byt);
        try {
            // 生成指定格式的文件
            out = new FileOutputStream(filePath);
            byte[] buff = new byte[1024];
            int len = 0;
            while ((len = input.read(buff)) != -1) {
                out.write(buff, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            out.flush();
            out.close();
        }
        return true;
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值