利用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页面制作工具?
如何破解联通资金短缺导致的基站建设难题?

