欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Java讀取二進制文件實例詳解

 更新時間:2017年08月28日 09:27:31   作者:RustFisher  
這篇文章主要給大家介紹了利用Java讀取二進制文件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用java具有一定的參考學習價值,需要的朋友們下面跟著小編來一起學習學習吧。

前言

本文主要給大家介紹了關于Java讀取二進制文件的相關內(nèi)容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

讀Hex寫CSV

data目錄下有l(wèi)ittle-endian bin文件,2個字節(jié)代表一個數(shù)字。

bin存儲的數(shù)據(jù)格式可自己定義。相同的方法可以直接應用到Android中。

`-- networkProj
 |-- data
 |-- networkProj.iml
 |-- out
 `-- src

實現(xiàn)方法

private static void convertFiles() {
 File folder = new File("data"); // data folder
 log("--------- Read little-endian data from bin file ---------");
 if (!folder.exists()) {
  log("folder is not exist!");
  return;
 }
 File outputFolder = new File(folder.getAbsolutePath() + File.separator + "output");
 if (!outputFolder.exists()) {
  boolean newOutput = outputFolder.mkdir();
  log("New output folder " + newOutput);
 }
 File[] files = folder.listFiles();
 if (files != null) {
  log("folder is " + folder.getAbsolutePath());
  for (File f : files) {
   log("\t" + f.getName());
  }
 } else {
  log("Nothing in this folder");
  return;
 }
 for (File currentFile : files) {
  if (!currentFile.isFile()) {
   return;
  }
  String fileName = currentFile.getName();
  fileName = fileName.substring(0, fileName.length() - 4); // delete suffix
  File csvFile = new File(outputFolder.getAbsolutePath() + File.separator + fileName + ".csv");
  if (csvFile.exists()) {
   boolean deRes = csvFile.delete();
   log("Delete old csv: " + deRes);
  }
  byte[] readBytes = new byte[512];
  try {
   boolean newCsv = csvFile.createNewFile();
   log(csvFile.getAbsolutePath() + " " + newCsv);
   FileOutputStream csvFos = new FileOutputStream(csvFile);
   InputStream in = new FileInputStream(currentFile);
   while (in.read(readBytes) != -1) {
    int[] csvData = convertBytesToInts(readBytes);
    for (int d : csvData) {
     csvFos.write(String.valueOf(d).getBytes());
     csvFos.write("\n".getBytes());
    }
   }
   csvFos.flush();
   csvFos.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}
// little-endian; 2 bytes -> 1 int
private static int[] convertBytesToInts(byte[] inputData) {
 int[] rawData = new int[inputData.length / 2];
 int rawIndex = 0;
 for (int i = 0; i < inputData.length; i += 2) {
  int raw = (0xff & inputData[i + 1]) * 256 + (0xff & inputData[i]);
  if (raw >= 32768) {
   raw -= 65536;
  }
  rawData[rawIndex] = raw;
  rawIndex++;
 }
 return rawData;
}
private static void log(String l) {
 System.out.println(l);
}

控制臺輸出

--------- Read little-endian data from bin file ---------
New output folder true
folder is G:\javaProj\networkProj\data
 data20170215_180621.bin
 output
G:\javaProj\networkProj\data\output\data20170215_180621.csv true

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • springboot實現(xiàn)rtsp視頻推流的示例代碼

    springboot實現(xiàn)rtsp視頻推流的示例代碼

    本文指導通過Docker搭建RTSP服務,配置Maven依賴,創(chuàng)建RtspStreamer類并測試流地址rtsp://localhost:8554/live的實現(xiàn)過程,感興趣的可以了解一下
    2025-07-07
  • El表達式使用問題javax.el.ELException:Failed to parse the expression的解決方式

    El表達式使用問題javax.el.ELException:Failed to parse the expression

    今天小編就為大家分享一篇關于Jsp El表達式使用問題javax.el.ELException:Failed to parse the expression的解決方式,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • SpringBoot?項目中創(chuàng)建線程池

    SpringBoot?項目中創(chuàng)建線程池

    這篇文章主要介紹了SpringBoot?項目中創(chuàng)建線程池,文章基于Spring?Boot項目創(chuàng)建線程池ThreadPoolExecutor,需要的小伙伴可以參考一下
    2022-04-04
  • MyBatis 實現(xiàn)數(shù)據(jù)的批量新增和刪除的操作

    MyBatis 實現(xiàn)數(shù)據(jù)的批量新增和刪除的操作

    這篇文章主要介紹了MyBatis 實現(xiàn)數(shù)據(jù)的批量新增和刪除的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java 多線程同步 鎖機制與synchronized深入解析

    Java 多線程同步 鎖機制與synchronized深入解析

    從尺寸上講,同步代碼塊比同步方法小。你可以把同步代碼塊看成是沒上鎖房間里的一塊用帶鎖的屏風隔開的空間
    2013-09-09
  • Maven打包跳過測試的5種方式總結

    Maven打包跳過測試的5種方式總結

    使用Maven打包的時候,可能會因為單元測試打包失敗,這時候就需要跳過單元測試,下面這篇文章主要給大家介紹了關于Maven打包跳過測試的5種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • 使用Java WebSocket獲取客戶端IP地址的示例代碼

    使用Java WebSocket獲取客戶端IP地址的示例代碼

    在開發(fā)Web應用程序時,我們通常需要獲取客戶端的 IP 地址用于日志記錄、身份驗證、限制訪問等操作,本文將介紹如何使用Java WebSocket API獲取客戶端IP地址,以及如何在常見的WebSocket框架中獲得客戶端 IP地址,需要的朋友可以參考下
    2023-11-11
  • Java?BigDecimal類的一般使用、BigDecimal轉(zhuǎn)double方式

    Java?BigDecimal類的一般使用、BigDecimal轉(zhuǎn)double方式

    這篇文章主要介紹了Java?BigDecimal類的一般使用、BigDecimal轉(zhuǎn)double方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 關于@Scheduled不執(zhí)行的原因分析

    關于@Scheduled不執(zhí)行的原因分析

    這篇文章主要介紹了關于@Scheduled不執(zhí)行的原因分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Springboot中的Controller解析

    Springboot中的Controller解析

    這篇文章主要介紹了Springboot中的Controller解析,Controller是SpringBoot的基本組件,也是MVC結構的組成部分,其作用是將用戶提交來的請求通過URL匹配,分發(fā)給不同的接收器,該接收器會對其進行相應處理,然后返回處理結果,需要的朋友可以參考下
    2023-09-09

最新評論