黑马程序员技术交流社区
标题:
发现一个小问题,BufferedInputStream
[打印本页]
作者:
rehan
时间:
2015-2-24 14:43
标题:
发现一个小问题,BufferedInputStream
RT:BufferedInputStream写入数据后可不刷新的。。。。。。。。如:
bos.write(by,0,len);
//bos.flush();
PS:我还想问一下啊,字节写入流如何进行提高效率?他没有BufferedReader一样的readLine方法吗?
也就是说只能使用数组的方法吗?
作者:
万合天宜
时间:
2015-2-24 15:06
流分为字节还有字符,一般记事本能打开的东西用字符流,其他用字节流。一个字符流失两个字节流,所以字符流传输效率比较高,flush一般是字符流用的,因为一次都两字节,所以用fluse。buffered++是一种高效流,无论字节还是字符。字节流读取一般有两种方式,一种一次读一个字节,还有一种一次读一个字符数组。readLine()是bufferedRead特有的读取方式,一次读一行。
作者:
alvis2015
时间:
2015-2-24 15:07
import java.io.*;
public class BufferedInputStreamTest {
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
BufferedInputStream bufis = new BufferedInputStream(new FileInputStream("d:\\username.txt"));
byte[] buf = new byte[1024];
int len =0;
len = bufis.read(buf);
System.out.println(new String(buf,0,len));
BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("d:\\user1.txt"));
bufos.write(buf);
//bufos.flush();//此处不刷新
bufis.close();
bufos.close();//此处关闭之间会自动刷新一次缓冲区,而不是不用刷新。
}
}
复制代码
上面的代码,如果bufos不执行关闭动作,那缓冲区中的数据不会被刷新到文件中。
字节流没有换行的概念。
字符流才有换行的概念,因为换行符本身就是字符,可以用来判断是否换行。
作者:
艺多不压身丶
时间:
2015-2-24 17:44
流在做关闭动作之前,会先刷新一次缓冲区。然后在关闭。
作者:
rehan
时间:
2015-2-25 20:20
万合天宜 发表于 2015-2-24 15:06
流分为字节还有字符,一般记事本能打开的东西用字符流,其他用字节流。一个字符流失两个字节流,所以字符流 ...
版主太牛逼了。。。。就要面试了,感谢斑竹大人的技术分
作者:
liaohongjie
时间:
2015-2-25 20:43
BufferedInputStream就是装饰类,如果你能明白BufferedInputStream的read()方法的原理,你就知道用没用高效了
作者:
邓士林
时间:
2015-2-26 09:07
本来就不用刷新
作者:
新生小周
时间:
2015-2-26 09:30
学习了,看来交流是必须的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2