package com.example.demo.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* @description: JAVA獲取16進制文件頭工具
* @create: 2020/05/08 21:42
**/
public class FileHandle {
public static void main(String[] args) {
try {
String result = getFileHead(new File("E:\\temp\\2.csv"));
System.out.println(result.substring(0,8));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 得到文件頭
*
* @param file 文件
* @return 文件頭
* @throws IOException
*/
public static String getFileHead(File file) throws IOException {
byte[] b = new byte[28];
InputStream inputStream = null;
try {
inputStream = new FileInputStream(file);
inputStream.read(b, 0, 28);
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
throw e;
}
}
}
return bytesToHexString(b);
}
/**
* 將文件頭轉換成16進制字符串
*
* @param src 原生byte
* @return 16進制字符串
*/
private static String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder();
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
}
運行結果:c1f5b5c2