如何使用java把文件转成十六进制字符串

在Java中如何接收通过C#代码发送的文件流

byte[] data = File.ReadAllBytes(Utils.MrFile.PathName);
pdfFile.data = BitConverter.ToString(data);

将以上C#代码使用java实现

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class FileToHexConverter {
    // 用于存储十六进制字符的数组
    private final static char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
    
    public static void main(String[] args) {
        try {
            // 假设Utils.MrFile.PathName是一个文件路径字符串
            String filePath = "your_file_path_here";  // 替换为实际文件路径
            
            // 读取文件所有字节
            byte[] data = Files.readAllBytes(Paths.get(filePath));
            
            // 将字节数组转换为十六进制字符串
            String hexString = bytesToHex(data);
            
            // 打印结果或赋值给pdfFile.data
            System.out.println(hexString);
            // 如果pdfFile是一个类的实例,可以这样赋值:
            // pdfFile.setData(hexString);
            
        } catch (IOException e) {
            System.err.println("读取文件出错: " + e.getMessage());
            e.printStackTrace();
        }
    }
    
    // JDK 1.8兼容的字节数组转十六进制字符串方法
    private static String bytesToHex(byte[] bytes) {
        char[] hexChars = new char[bytes.length * 3]; // 每个字节需要3个字符(2个hex+1个分隔符)
        for (int i = 0; i < bytes.length; i++) {
            int v = bytes[i] & 0xFF;
            hexChars[i * 3] = HEX_ARRAY[v >>> 4];    // 高4位
            hexChars[i * 3 + 1] = HEX_ARRAY[v & 0x0F]; // 低4位
            hexChars[i * 3 + 2] = '-';               // 添加分隔符,模拟C#的BitConverter.ToString行为
        }
        return new String(hexChars, 0, hexChars.length - 1); // 去掉最后一个分隔符
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值