A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 创出一片辉煌 中级黑马   /  2012-7-31 17:18  /  2256 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.* ;
public class ByteArrayDemo01{
public static void main(String args[]){
  String str = "HELLOWORLD" ;  // 定义一个字符串,全部由大写字母组成
  ByteArrayInputStream bis = null ; // 内存输入流
  ByteArrayOutputStream bos = null ; // 内存输出流
  bis = new ByteArrayInputStream(str.getBytes()) ; // 向内存中输出内容
  bos = new ByteArrayOutputStream() ; // 准备从内存ByteArrayInputStream中读取内容
  int temp = 0 ;
  while((temp=bis.read())!=-1){
   char c = (char) temp ; // 读取的数字变为字符
   bos.write(Character.toLowerCase(c)) ; // 将字符变为小写
  }
  // 所有的数据就全部都在ByteArrayOutputStream中
  String newStr = bos.toString() ; // 取出内容
  try{
   bis.close() ;
   bos.close() ;
  }catch(IOException e){
   e.printStackTrace() ;
  }
  System.out.println(newStr) ;
}
};这段代码中这句代码,bos.write(Character.toLowerCase(c)) ; 这里bos属于ByteArrayOutputStream类型的对象,这里可以write 字符型的数据吗?有点疑问,请大虾从百忙中抽出点时间帮我看看

5 个回复

倒序浏览
ByteArrayOutputStream类没有写字符的方法 ,有一个write(int b) 方法,传入一个字符的时候会自动转换为Int类型的(我个人理解)
while((temp=bis.read())!=-1){
   //char c =  temp ; // 读取的数字变为字符
  // System.out.println(Character.toLowerCase());
   bos.write(Character.toLowerCase(temp)) ; // 将字符变为小写
  }
不强制转换的话结果一样的 ,
java采用Unicode编码的一个字符占用两个字节,在不强转的情况下,我们如果传入的是汉字也就会出错的 汉字对应的是两个字节,这也能说明读的不是字符吧  ( 仅供参考)
回复 使用道具 举报
ByteArrayOutputStream 是字节流类型 里面可以写字符流数据。
回复 使用道具 举报
java.lang.Object
  -java.io.OutputStream
     - java.io.ByteArrayOutputStream
ByteArrayOutputStream是Outputstream的子类是字节流类型的,如果通过字节流-字符转换流应该就可以操作字符型数据了.
回复 使用道具 举报
涂金哲 发表于 2012-7-31 18:20
ByteArrayOutputStream类没有写字符的方法 ,有一个write(int b) 方法,传入一个字符的时候会自动转换为Int ...

``````已解决
回复 使用道具 举报
涂金哲 发表于 2012-7-31 18:20
ByteArrayOutputStream类没有写字符的方法 ,有一个write(int b) 方法,传入一个字符的时候会自动转换为Int ...

········已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马