一、填空题
1、字节流、字符流
2、File、java.io
3、SequenceInputStream
4、RandomAccessFile
5、管道流
6、LineNumberReader、BufferedReader、setLineNumber(int)、getLineNumber()
7、字节流、字符流
8、PrintStream、setOut(PrintStream out)
9、Unicode
10、newLine()
二、判断题
1、错 2、对 3、对 4、对 5、错
三、选择题
1、AB 2、C 3、C 4、ABCD 5、AB 6、ACD 7、A 8、A 9、D 10、A
四、程序填空题
1、InputStreamReader、br.readLine()、运行结果为2
2、FileInputStream(file1)、FileOutputStream、fis.available()
五、问答题
1、Java程序通过流来完成输入和输出,流是输入或输出信息的抽象。流通过Java的输入/输出系统与外设连接进行数据通信。流是抽象的对象,具体实现代码在java.io包中。
2、字节流的两个基类是InputStream和OutputStream,字符流的两个基类是Reader和Writer,它们都是Object类的直接子类,字节流是处理以8位字节为基本单位的字节流类;Reader和Writer类是专门处理16位字节的字符流类。
3、管道流分为管道输入流(PipedInputStream)和管道输出流(PipedOutputStream),通常由一个PipedInputStream实例对象和一个PipedOutputStream实例对象相互连接而实现管道通信,PipedOutputStream向管道写入数据,PipedInputStream从管道中读取PipedOutputStream写入的数据,管道流主要用来完成线程之间的通信。
4、程序运行时,会在内存中创建多个对象,然而程序结束后,这些对象便被当作垃圾回收了。如果希望永久保存这些对象,则可以将对象转为字节数据写入到硬盘上,这个过程称为对象序列化。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态)。
5、把字符串转换成计算机识别的字节序列称为编码,而把字节序列转换为普通人能看懂的明文字符串称为解码,如图1所示。
图1 编码和解码过程
在计算机程序中,如果要把字节数组转换为字符串,可以通过String类的构造方法String(byte[] bytes,String charsetName)把字节数组按照指定的码表解码成字符串(如果没有指定字符码表,则用操作系统默认的字符码表,如中文的Windows系统默认使用的字符码表是GBK),反之,可以通过使用String类中的getBytes(String charsetName)方法把字符串按照指定的码表编码成字节数组。
六、编程题
1、参考答案
import java.io.*;
public class Test01 {
public static void main(String[] args) throws Exception {
// 字节流拷贝
FileInputStream in = new FileInputStream("E:/src.txt");
FileOutputStream out = new FileOutputStream("E:/des1.txt");
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) != -1) {
out.write(buf, 0, len);
}
in.close();
out.close();
// 字符流拷贝
BufferedReader bf = new BufferedReader(new FileReader("E:/src.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("E:/des2.txt"));
String str;
while ((str = bf.readLine()) != null) {
bw.write(str);
bw.newLine();
}
bf.close();
bw.close();
}
}
2、参考答案
import java.io.*;
public class Test02 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String password = "";
boolean b = false;
for (int i = 0; i < 5; i++) {
System.out.println("请输入密码:");
password = br.readLine();
if (password.equals("123456")) {
System.out.println("恭喜你进入游戏");
b = true;
break;
}
}
if (!b) {
System.out.println("密码错误,游戏结束");
System.exit(0);
}
}
}