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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李成航 中级黑马   /  2012-3-8 17:22  /  1936 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在实现由输入流到输出流的时候,我一般是先将输入流读到一个字节数组中,然后再把这个数组写到输出流中。我想问大家有没有更快的方法,因为每次都要一个字节数组来过渡显得麻烦。如:
FileInputStream fis=new FileInputStream("1.txt");
byte[]  b=new byte[10240];//用于过渡的数组??可以不要吗?
int i=fis.read(b);
FileOutputStream  fos=new FileOutputStream("copy1.txt");
fos.write(b,0,i);

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

6 个回复

倒序浏览
你可以用字符流,以及它的包装流,一行一行的读取
回复 使用道具 举报
可以啊 1个1个读呗   比如说 小学的时候都是走路去上学  初中都是骑车子去上学   byte 只是一个容器 就像生活中的交通工具 提供效率作用

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
字节数组存储你读取的字符,它的长度也决定了你每次读取字符的个数,lz这里就是一次可以读取10240个字符,实际上这样减少了读取次数,加快了程序效率。
也可不要这个数字,但每次就只能读一个字符,这样本来读写一次就完成的现在要读写10240次。lz麻烦点,电脑就可以省很多事了,呵呵。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
字节流拷贝有三种:
                        1: FileInputStream FileOutputStream
                        2: 定义一个数组
                3: BufferedInputStream BufferOutputStream               
不用那个数组是可以的,就是第一种,一个字节一个字节的拷贝, 拷贝速度比较慢, 定义一个数组是一组一组的拷贝, 还有一种是带有缓冲区的(BufferedInputStream BufferedOutputStream) 是内置缓冲区, 定义数组的方式是最快的

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
可以用一个管道流,如
InputStream is=new InputStream(System.in);
  BufferedReader br=new BufferedReader(is);
      读的时候可以用readLine()来读;这样比一个一个读写要快

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
可以用缓冲区,按行读取
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马