java xml二进制流传输_XML中二进制数据的处理方法
XML中二进制数据的处理方法
在xml中,所有的数据都是以文本的形式来显示,但是二进制数据不能直接以文本格式来表示,那xml又是怎么处理二进制数据的呢?下面就来探讨一下。
为了简单和通用性,xml被设计成了以文本的格式来表示数据。在xml中,所有的数据都是以文本的格式来存储,二进制数据也不例外。在xml中,二进制数据也要被编码成文本的格式,发送到目的方。目的方接收到这个文本二进制数据以后,再以相同的解码程序解成相应的二进制数据,当然数据原来的格式,名称等辅助信息一定要当作相关信息一起发送。一般二进制数据编码成BASE64格式,它的优点是容易易于编码和解码,缺点是比纯的二进制多占用33%的存储空间。
下面是具体的程序实现:
String ret=new String();
try
{
InputStream in=new FileInputStream("c:\\aaa.doc");
byte[] bytes=new byte[in.available()];
in.read(bytes);
ret=new sun.misc.BASE64Encoder().encode(bytes); //具体的编码方法
in.close();
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
catch(java.io.IOException ex)
{
ex.printStackTrace();
}
%>
ret就是最后的结果,编码以后就可以用标准的xml方式发送了。发送到目的方以后,还要对数据进行相应的解码,才能得到原来的二进制文件,解码的代码如下:
byte[] bytes = new sun.misc.BASE64Decoder().decodeBuffer(ret);
java.io.ByteArrayInputStream inStream=new java.io.ByteArrayInputStream(bytes);
byte[] buffer =new byte[1444];
FileOutputStream fs=new FileOutputStream( "d:\\aaa.doc");
int bytesum=0;
int byteread=0;
while ((byteread=inStream.read(buffer))!=-1)
{
bytesum+=byteread;
fs.write(buffer,0,byteread);
}
%>
BASE64可以处理不太大的数据,如果要移动大量的数据,且要考虑空间/时间效率时,要采用其他的替代方法。
黑白琴键http://www.cnblogs.com/jebit/articles/8252.aspxSat, 01 May 2004 21:28:00 GMThttp://www.cnblogs.com/jebit/articles/8252.aspxhttp://www.cnblogs.com/jebit/comments/8252.aspxhttp://www.cnblogs.com/jebit/articles/8252.aspx#Feedback0http://www.cnblogs.com/jebit/comments/commentRss/8252.aspxhttp://www.cnblogs.com/jebit/services/trackbacks/8252.aspx CSDN - 文档中心 - Java
java xml二进制流传输_XML中二进制数据的处理方法相关推荐
- hubbledotnet 远程连接提示:无法从传输连接中读取数据:远程主机强迫关闭一个现有的连接...
我用本地hubbledotnet(安装32位)去连接服务器hubbledotnet(64位) 提示:无法从传输连接中读取数据:远程主机强迫关闭一个现有的连接 ...
- 分布式存储系统中的数据高效缓存方法
点击上方蓝字关注我们 分布式存储系统中的数据高效缓存方法 杨青霖, 吴桂勇, 张广艳 清华大学计算机科学与技术系,北京 100084 摘要:针对典型分布式存储系统存在的写放大.I/O路径过长.响应时延 ...
- oracle数据库速度测试,【原创】验证在Oracle数据库中操纵数据的各种方法的速度...
机器配置:组装的PC SERVER,4AMD CPU,8G内存,4块SCSI硬盘.Oracle 10.2.0.4. 试验目的:在244上,对xxx_flow表进行复制.更新,验证在Oracle数据库中 ...
- java代码二进制转为十六进制_Java 中二进制转换成十六进制的两种实现方法
Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static Stri ...
- .net WebApi 批量文件进行压缩zip以二进制流传输至前端(Vue)下载
前言:最近接了个项目,需要进行将服务端生成的文件进行打包压缩供前端下载,百度查了下资料,决定采用SharpZipLib C#开园的压缩解压库进行服务器文件压缩,在实现过程,郁闷的是前端接收下载下来的压 ...
- java xml 读取库_Java开发中读取XML与properties配置文件的方法
相关阅读: 1. XML文件: 什么是XML?XML一般是指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 2.XML文件的优点: 1)XML文档内容和结构完 ...
- 计算机中数的存储和处理都使用二进制对吗,计算机中的数据可分为两种类型:数字和字符,它们最终都要转换为二进制代码进行存储和处理。对于人们习惯的十进制数字,通常用____进行转换。...
计算机中的数据可分为两种类型:数字和字符,它们最终都要转换为二进制代码进行存储和处理.对于人们习惯的十进制数字,通常用____进行转换. 更多相关问题 [单选] 电力线路巡视检查周期,定期巡视每月至少 ...
- Stream流、FiLe和IO流、IO流(字节流-拷贝文件_和_字符流-读取文本中的数据写入文本文件中)9-10-11
package com.streamdemo; import java.util.ArrayList; import java.util.List; /*** 体验Stream流** 创建一个集合,存 ...
- word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...
用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...
最新文章
- 【CVPR2020】30篇最新论文抢先看!!!
- HDU 4686 Arc of Dream(递归矩阵加速)
- Python 获取父级文件夹的名字
- php项目打不开DNS,电脑无法打开网页显示错误代码dns_probe_possible怎么解决?
- 延时摄影制作软件——GlueMotion for Mac支持m1
- Slob分配器的数据结构和分配逻辑
- Kettle下载和安装
- 51单片机入门教程(2)——流水灯的实现
- python创意网络爬虫_Python网络爬虫(一)
- 儿童手工制作日历_日历的手工制作教程图解
- 有功功率和无功功率的超前滞后
- 在creo中,如何在轴上画一个键槽?
- iPhone在线音乐盒,代码开源
- matlab图像处理学习笔记
- 2018 滴滴出行校招笔试(单词纠错)
- IDEA 的Diagrams查看类图关系很 乱,一键自动布局
- IT十年人生过客-二十一-忙碌和非凡的一年(上)
- java模糊查询、自动补全的实现
- 【绘制】HTML5 Canvas 中渐变色和图案(图文、示例)
- 部分准备金银行已经过时
热门文章
- csh shell_一篇文章从了解到入门shell
- 2017.10.17 CF#441 F题 思考记录
- [C++] Value Categories
- 【Python】理解Python(1) - Python数据模型,is关键字,类型
- 【Python】【Python库】Python3.7.2 - 字符串str类 (2)
- Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(5) - 逻辑指令
- python函数式编程思想_python函数式编程
- js对象赋值只保留存在的属性_js对象的创建对象模式和继承模式(上)---构建对象模式...
- UE3 渲染线程的分析及优化
- UE3 移动设备主页