《Java基础入门》_课后习题答案大一计算机专业7
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Java基础入门》课后习题答案
第7章IO(输入输出)
一、填空题
1、Java中的I/O流,按照传输数据不同,可分为:字节流、字符流
2.在Buffer与Channel交互时,数据从:Channel、读取到Buffer 中,或从Buffer入到Channel 中。
3.用于将字节流转换为字符流的是:InputStreamReader、OutputStreamWriter
2、NIO主要有三大核心部分:Buffer、Channel、Selector
5、Java中提供了一个类:RandomAccesseFile,它不但具有读写文件的功能,而且可以随机地从文
件的任何位置开始执行读写数据的操作。
二、判断题
1. 如果一个File表示目录下有文件或者子目录,调用delete()方法也可以将其删除。
错
2.对象序列化是指将一个Java 对象转换成一个I/0 流中字节序列的过程。
对
3.Channel 是一个接口对象,它类似于传统的流对象。
对
4.InputStream类的close()方法是用于关闭流并且释放流所占的系统资源。
对
5,BufferedInputStream 和BufferedOutputStream 不是字节缓冲流。
错
三、选择题
1.下面选项中,哪些是标准输人输出流?(多选) (AB)
A. System.In
B.System. Out
C.InputStream
D.OutputStream
2.File类中以字符串形式返回文件绝对路径的方法是哪一项?(C)
A. getParent()
B. getNamel)
C. getAbsolutePathO
D. getPath()
3.以下创建RandomAccessFile类实例对象的代码,哪些是正确的?(多选)(AB)
A.new RandomAccessFile(new File("D:\\itcast\\dirl\test. java"),”rw”);
B.new RandomAccessFile("D:\\itcast\\dirl\test. java","r");
C. new RandomAccessFile("D:\\itcast\\dir1\\test.java");
D. new RandomAccessFile("D:\\itcast\\dir1\\test.java","wr")
4.以下选项中,哪个流中使用了缓冲区技术? (A)
A. BufferedOutputStream
B. FileInputStream
C. DataOutputStream
D. FileReader
5.以下选项中,关于Java NIO 中Buffer类的常用说法正确的是哪一项?
(B)
A.clearO方法会清除缓冲区数据,并将position 设置为0.limit 设置为capacity O
B.fip()方法先将limit 设置为当前position 位置,然后再将pson设置为0
C.mark()方法用于设置Buffer 的标记(mark),其能在0 与limi 之间做标记
D.rewind()方法将position 设置为0,并设置mark 标记
四、简答题
1、简述I/O 流的概念。
答:Java程序通过I/O流来完成输入和输出,流是输入或输出信息的抽象。
流通过Java的输入/输出系统与外设连接进行数据通信。
流是抽象的对象,具体实现代码在java.io包中。
2、简述字节流、字符流的区别。
答:字节流的两个基类是InputStream和OutputStream,字符流的两个基类是Reader和Writer,它们都是Object类的直接子类,字节流是处理以8位字节为基本单位的字节流类;Reader和Writer类是专门处理16位字节的字符流类。
3、简要说明什么是NIO。
答: Java中的NIO是为替代传统标准的I/O而出现的。
与标准的IO相比,Java NIO提供了一种与I/O 不同的工作方式。
NIO采用内存映射文件的方式来处理输入/输出,它将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了。
在标准IO中,使用的是字节流和字符流,而在NIO中,使用的是通道(Channel)和缓冲区(Buffer)。
数据总是从通道读入缓冲区,或从缓冲区写入通道。
NIO主要有三大核心部分:Buffer、Channel和Selector。
其中Buffer可以被看成是一个容器,其本质是一个数组缓冲区,读入或写出到Channel中的所有对象都会先放在Buffer中;Channel是对传统的输入/输出的模拟,在NIO中,所有的数据都需要通过通道流的形式传输;Selector(选择器)用于监听多个通道的事件(例如:连接打开、数据到达等),主要用于多线程处理。
四、编程题
1.编写一个程序,分别使用字节流和字符流拷贝一个文本文件。
要求如下:
(1)使用FileInputStream、FileOutputStream 和FileReader.FileWriter 分别进行拷贝。
(2)使用字节流拷贝时,定义一个1024 长度的字节数组作为缓冲区,使用字符流拷贝。
用BufferedReader 和BufferedWriter 包装流进行包装。
2.某人在玩游戏的时候输人密码123456 后成功进入游戏(输错5 次则被强行退出)。
要求用程序实现密码验证的过程。
要求如下:
以将其删除(1) 使用Sysytem. in 包装为字符流读取键盘输入。
(2) BufferedResder 对字符流进行包装。
调用ButferedReuder 的readli方读取一行。
(3在for循环中判新输人的码是为123456如果是则打印”你人
源。
并退出循环,否则继续循环读取键盘输人。
(4) 当循环完毕,密码还不正确,打印“密码错误,结来游戏”并调用.....结束游戏。
参考答案
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);
}
}
}。