JAVA獲取16進制文件頭工具

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章