- 热门文章:
- · 理解Java面向对象的程序设计思想
- · 跟我学java之java gui的发展和演化
- · 全文
- · 全文
- · 全文
- · 灵活正确的实现.net插件机制
- · 国外程序员开发新型浏览器不存储cookie
- · 让你的emule减少系统资源占用率
- · emule 0.47a verycd build 0420发布
- · 全文阅读
- · 全文阅读
- · 一个即将进微软的留学生对百度事件的看法
上一篇:应用java技术开发wap应用程序 >>
java中将数据由utf8转换成gb2312格式
| byte [] b; String utf8_value; utf8_value = request.getParameter("NAME");//从HTTP流中取"NAME"的UTF8数据 b = utf8_value.getBytes("8859_1"); //中间用ISO-8859-1过渡 String name = new String(b, "GB2312"); //转换成GB2312字符 |
在知道流长度的情况下将输入流转换成字节数组 Java中的输入流抽象类InputStream有int read(byte[] b, int off, int len)方法,参数中byte[] b是用来存放从InputStream中读取的数据,int off指定数组b的偏移地址,也就是数组b的起始下标,int len指定需要读取的长度,方法返回实际读取的字节数。
刚学Java的朋友可能要说:先定义一个与流长度等长的字节数组,调用read方法,指定起始下标为0,指定读取长度与数组长度等长,不是一下子可以读出来了吗?说的没错,笔者曾经也试着这样读取数据,但后来发现在读取网络数据时很不安全,我们想想在网络上获取数据可能并没那么流畅,数据流的传送可能会断断续续,所以并不能保证一次就能读取全部数据,特别是在读取大容量数据时更是如此,所以我们必须在读取数据时检测实际读到的长度,如果没有读完已知长度的数据就应该再次读取,以此循环检测,直到实际读取的长度累加与已知的长度相等,下面的代码实现了这一功能:
| ServletInputStream inStream = request.getInputStream(); //取HTTP请求流 int size = request.getContentLength(); //取HTTP请求流长度 byte[] buffer = new byte[size]; //用于缓存每次读取的数据 byte[] in_b = new byte[size]; //用于存放结果的数组 int count = 0; int rbyte = 0; while (count < size) { //循环读取 rbyte = inStream.read(buffer); //每次实际读取长度存于rbyte中 for(int i=0;i<rbyte;i++) { in_b[count + i] = buffer[i]; } count += rbyte; } |
在不知道流长度的情况下将输入流转换成字节数组 前面介绍了已知流长度的情况下的转换方法,那么当我们不知道流有多长时,也就是说不能确定转换后的字节数组有多大时,该怎么处理呢?笔者查看了JDK文档之后发现ByteArrayOutputStream有一个byte[] toByteArray()方法,该方法会自动创建一个字节数组,然后返回。于是就巧妙的用ByteArrayOutputStream来作中间过渡实现转换,其它处理跟上面所介绍已知长度的情况差不多。假设需要被转换的流已经放在inStream里了,我们可以用如下的代码实现这一功能:
| ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); byte[] buff = new byte[100]; //buff用于存放循环读取的临时数据 int rc = 0; while ((rc = inStream.read(buff, 0, 100)) > 0) { swapStream.write(buff, 0, rc); } byte[] in_b = swapStream.toByteArray(); //in_b为转换之后的结果 |
下一篇:理解Java面向对象的程序设计思想 >>
相关文章:
- · 百度裁员门再起波澜 仲裁结果支持被裁员工
- · 百度公司女员工留宿公司遇刺
- · 百度为搜霸辩解:捆绑是捆绑 流氓是流氓
- · 被指丧失诚信道德 百度将面临2次被告
- · 百度深陷点击欺诈纠纷 当事各方说法不一
- · 流氓软件事件升级 双方将互相起诉
- · 中电信要打造互联网史上最大流氓软件
- · 中搜停止划词搜索与流氓软件决裂
- · google公布六原则与流氓软件撇清关系
- · 流氓网站弄假将中国互联网推向十字路口
- · 网友组团起诉流氓软件厂商
- · 博客读者面临嵌入式恶意软件攻击
- · 个人博客有望成为风险投资新热点
- · 博客写作是生财之道吗
- · 个人博客吸引风投关注成可盈利业务
- · 博客网站加大技术投入开启互联网新应用
- · 博客网获得3000万元广告解密
- · 博客赢利之路初见曙光
- · 流氓软件祸起“联盟” 三大网站难逃其咎
- · 流氓软件事件升级 田健揭老底周鸿祎反驳
- · 四款最流行反恶意软件对比测试(上)
- · 四款最流行反恶意软件对比测试(下)
- · 软件外包遭测试人才屏障 企业首次团聘
- · 中国电子报:外包能否让软件业突围
- · 欧美外包人才需求强劲 文化比语言更重要
- · 调查: 外包市场增长放缓东欧才是中国对手
- · 软件业扶持新政近期出台 将适应外包新情况
- · 北京软件外包市场超3亿美元 人才流动不平衡
- · “一切皆可外包” 与印度it巨人约会一小时
- · 软件外包谁来承接洲际转移
- · 英一大学设立黑客专业 满足对安全人才需求
- · 黑客侵入联邦调查局系统 fbi被迫关网络
- · 中国黑客窃取地狱之门源代码公开叫卖
- · 黑客也共享 恶意软件开发转向开源模式
- · 微软邀请黑客测试vista 专家称其虎口拔牙
- · 专家称rss存在安全隐患 给黑客预留后门
- · 人才短缺阻碍美国互联网广告发展
- · 中小网站制造虚假流量 互联网遭遇中年危机
