package com.sandu.ximon.admin.manager.iot.rrpc.util; import com.sandu.ximon.admin.dto.RemoteFileDto; import com.sandu.ximon.admin.utils.HexUtils; import org.apache.catalina.LifecycleState; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author ZZQ * @date 2022/5/5 14:26 */ public class FileProcessingUtils { // public static void main(String[] args) { // try { // RemoteFileDto remoteFileDto = read("C:\\Users\\Administrator\\Desktop\\test\\H01_v3.0.12.min.dhcp.bin"); // System.out.println(remoteFileDto.getListSize()); // System.out.println(remoteFileDto.getList().size()); // System.out.println(Arrays.toString(remoteFileDto.getList().get(0))); // } catch (IOException e) { // e.printStackTrace(); // } // } public static RemoteFileDto read(String filePath) throws IOException { List data = new ArrayList<>(); int dataSize = 0; StringBuffer fileHexStr=new StringBuffer(); File file = new File(filePath); InputStream in = new FileInputStream(file); // 一次性取多少个字节 byte[] bytes = new byte[512]; // 读取到的字节数组长度,为-1时表示没有数据 int length = 0; // 循环取数据 while ((length = in.read(bytes)) != -1) { String temp=HexUtils.encodeHexStr(Arrays.copyOf(bytes, length)); data.add(temp); fileHexStr.append(temp); dataSize += length; } in.close(); RemoteFileDto remoteFileDto = new RemoteFileDto(); remoteFileDto.setList(data); remoteFileDto.setListSize(dataSize); remoteFileDto.setFileHexStr(fileHexStr.toString()); return remoteFileDto; } }