黑马程序员技术交流社区

标题: 关于io流的问题 [打印本页]

作者: 李成航    时间: 2012-3-8 17:22
标题: 关于io流的问题
在实现由输入流到输出流的时候,我一般是先将输入流读到一个字节数组中,然后再把这个数组写到输出流中。我想问大家有没有更快的方法,因为每次都要一个字节数组来过渡显得麻烦。如:
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);
作者: 马胜平    时间: 2012-3-8 17:26
你可以用字符流,以及它的包装流,一行一行的读取
作者: djx900    时间: 2012-3-8 17:26
可以啊 1个1个读呗   比如说 小学的时候都是走路去上学  初中都是骑车子去上学   byte 只是一个容器 就像生活中的交通工具 提供效率作用
作者: dangfei    时间: 2012-3-8 17:31
字节数组存储你读取的字符,它的长度也决定了你每次读取字符的个数,lz这里就是一次可以读取10240个字符,实际上这样减少了读取次数,加快了程序效率。
也可不要这个数字,但每次就只能读一个字符,这样本来读写一次就完成的现在要读写10240次。lz麻烦点,电脑就可以省很多事了,呵呵。
作者: a504079589    时间: 2012-3-8 18:51
字节流拷贝有三种:
                        1: FileInputStream FileOutputStream
                        2: 定义一个数组
                3: BufferedInputStream BufferOutputStream               
不用那个数组是可以的,就是第一种,一个字节一个字节的拷贝, 拷贝速度比较慢, 定义一个数组是一组一组的拷贝, 还有一种是带有缓冲区的(BufferedInputStream BufferedOutputStream) 是内置缓冲区, 定义数组的方式是最快的
作者: 刘泰    时间: 2012-3-8 19:38
可以用一个管道流,如
InputStream is=new InputStream(System.in);
  BufferedReader br=new BufferedReader(is);
      读的时候可以用readLine()来读;这样比一个一个读写要快
作者: lipanfeng    时间: 2012-3-8 20:58
可以用缓冲区,按行读取




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