题目一
利用DataInputStream类和BufferedInputStream类编写一个程序,实现从键盘读入一个字符串,在显示器上显示前两个字符的Unicode码以及后面的所有字符。
结果
请输入字符串
asdfjkl
字符一的Unicode码:97
字符二的Unicode码:115
d f j k l
思路
DataInputStream 类继承自 FilterInputStream 类,而 FilterInputStream 类继承自 InputStream 类。
因而DataInputStream 类可以实现更多的功能。
BufferedInputStream 是套在InputStream 外,起着缓存的功能,用于改善InputStream 的性能。
在读取流数据之前,先造好管子,再读取流中的信息。前两次直接打印,第二次之后读取的数据后按照字符打印。
代码
package charper_eight_IO;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.IOException;
public class TestOne {
public static void main(String[] args) throws IOException {
System.out.println("请输入字符串");
BufferedInputStream bIS = new BufferedInputStream(new
DataInputStream(System.in));
System.out.println("字符一的Unicode码:" + bIS.read());
System.out.println("字符二的Unicode码:" + bIS.read());
int ch = -1;
while((ch = bIS.read())!=-1){
System.out.print((char) ch + "\t");
}
System.exit(0);
}
}
问题
如果我们换一种方式,将第二次之后读取的数据放进一个字节数组中,并打印read() 方法的返回值,我们会看到一些不一样的东西。
package charper_eight_IO;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.IOException;
public class TestOne {
public static void main(String[] args) throws IOException {
System.out.println("请输入字符串");
BufferedInputStream bIS = new BufferedInputStream(new
DataInputStream(System.in));
System.out.println("字符一的Unicode码:" + bIS.read());
System.out.println("字符二的Unicode码:" + bIS.read());
byte[] data = new byte[128];
int len = bIS.read(data);
System.out.println("剩余字符长度:"