全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java实现解析二进制文件的方法(字符串、图片)

1、需求说明,实现细节要求:

解析二进制文件 files\case10\binary,其中包含一个字符串和一张图片,数据文件格式为字符串数据长度(2字节)+字符串内容+图片数据长度(4字节)+图片数据,数据长度均为数据字节长度,高位在后,字符串为UTF-8编码,请解析,输出字符串内容,图片文件保存为files\case10\test.png。

2、实现代码:

package com.igen.case10;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.URISyntaxException;

 

/**

* 

* @ClassName Case10

* @Description TODO

*

* @author wjggwm

* @data 2017年2月7日 上午11:46:25

*/

public class Case10 {

 

static final String fileName = "/test.png";

static final String filePath = "D:/files/case10";

static final String sourceFileName = "binary";

 

public static void main(String[] args) {

try {

readFile(Case10.class.getResource(sourceFileName).toURI().getPath());

} catch (URISyntaxException e) {

e.printStackTrace();

}

}

 

/**

* 

* @Description 解析二进制文件

* @param sourceFileName

*

* @author wjggwm

* @data 2017年2月7日 上午11:47:12

*/

public static void readFile(String sourceFileName) {

InputStream in = null;

try {

in = new FileInputStream(sourceFileName);

 

// 读取字符串数据长度字节

byte[] txtLenByte = new byte[2];

in.read(txtLenByte);

int txtlen = byte2ToUnsignedShort(txtLenByte, 0);

 

// 读取字符串字节

byte[] txtByte = new byte[txtlen];

in.read(txtByte);

//字符串为UTF-8编码

String txt = new String(txtByte, "UTF-8");

// 输出字符串

System.out.println(txt);

 

// 读取图片数据长度

byte[] imgLenByte = new byte[4];

in.read(imgLenByte);

int imgLen = byte4ToInt(imgLenByte, 0);

 

// 读取图片数据

byte[] img = new byte[imgLen];

in.read(img);

// 生成图片文件

saveToImgByBytes(filePath, fileName, img);

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (in != null) {

try {

in.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

 

}

 

/**

* 

* @Description 将字节写入文件

* @param imgName

* @param imgByte

*

* @author wjggwm

* @data 2017年2月7日 上午11:07:45

*/

public static void saveToImgByBytes(String filePath, String imgName, byte[] imgByte) {

try {

File dic = new File(filePath);

if (!dic.exists()) {

dic.mkdirs();

}

File image = new File(filePath + imgName);

if (!image.exists()) {

image.createNewFile();

}

FileOutputStream fos = new FileOutputStream(image);

fos.write(imgByte);

fos.flush();

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

 

/**

* 

* @Description byte数组转换为无符号short整数

* @param bytes

* @param off

* @return

*

* @author wjggwm

* @data 2017年2月7日 上午11:05:58

*/

public static int byte2ToUnsignedShort(byte[] bytes, int off) {

// 注意高位在后面,即大小端问题

int low = bytes[off];

int high = bytes[off + 1];

return (high << 8 & 0xFF00) | (low & 0xFF);

}

 

/**

* 

* @Description byte数组转换为int整数

* @param bytes

* @param off

* @return

*

* @author wjggwm

* @data 2017年2月7日 上午11:07:23

*/

public static int byte4ToInt(byte[] bytes, int off) {

// 注意高位在后面,即大小端问题

int b3 = bytes[off] & 0xFF;

int b2 = bytes[off + 1] & 0xFF;

int b1 = bytes[off + 2] & 0xFF;

int b0 = bytes[off + 3] & 0xFF;

return (b0 << 24) | (b1 << 16) | (b2 << 8) | b3;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java解析二进制文件  # java  # 二进制解析  # java解析二进制字符串  # Java实现图片与二进制的互相转换  # java读取图片并转化为二进制字符串的实现方法  # Java图片与二进制相互转换实现示例讲解  # 上午  # 在后面  # 转换为  # 均为  # 大家多多  # 保存为  # 格式为  # 其中包含  # Description  # data  # public  # author  # wjggwm  # TODO  # static  # readFile  # args  # main  # getPath  # toURI 


相关文章: 网站制作公司,橙子建站是合法的吗?  如何设置并定期更换建站之星安全管理员密码?  建站之星2.7模板快速切换与批量管理功能操作指南  详解jQuery停止动画——stop()方法的使用  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何在阿里云虚拟服务器快速搭建网站?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  如何在腾讯云免费申请建站?  如何通过wdcp面板快速创建网站?  如何快速搭建二级域名独立网站?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何构建满足综合性能需求的优质建站方案?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  临沂网站制作企业,临沂第三中学官方网站?  网站制作模板下载什么软件,ppt模板免费下载网站?  如何获取开源自助建站系统免费下载链接?  建站VPS能否同时实现高效与安全翻墙?  Android自定义控件实现温度旋转按钮效果  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  如何快速搭建安全的FTP站点?  建站主机是否属于云主机类型?  如何配置FTP站点权限与安全设置?  活动邀请函制作网站有哪些,活动邀请函文案?  如何选择香港主机高效搭建外贸独立站?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  网站制作网站,深圳做网站哪家比较好?  中山网站推广排名,中山信息港登录入口?  如何通过建站之星自助学习解决操作问题?  如何挑选高效建站主机与优质域名?  官网网站制作腾讯审核要多久,联想路由器newifi官网  如何快速搭建高效服务器建站系统?  济南专业网站制作公司,济南信息工程学校怎么样?  如何有效防御Web建站篡改攻击?  已有域名能否直接搭建网站?  建站之星云端配置指南:模板选择与SEO优化一键生成  网站制作员失业,怎样查看自己网站的注册者?  MySQL查询结果复制到新表的方法(更新、插入)  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  制作销售网站教学视频,销售网站有哪些?  建站之星伪静态规则如何正确配置?  建站主机与虚拟主机有何区别?如何选择最优方案?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何在宝塔面板中创建新站点?  建站主机无法访问?如何排查域名与服务器问题  如何通过多用户协作模板快速搭建高效企业网站?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何在Windows环境下新建FTP站点并设置权限?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  建站之星导航配置指南:自助建站与SEO优化全解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。