黑马程序员技术交流社区
标题:
关于内存操作流,
[打印本页]
作者:
创出一片辉煌
时间:
2012-7-31 17:18
标题:
关于内存操作流,
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 字符型的数据吗?有点疑问,请大虾从百忙中抽出点时间帮我看看
作者:
涂金哲
时间:
2012-7-31 18:20
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编码的一个字符占用两个字节,在不强转的情况下,我们如果传入的是汉字也就会出错的 汉字对应的是两个字节,这也能说明读的不是字符吧 ( 仅供参考)
作者:
黄锐
时间:
2012-7-31 22:38
ByteArrayOutputStream 是字节流类型 里面可以写字符流数据。
作者:
王广彬
时间:
2012-7-31 23:01
java.lang.Object
-java.io.OutputStream
- java.io.ByteArrayOutputStream
ByteArrayOutputStream是Outputstream的子类是字节流类型的,如果通过字节流-字符转换流应该就可以操作字符型数据了.
作者:
创出一片辉煌
时间:
2012-8-1 23:25
涂金哲 发表于 2012-7-31 18:20
ByteArrayOutputStream类没有写字符的方法 ,有一个write(int b) 方法,传入一个字符的时候会自动转换为Int ...
``````已解决
作者:
创出一片辉煌
时间:
2012-8-1 23:27
涂金哲 发表于 2012-7-31 18:20
ByteArrayOutputStream类没有写字符的方法 ,有一个write(int b) 方法,传入一个字符的时候会自动转换为Int ...
········已解决
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2