|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。xml|二进制|数据在xml中,一切的数据都是以文本的情势来显现,可是二进制数据不克不及间接以文本格局来暗示,那xml又是怎样处置二进制数据的呢?上面就来切磋一下。
为了复杂和通用性,xml被计划成了以文本的格局来暗示数据。在xml中,一切的数据都是以文本的格局来存储,二进制数据也不破例。在xml中,二进制数据也要被编码成文本的格局,发送到目标方。目标方吸收到这个文本二进制数据今后,再以不异的解码程序解成响应的二进制数据,固然数据本来的格局,称号等帮助信息必定要看成相干信息一同发送。一样平常二进制数据编码成BASE64格局,它的长处是简单易于编码息争码,弱点是比纯的二进制多占用33%的存储空间。
上面是详细的程序完成:
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.io.*"%>
<%
Stringret=newString();
try{
InputStreamin=newFileInputStream("c:aaa.doc");
byte[]bytes=newbyte[in.available()];
in.read(bytes);
ret=newsun.misc.BASE64Encoder().encode(bytes);//详细的编码办法
in.close();
}
catch(FileNotFoundExceptione){
e.printStackTrace();
}
catch(java.io.IOExceptionex){
ex.printStackTrace();
}
%>
ret就是最初的了局,编码今后就能够用尺度的xml体例发送了。发送到目标方今后,还要对数据举行响应的解码,才干失掉本来的二进制文件,解码的代码以下:
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.io.*"%>
<%
byte[]bytes=newsun.misc.BASE64Decoder().decodeBuffer(ret);
java.io.ByteArrayInputStreaminStream=newjava.io.ByteArrayInputStream(bytes);
byte[]buffer=newbyte[1444];
FileOutputStreamfs=newFileOutputStream("d:aaa.doc");
intbytesum=0;
intbyteread=0;
while((byteread=inStream.read(buffer))!=-1){
bytesum+=byteread;
fs.write(buffer,0,byteread);
}
%>
BASE64能够处置不太年夜的数据,假如要挪动大批的数据,且要思索空间/工夫效力时,要接纳其他的替换办法。
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。 |
|