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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

《《《同学们在提问或回答时,可参考以下问题:》》》

下面是我自己看到的一段代码 关于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));
  
}
}

19 个回复

倒序浏览
黑马网友  发表于 2011-7-13 12:15:03
沙发
流的来源或目的地并不一定是文件,也可以是内存中的一块空间,例如一个字节数组。java.io.ByteArrayInputStream、java.io.ByteArrayOutputStream就是将字节数组当作流输入来源、输出目的地的类。
java.io.ByteArrayInputStream将一个字节数组当作流输入的来源,而java.io.ByteArrayOutputStream则可以将一个字节数组当作流输出目的地。
上面的程序就是把字符串转变为字节数组,并作为流输入的来源,用tranform()将字符串中所有的字母都转换为大写的,并将转换后的结果写到ByteArrayOutputStream中。


《《《《《《提问、回答问题参考模板》》》》》
回复 使用道具 举报
黑马网友  发表于 2011-7-14 12:46:33
藤椅
直接使用字符串没有什么问题,这里之所以使用流作为参数进行传输,我想应该是本例子的初衷吧(讲述怎样使用流)。其实,每个实现都有多种方法,只不过这里为了让我们知道流是这样使用的、可以这样使用的,所以才这样做。:lol

评分

参与人数 1技术分 +1 收起 理由
admin + 1 问题模板你都回,太有才了!!!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-22 15:23:27
板凳
如果数据量非常大或者本地编码什么的不支持,或者别的如MP3之类的文件,字符串太局限了
回复 使用道具 举报
黑马网友  发表于 2011-7-23 10:24:04
报纸
他表示字节数组输入流,可用于从指定的内存缓冲区读取字节。它对应的有字符流类,如:ByteArrayInputStream对应的就是CharArrayReader,ByteArrayOutputStream对应的字符流类是CharArrayWriter,所以它这样用就不足为奇了。
回复 使用道具 举报
黑马网友  发表于 2011-7-27 17:11:52
地板
ByteArrayInputStream与ByteArrayOutputStream类用于以IO流的方式来完成对字节数组的内容的读写,来支持类似内存虚拟文件或者内存映像文件的功能。这两个类对于要创建临时性文件的程序以及网络数据的传输、数据压缩后的传输等可以提高运行的的效率,可以不用访问磁盘。同样有StringReader与StringWriter类以字符IO流的方式处理字符串。
回复 使用道具 举报
郭繁森 黑马帝 2011-12-16 09:52:34
7#
看到问题提问方式了
回复 使用道具 举报
李志 黑马帝 2012-1-24 18:50:29
8#
这样子提问对新手还是比较好的!
回复 使用道具 举报
哦原来就这样子提问啊!明白点了。
回复 使用道具 举报
学习学习
回复 使用道具 举报
     知道了
回复 使用道具 举报
以后有问题就这么问
回复 使用道具 举报
学习到了,谢谢!!!
回复 使用道具 举报
明白了,哦啦,哈哈哈
回复 使用道具 举报
明白,学习去。
回复 使用道具 举报
谢谢了, 技术分,好难拿啊
回复 使用道具 举报
明白了哦。。。
回复 使用道具 举报
技术分怎么拿呢啊!
回复 使用道具 举报
今天第一次知道评分细则,悲催了,详细的了解下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马