黑马程序员技术交流社区

标题: ByteArrayInputStream 干什么用《提问和回答参考模板》 [打印本页]

作者: admin    时间: 2011-7-13 12:13
标题: ByteArrayInputStream 干什么用《提问和回答参考模板》
《《《同学们在提问或回答时,可参考以下问题:》》》

下面是我自己看到的一段代码 关于io流中的 ByteArrayInputStream 系列 我有点不理解 就是 为什么要把输入输出流当作参数 直接字符串不行吗 这个ByteArrayInputStream 到底有什么用??
import java.io.*;
public class ByteArrayTest
{
public static void transform(InputStream ips,OutputStream ops)
{
  int ch=0;
  try
  {
   while((ch=ips.read())!=-1)
   {
    int upperCh=Character.toUpperCase((char)ch);
    ops.write(upperCh);
   }

  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
}

public static void main(String[] args)
{
  String str="kingxip";
  byte[] src=str.getBytes();
  ByteArrayInputStream baInput=new ByteArrayInputStream(src);
  ByteArrayOutputStream baOut=new ByteArrayOutputStream();
  transform(baInput,baOut);
  byte[] result=baOut.toByteArray();
  System.out.println(new String(result));
  
}
}
作者: 匿名    时间: 2011-7-13 12:15
流的来源或目的地并不一定是文件,也可以是内存中的一块空间,例如一个字节数组。java.io.ByteArrayInputStream、java.io.ByteArrayOutputStream就是将字节数组当作流输入来源、输出目的地的类。
java.io.ByteArrayInputStream将一个字节数组当作流输入的来源,而java.io.ByteArrayOutputStream则可以将一个字节数组当作流输出目的地。
上面的程序就是把字符串转变为字节数组,并作为流输入的来源,用tranform()将字符串中所有的字母都转换为大写的,并将转换后的结果写到ByteArrayOutputStream中。


《《《《《《提问、回答问题参考模板》》》》》
作者: 匿名    时间: 2011-7-14 12:46
直接使用字符串没有什么问题,这里之所以使用流作为参数进行传输,我想应该是本例子的初衷吧(讲述怎样使用流)。其实,每个实现都有多种方法,只不过这里为了让我们知道流是这样使用的、可以这样使用的,所以才这样做。:lol
作者: 匿名    时间: 2011-7-22 15:23
如果数据量非常大或者本地编码什么的不支持,或者别的如MP3之类的文件,字符串太局限了
作者: 匿名    时间: 2011-7-23 10:24
他表示字节数组输入流,可用于从指定的内存缓冲区读取字节。它对应的有字符流类,如:ByteArrayInputStream对应的就是CharArrayReader,ByteArrayOutputStream对应的字符流类是CharArrayWriter,所以它这样用就不足为奇了。
作者: 匿名    时间: 2011-7-27 17:11
ByteArrayInputStream与ByteArrayOutputStream类用于以IO流的方式来完成对字节数组的内容的读写,来支持类似内存虚拟文件或者内存映像文件的功能。这两个类对于要创建临时性文件的程序以及网络数据的传输、数据压缩后的传输等可以提高运行的的效率,可以不用访问磁盘。同样有StringReader与StringWriter类以字符IO流的方式处理字符串。
作者: 郭繁森    时间: 2011-12-16 09:52
看到问题提问方式了
作者: 李志    时间: 2012-1-24 18:50
这样子提问对新手还是比较好的!
作者: namesongvs    时间: 2012-2-25 12:18
哦原来就这样子提问啊!明白点了。
作者: 胡生蒙    时间: 2012-3-30 23:32
学习学习
作者: 陈苓    时间: 2012-3-31 00:34
     知道了
作者: 邬诚    时间: 2012-4-16 14:49
以后有问题就这么问
作者: 梦想~依旧    时间: 2012-4-16 23:57
学习到了,谢谢!!!
作者: 钟成军    时间: 2012-4-27 22:00
明白了,哦啦,哈哈哈
作者: 曾_强    时间: 2012-4-28 08:09
明白,学习去。
作者: 逝去的记忆ヽ    时间: 2012-6-8 08:53
谢谢了, 技术分,好难拿啊
作者: 晏文根    时间: 2012-6-11 15:12
明白了哦。。。

作者: ckz0409    时间: 2012-6-18 19:55
技术分怎么拿呢啊!
作者: ヤ木瞳つ    时间: 2012-7-13 13:20
今天第一次知道评分细则,悲催了,详细的了解下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2