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

利用Java讀取二進(jìn)制文件實(shí)例詳解

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

前言

本文主要給大家介紹了關(guān)于Java讀取二進(jìn)制文件的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

讀Hex寫(xiě)CSV

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

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

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

實(shí)現(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);
}

控制臺(tái)輸出

--------- 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

總結(jié)

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

相關(guān)文章

  • SpringBoot2.1.3修改tomcat參數(shù)支持請(qǐng)求特殊符號(hào)問(wèn)題

    SpringBoot2.1.3修改tomcat參數(shù)支持請(qǐng)求特殊符號(hào)問(wèn)題

    最近遇到一個(gè)問(wèn)題,比如GET請(qǐng)求中,key,value中帶有特殊符號(hào),請(qǐng)求會(huì)報(bào)錯(cuò)。接下來(lái)通過(guò)本文給大家分享解決SpringBoot2.1.3修改tomcat參數(shù)支持請(qǐng)求特殊符號(hào) ,需要的朋友可以參考下
    2019-05-05
  • java之lombok的構(gòu)建者模式Builder中的泛型寫(xiě)法說(shuō)明

    java之lombok的構(gòu)建者模式Builder中的泛型寫(xiě)法說(shuō)明

    這篇文章主要介紹了java之lombok的構(gòu)建者模式Builder中的泛型寫(xiě)法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 一篇文章帶你入門(mén)Java之編程規(guī)范

    一篇文章帶你入門(mén)Java之編程規(guī)范

    這篇文章主要介紹了如何養(yǎng)成良好java代碼編碼規(guī)范,規(guī)范需要平時(shí)編碼過(guò)程中注意,是一個(gè)慢慢養(yǎng)成的好習(xí)慣,下面小編就帶大家來(lái)一起詳細(xì)了解一下吧
    2021-08-08
  • SpringBoot異步實(shí)現(xiàn) 的8種方式

    SpringBoot異步實(shí)現(xiàn) 的8種方式

    在同步操作中,執(zhí)行到?發(fā)送短信?的時(shí)候,我們必須等待這個(gè)方法徹底執(zhí)行完才能執(zhí)行?贈(zèng)送積分?這個(gè)操作,如果?贈(zèng)送積分?這個(gè)動(dòng)作執(zhí)行時(shí)間較長(zhǎng),發(fā)送短信需要等待,這就是典型的同步場(chǎng)景,這篇文章主要介紹了SpringBoot異步實(shí)現(xiàn) 的8種方式,需要的朋友可以參考下
    2023-11-11
  • Java設(shè)計(jì)模式之中介者模式

    Java設(shè)計(jì)模式之中介者模式

    這篇文章介紹了Java設(shè)計(jì)模式之中介者模式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • Springboot如何使用Aspectj實(shí)現(xiàn)AOP面向切面編程

    Springboot如何使用Aspectj實(shí)現(xiàn)AOP面向切面編程

    這篇文章主要介紹了Springboot如何使用Aspectj實(shí)現(xiàn)AOP面向切面編程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java注解使用及原理解析

    Java注解使用及原理解析

    這篇文章主要介紹了Java注解使用及原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java程序死鎖問(wèn)題定位與解決方法

    Java程序死鎖問(wèn)題定位與解決方法

    死鎖是一種特定的程序狀態(tài),主要是由于循環(huán)依賴(lài)導(dǎo)致彼此一直處于等待中,而使得程序陷入僵局,相當(dāng)尷尬,死鎖不僅僅發(fā)生在線程之間,而對(duì)于資源獨(dú)占的進(jìn)程之間同樣可能出現(xiàn)死鎖,本文給大家介紹了Java程序死鎖問(wèn)題定位與解決方法,需要的朋友可以參考下
    2024-11-11
  • java使用IO流對(duì)數(shù)組排序?qū)嵗v解

    java使用IO流對(duì)數(shù)組排序?qū)嵗v解

    在本篇文章里小編給大家整理的是一篇關(guān)于java使用IO流對(duì)數(shù)組排序?qū)嵗v解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-02-02
  • 用Java連接sqlserver數(shù)據(jù)庫(kù)時(shí)候幾個(gè)jar包的區(qū)別分析

    用Java連接sqlserver數(shù)據(jù)庫(kù)時(shí)候幾個(gè)jar包的區(qū)別分析

    這篇文章主要介紹了用Java連接sqlserver數(shù)據(jù)庫(kù)時(shí)候幾個(gè)jar包的區(qū)別分析,需要的朋友可以參考下
    2014-10-10

最新評(píng)論