如何使用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.dataSystem.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); // 去掉最后一个分隔符}
}