利用Java读取二进制文件实例详解

发布时间 - 2026-01-11 02:59:14    点击率:

前言

本文主要给大家介绍了关于Java读取二进制文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

读Hex写CSV

data目录下有little-endian bin文件,2个字节代表一个数字。

bin存储的数据格式可自己定义。相同的方法可以直接应用到Android中。

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

实现方法

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# java读二进制文件内容  # java  # 文件读取  # 读二进制文件  # JAVA中读取文件(二进制  # 字符)内容的几种方法总结  # java 二进制数据与16进制字符串相互转化方法  # java读写二进制文件的解决方法  # 详谈Java中的二进制及基本的位运算  # Java实现较大二进制文件的读、写方法  # java二进制运算基础知识点详解  # Java二进制运算符超详细讲解及扩展知识  # 相关内容  # 说了  # 不多  # 给大家  # 可以直接  # 这篇文章  # 谢谢大家  # 数据格式  # 目录下  # 有疑问  # file  # exists  # log  # Read 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  如何在阿里云香港服务器快速搭建网站?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  php json中文编码为null的解决办法  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何生成腾讯云建站专用兑换码?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  iOS验证手机号的正则表达式  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何用IIS7快速搭建并优化网站站点?  Python结构化数据采集_字段抽取解析【教程】  jQuery中的100个技巧汇总  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  如何在阿里云购买域名并搭建网站?  高端网站建设与定制开发一站式解决方案 中企动力  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  如何在阿里云完成域名注册与建站?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  详解CentOS6.5 安装 MySQL5.1.71的方法  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  如何选择可靠的免备案建站服务器?  图册素材网站设计制作软件,图册的导出方式有几种?  如何在IIS管理器中快速创建并配置网站?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  php结合redis实现高并发下的抢购、秒杀功能的实例  智能起名网站制作软件有哪些,制作logo的软件?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  EditPlus中的正则表达式 实战(4)  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  高端建站如何打造兼具美学与转化的品牌官网?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何在IIS中新建站点并解决端口绑定冲突?  如何快速搭建高效服务器建站系统?  如何在Ubuntu系统下快速搭建WordPress个人网站?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何有效防御Web建站篡改攻击?  如何挑选高效建站主机与优质域名?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何破解联通资金短缺导致的基站建设难题?