AnjoyoJava07课后习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AnjoyoJava07课后习题
一、选择题:
1.下面关于访问文件和目录说法错误的一项是()。

A、File类虽然它不能访问文件内容,却可以用来进行文件的相关操作,它描述的是文
件本身的属性。

B、File类如果需要访问文件本身,则需要使用输入/输出流。

C、File类可以使用文件路径字符串来创建File实例,该文件路径字符串可以是绝对路
径,但不可以是相对路径,默认情况下,程序会根据用户的工作路径来解释相对路径,通常就是Java虚拟机所在的路径。

D、将路径当作File类来处理,路径名中除了最后一个之外每个字段都表示一个目录;
最后一个字段可能表示一个目录或文件名。

2.下面关于流的描述有误的一项是()。

A、流是指一连串流动的字符,是以先进后出的方式发送信息的通道。

B、在Java中,处理字节流的两个基础的类是InputStream和OutputStream。

C、在Java中,用于处理字符流的两个基础的类是Reader和Writer。

D、按照流的方向分,可以分为输入流(Input Stream)和输出流(Output Stream)。

3.下面关于流的分类说法错误的一项是()。

A、为了处理Unicode字符串,定义了一系列的单独类,这些类是从抽象类Reader和
Writer继承而来的。

B、这些单独类的操作均以单字节(16-bits)的Unicode字符为基础,而非双字节的字
符为基础。

C、处理流是“处理流的流”,它用来处理其它的流,处理流又被称为高级流(High Level
Stream)。

D、节点流又常常被称为低级流(Low Level Stream)。

4.下面关于低级InputStream类(节点流)的说法有误的一项是()。

A、低级InputStream类(节点流)的ByteArrayInputStream方法为读取字节数组设计的
流,允许内存的一个缓冲区被当作InputStream使用。

B、低级InputStream类(节点流)的PipedInputStream方法即管道流,产生一份数据,
能被写入相应的PipedOutputStream。

C、低级InputStream类(节点流)的FilterInputStream方法,它派生自InutStream,其功
能在于将一个流连接到另一个流的末端,它将两种流连接起来。

D、低级InputStream类(节点流)的DataInputStream方法,它是FilterInputStream抽象
类的子类,并且提供了用于从另一个流中读取简单数据类型数据和String类型数据的读取方法。

5.下面说法有误的一项是()。

A、通过解析XML文档,为XML文档在逻辑上建立一个树模型,树的节点是一个个
对象,我们通过存取这些对象就能够存取XML文档的内容。

B、使用Element对象的getElementsByTagName()方法,我们可以得到一个NodeList对
象。

C、一个Node对象代表了一个XML文档中的一个标签元素,而NodeList对象,代表
的是一个Node对象的列表。

D、DOM的基本对象有5个:Document、Node、NodeList、Element和Attr。

6.下面关于SAX解析XML说法错误的一项是()。

A、SAX基于事件驱动,使用回调机制将重要事件通知给客户端应用程序。

B、用SAX解析器的时候编码工作会比较困难,但是可以同时访问同一个文档中的多处
不同数据。

C、SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。

D、SAX解析器在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的
时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。

7.下列数据流中,属于输入流的一项是()。

A、从网络流向显示器的数据流
B、从内存流向硬盘的数据流
C、从键盘流向内存的数据流
D、从键盘流向显示器的数据流
8.下列流中哪一个使用了缓冲区技术()。

A、FileInputStream
B、BufferedOutputStream
C、FileReader
D、DataOutputStream
9.能读入字节数据进行Java基本数据类型判断过虑的类是()。

A、DataInputStream
B、BufferedInputStream
C、FileReader
D、FileInputStream
10.使用哪一个类可以实现在文件的任意一个位置读写一个记录()。

A、BufferedInputStream
B、FileReader
C、RandomAccessFile
D、FileWriter
11.在通常情况下,下列哪个类的对象可以作为BufferedReader类构造方法的参数()。

A、FileInputStream
B、FileReader
C、PrintStream
D、InputStreamReader
12.下列关于流类和File类的说法中错误的一项是()。

A、File类可以修改文件内容
B、File类可以重命名文件
C、流类不可以新建目录
D、流类可以修改文件内容
13.若要删除一个文件,应该使用下列哪个类的实例()。

A、File
B、RandomAccessFile
C、FileReader
D、FileOutputStream
二、填空题:
1.文档对象模型
2.字节流、字符流、文件流、对象流、管道流
3.输入、输出
4.InputStream、OutputStream
5.DataInput、DataOutput
6.Reader、Writer
7.键盘、显示器
8.Static
9.二进制
10.文件
11.目录、目录
12.File、File
13.数据的输入输出、文件和目录
14.FileInputStream、FileOutputStream
15.DataInputStream、DataOutputStream
16.Object、DataInput、DataOutput
1.DOM是Document Object Model的缩写,即________。

2.Java的输入输出流包括________、________、________、________以及多线程之间通信
的________。

3.凡是从外部设备流向中央处理器的数据流,称之为________流;反之,称之为________
流。

4.所有的字节输入流都从________类继承,所有的字节输出流都从________类继承。

5.java.io包中的接口中,处理字节流的有________接口和________接口。

6.与用于读写字节流的InputStream类和OutputStream类相对应,Java还提供了用于读写
Unicode字符的字符流________类和________类。

7.对一般的计算机系统,标准输入通常是________,标准输出通常是________。

8.System类的所有属性和方法都是________类型的,即调用时需要以类名System为前缀。

9.System.in只能从键盘读取________的数据,而不能把这些比特信息转换为整数、字符、
浮点数或字符串等复杂数据类型的量。

10.在计算机系统中,需要长期保留的数据是以________的形式存放在磁盘、磁带等外存储
设备中的。

11.________是管理文件的特殊机制,同类文件保存在同一________下可以简化文件的管
理,提高工作效率。

12.Java语言的java.io包中的________类是专门用来管理磁盘文件和目录的。

调用________
类的方法则可以完成对文件或目录的常用管理操作,如创建文件或目录、删除文件或目录、查看文件的有关信息等。

13.File类也虽然在java.io包中,但它不是InputStream或者OutputStream的子类,因为它
不负责________,而专门用来管理________。

14.如果希望从磁盘文件读取数据,或者将数据写入文件,还需要使用文件输入输出流类
________和________。

15.利用________类和________类提供的成员方法可以方便地从文件中读写不同类型的数
据。

16.Java中的RandomAccessFile类提供了随机访问文件的功能,它继承了________类,用
________和________接口来实现。

三、简答题:
1.请写出XML的三个主要的作用。

2.请分析DOM解析XML的优缺点。

3.请分析SAX解析XML的优缺点。

四、编程题:
1.编写一个程序,其功能是将两个文件的内容合并到一个文件中。

2.编写一个程序实现以下功能:
产生5000个1~9999之间的随机整数,将其存入文本文件a.txt中。

②从文件中读取这5000个整数,并计算其最大值、最小值和平均值并输出结果。

答案:
一、选择题:
1~5:CABDB 6~10:BCBAC 11~13:D AA
二、填空题:
17.文档对象模型
18.字节流、字符流、文件流、对象流、管道流
19.输入、输出
20.InputStream、OutputStream
21.DataInput、DataOutput
22.Reader、Writer
23.键盘、显示器
24.Static
25.二进制
26.文件
27.目录、目录
28.File、File
29.数据的输入输出、文件和目录
30.FileInputStream、FileOutputStream
31.DataInputStream、DataOutputStream
32.Object、DataInput、DataOutput
三、简答题:
1.答:数据存储:XML和数据库一样,都可以实现数据的持久化存储。

两者相比,数据
库提供了更强有力的数据存储和分析能力,XML仅仅是存储数据,XML与其它数据表现形式最大的不同是它极其简单。

数据交换:在实际应用中,由于各个计算机所使用的操作系统,数据库不同,因此
数据之间的交换向来是头疼的事情,但可以使用XML交换数据来解决这个问题。

例如,可以将数据库A中的数据转换成标准的XML文件,然后数据库B再将该标准的XML 文件转换成适合自己数据要求的数据,以便达到交换数据的目的。

数据配置:许多应用都将配置数据存储在XML文件中。

使用XML配制文件可读性强,灵活性高,不用像其它应用那样要经过重新编译才能修改和维护应用。

2.答:DOM解析的优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列
等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。

3.答:SAX解析XML优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM
解析器代码小,适于Applet下载。

缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少。

四、编程题:
1.答:编程分析】本题主要考察对文件流类FileReader和FileWriter的使用方法,实现从文
件中读取数据,以及向文件中输入数据。

第一步:采用面向字符的文件流读出文件内容,使用FileReader类的read()方法,写文件内容使用FileWriter类的write()方法。

第二步:通过键盘方式输入要合并的两个源文件的文件名以及合并后的新文件名。

第三步:将两个源文件内容分别读出并写入到目标文件中。

【参考程序】
import java.io.*;
public class X8_3_2 {
public static void main(String args[]) {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
File fin1, fin2, fout;
try{
System.out.print("Input the first input file name: ");
fin1 = new File(br.readLine());
if(!fin1.exists()){
System.out.println("The file doesn't exist! ");
System.exit(0);
}
System.out.print("Input the second input file name: ");
fin2 = new File(br.readLine());
if(!fin2.exists()){
System.out.println("The file doesn't exist! ");
System.exit(0);
}
System.out.print("Input the output file name: ");
fout = new File(br.readLine());
if((new JoinFiles(fin1,fin2,fout)) != null){ // 合并文件
System.out.println("Successful in joining files!");
}
else{
System.out.println("fail in joining files!");
}
}catch(IOException e){
e.printStackTrace();
}
}
}
class JoinFiles{
JoinFiles(File fin1, File fin2, File fout) throws IOException{
FileReader fr1 = new FileReader(fin1);
FileReader fr2 = new FileReader(fin2);
FileWriter fw = new FileWriter(fout);
int ch;
while((ch=fr1.read()) != -1)
fw.write(ch);
while((ch=fr2.read()) != -1)
fw.write(ch);
fr1.close();
fr2.close();
fw.close();
}
}
【运行结果】
Input the first input file name: f1.txt
Input the second input file name: f2.txt
Input the output file name: fout.txt
Successful in joining files!
2.答:【编程分析】本题主要考察利用FileOutputStream、DataOutputStream、FileInputStream、
DataInputStream等类实现对文件的操作。

第一步:产生5000个1~9999之间的随机整数,将其存入文本文件a.txt中,本参考程序利用方法“genRandom(File f)”来实现,本方法使用了FileOutputStream和DataOutputStream两个类。

第二步:将文件中的数据取出进行计算最大值、最小值、平均值以及求和,本参考程序利用方法“calculate(File f)”来实现,本方法使用了FileInputStream和DataInputStream两个类。

【参考程序】
import java.io.*;
public class X8_3_3 {
static int max, min, sum = 0;
static int[] a = new int[5000];
public static void main(String args[]) {
File f = new File("a.txt");
if(f == null){
System.out.println("Can't create the file");
System.exit(0);
}
genRandom(f);
calculate(f);
}
static void genRandom(File f){ // 产生随机数方法
try{
FileOutputStream fos = new FileOutputStream(f);
DataOutputStream dos = new DataOutputStream(fos);
for(int i=0; i<5000; i++){
dos.writeInt((int)(Math.random()*10000));
}
dos.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
}
static void calculate(File f){ // 计算最大值、最小值、平均值以及求和方法try{
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
int i;
for(i=0; i<5000; i++){
a[i] = dis.readInt();
}
dis.close();
max = a[0];
min = a[0];
for(i=0; i<5000; i++){
if(max <a[i]) max = a[i];
if(min>a[i]) min = a[i];
sum += a[i];
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
int average = sum/5000;
System.out.println("max = "+max+"\tmin="+min);
System.out.println("sum = "+sum+"\taverage="+average);
}
}
【运行结果】
max = 9997 min=6
sum = 25031340 average=5006。

相关文档
最新文档