关于字节流的若干问题
package application;
import java.io.*;
public class HelloApplication {
public static void main(String args[]){
1 int count;
2 byte input[] = new byte[256];
3 DataInputStream stdin = new DataInputStream(System.in); // 从键盘读取输入
4 BufferedInputStream bufin = new BufferedInputStream(stdin); // 创建输入缓冲区
5 DataOutputStream stdout = new DataOutputStream(System.out); //从屏幕输出
6 BufferedOutputStream bufout = new BufferedOutputStream(stdout);//创建输出缓冲区
7 PrintStream p = new PrintStream(System.out); //从屏幕输出
try {
8 p.print("请输入字符串,结束请按Enter...\n" + "==> ");
9 count = bufin.read(input);
10 p.println("读入字符数: " + count);
11 p.print("输入的字符串为: ");
12 bufout.write(input, 0, count); // 写入位串流
13 bufout.flush(); // 强制输出
14 p.close(); // 关闭打印流
15 stdin.close(); // 关闭输入流
16 bufin.close(); // 释放输入缓冲区
17 stdout.close(); // 关闭输出流
18 bufout.close(); // 释放输出缓冲区
} catch(IOException e){
System.out.println("发生I/O异常!");
}
}
}
问题1: 就是直接定义BufferedInputStream bufin = new BufferedInputStream
(System.in);与通过语句3、4定义的bufin有什么区别啊(bufin已有一样的问题)
问题2: 各个输入输出流的关闭是否要有一定的次序
问题点数:40、回复次数:3Top
1 楼725137(2006年不会菜)回复于 2006-03-01 19:38:28 得分 20
问题1: 就是直接定义BufferedInputStream bufin = new BufferedInputStream
(System.in);与通过语句3、4定义的bufin有什么区别啊(bufin已有一样的问题)
答:使用BufferedInputStream 可以提高读写的效率..
问题2: 各个输入输出流的关闭是否要有一定的次序
答:当然要有顺序,从最初的开始.依次向后关..或者直接关闭最上层的包装类就行了.他会自动关闭被包装了的对象
Top
2 楼slqit2002()回复于 2006-03-01 20:22:29 得分 0
-----------注意----------
问题1如下:
BufferedInputStream bufin = new BufferedInputStream(System.in);
中的bufin与
DataInputStream stdin = new DataInputStream(System.in);
BufferedInputStream bufin = new BufferedInputStream(stdin);
这两句中定义的bufin有何区别Top
3 楼doway(john)回复于 2006-03-01 20:47:55 得分 20
楼主的这段代码是从哪里找的?楼主知道这里的用法完全不对头吗?
由于这里的代码完全不对头,因此,对于楼主的问题1的回答是,都个bufin没有什么不同,只是前者的写法还说得过去,后者的写法是胡搞,那是脱裤子放P。
在这里我给楼主讲一下 JAVA 流的特点和要点:
JAVA 流分为两类,一类处理二进制,一类处理文本,不要乱用。
从另一个方面,JAVA 流又分为节点流和过滤器流。
节点流是流的起点或终点,过滤器流是起点和终点之间的管道。
节点流提供了 IO 处理中最基本的功能,而各种过滤器流是为了在节点流或其他过滤器流的基础上提供更多的功能。
明白了这些,楼主就会明白为什么我说这段代码不对头了,只有当我们需要使用某种过滤器提供的特有功能的时候,我们才应该去使用那种过滤器,否则就完全没必要使用它。
Top




