Java07课后习题
一、选择题:
1. 下面关于访问文件和目录说法错误的一项是(C)。
A、File类虽然它不能访问文件内容,却可以用来进行文件的相关操作,它描述的是文件本身的属性。
B、File类如果需要访问文件本身,则需要使用输入/输出流。
C、File类可以使用文件路径字符串来创建File实例,该文件路径字符串可以是绝对路径,但不可以是相对路径,默认情况下,程序会根据用户的工作路径来解释相对路径,通常就是Java虚拟机所在的路径。(也可以是相对路径)
D、将路径当作File类来处理,路径名中除了最后一个之外每个字段都表示一个目录;最后一个字段可能表示一个目录或文件名。 2. 下面关于流的描述有误的一项是( A )。
A、流是指一连串流动的字符,是以先进后出的方式发送信息的通道。
B、在Java中,处理字节流的两个基础的类是InputStream和OutputStream。 C、在Java中,用于处理字符流的两个基础的类是Reader和Writer。
D、按照流的方向分,可以分为输入流(Input Stream)和输出流(Output Stream)。 3. 下面关于流的分类说法错误的一项是( B )。
A、为了处理Unicode字符串,定义了一系列的单独类,这些类是从抽象类Reader和Writer继承而来的。
B、这些单独类的操作均以单字节(16-bits)的Unicode字符为基础,而非双字节的字符为基础。 C、处理流是“处理流的流”,它用来处理其它的流,处理流又被称为高级流(High Level Stream)。
D、节点流又常常被称为低级流(Low Level Stream)。
4. 下面关于低级InputStream类(节点流)的说法有误的一项是( D )。
A、低级InputStream类(节点流)的ByteArrayInputStream方法为读取字节数组设计的流,允许内存的一个缓冲区被当作InputStream使用。
B、低级InputStream类(节点流)的PipedInputStream方法即管道流,产生一份数据,能被写入相应的PipedOutputStream。
C、低级InputStream类(节点流)的FilterInputStream方法,它派生自InutStream,其功能在于将一个流连接到另一个流的末端,它将两种流连接起来。
D、低级InputStream类(节点流)的DataInputStream方法,它是FilterInputStream抽象类的子类,并且提供了用于从另一个流中读取简单数据类型数据和String类型数据的读取方法。
5. 下列数据流中,属于输入流的一项是(C )。
A、从网络流向显示器的数据流 B、从内存流向硬盘的数据流 C、从键盘流向内存的数据流 D、从键盘流向显示器的数据流 6. 下列流中哪一个使用了缓冲区技术(B )。
A、FileInputStream B、BufferedOutputStream C、FileReader D、DataOutputStream
7. 能读入字节数据进行Java基本数据类型判断过虑的类是( A)。
A、DataInputStream B、BufferedInputStream
8.
9.
10.
11.
C、FileReader D、FileInputStream
使用哪一个类可以实现在文件的任意一个位置读写一个记录( C )。 A、BufferedInputStream B、FileReader C、RandomAccessFile D、FileWriter 在通常情况下,下列哪个类的对象可以作为BufferedReader类构造方法的参数( D)。 A、FileInputStream B、FileReader C、PrintStream D、InputStreamReader 下列关于流类和File类的说法中错误的一项是( A)。 A、File类可以修改文件内容 B、File类可以重命名文件 C、流类不可以新建目录 D、流类可以修改文件内容 若要删除一个文件,应该使用下列哪个类的实例( A )。 A、File B、RandomAccessFile C、FileReader D、FileOutputStream
二、填空题:
1. Java的输入输出流包括__字节流_____、__字符流____、__文件流____、对象流_______以及多线程之间通信的管道流________。
2. 凡是从外部设备流向中央处理器的数据流,称之为__输入______流;反之,称之为_输出_______流。
3. 所有的字节输入流都从__InputStream______类继承,所有的字节输出流都从
_OutputStream_______类继承。
4. java.io包中的接口中,处理字节流的有__DataInput______接口和__DataOutput______接
口。
5. 与用于读写字节流的InputStream类和OutputStream类相对应,Java还提供了用于读写
Unicode字符的字符流___Reader_____类和___Writer_____类。 6. 对一般的计算机系统,标准输入通常是_键盘_______,标准输出通常是_显示器_______。 7. System类的所有属性和方法都是__Static______类型的,即调用时需要以类名System为
前缀。
8. System.in只能从键盘读取___二进制_____的数据,而不能把这些比特信息转换为整数、
字符、浮点数或字符串等复杂数据类型的量。 9. 在计算机系统中,需要长期保留的数据是以___文件_____的形式存放在磁盘、磁带等外
存储设备中的。
10. ___目录_____是管理文件的特殊机制,同类文件保存在同一__目录______下可以简化文件的管理,提高工作效率。
11. Java语言的java.io包中的__File______类是专门用来管理磁盘文件和目录的。调用
__File______ 类的方法则可以完成对文件或目录的常用管理操作,如创建文件或目录、删除文件或目录、查看文件的有关信息等。
12. File类也虽然在java.io包中,但它不是InputStream或者OutputStream的子类,因为它
不负责_数据的输入和输出_______,而专门用来管理___文件还有目录_____。
13. 如果希望从磁盘文件读取数据,或者将数据写入文件,还需要使用文件输入输出流类
___FileInputStream_____和_FileOutputStream_______。
14. 利用__DataInputStream______类和____DataOutputStream____类提供的成员方法可以方便地从文件中读写不同类型的数据。
三、编程题:
1. 编写一个程序,其功能是将两个文件的内容合并到一个文件中。 2. 编写一个程序实现以下功能:
①?? 产生5000个1~9999之间的随机整数,将其存入文本文件a.txt中。
②从文件中读取这5000个整数,并计算其最大值、最小值和平均值并输出结果。 1.
import java.io.BufferedReader; import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
public class t71 { public static void main(String[] args) { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br=new BufferedReader(isr); File fin1,fin2,fout; try{ System.out.println(\ fin1=new File(br.readLine()); if(!fin1.exists()){ System.out.println(\ System.exit(0); } System.out.println(\ fin2=new File(br.readLine()); if(!fin2.exists()){ System.out.println(\ System.exit(0); } System.out.println(\ fout=new File(br.readLine()); if((new JoinFiles(fin1,fin2,fout))!=null) { System.out.println(\ }
else{ System.out.println(\ }
}catch(IOException e){ e.printStackTrace(); } } }
import java.io.File;
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;
public 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(); } } 2.
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileOutputStream;
import org.omg.Messaging.SyncScopeHelper;
public class t72 { static int max,min,sum=0; static int[] a=new int [5000]; public static void main(String[] args){ File f=new File(\ if(f==null){ System.out.println(\ 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]) min = a[i]; sum += a[i]; } }catch(FileNotFoundException e){ e.printStackTrace(); }catch(Exception e){ e.printStackTrace(); } int average = sum/5000; System.out.println(\ System.out.println(\}