一、填空题1.所有字节流类的基类是_______________、____________(InputStreamOutputStream)2.所有字符流类的基类是_______________、____________(ReaderWriter)3.InputStream类以__________为信息的基本单位(字节)4.Reader类以____________为信息的基本单位(字符)5.___________类用以处理文件和路径问题(File)6.Java中标准输入输出流对象是:________________、____________、___________(System.inSystem.outSystem.err)7.System.in的类型是___________(InputStream)8.System.out的类型是______________(PrinterStream)二、选择题1.以下选项中属于字节流的是(A)A)FileInputSreamB)FileWriterC)FileReaderD)PrintWriter2.以下选项中不属于File类能够实现的功能的是(D)A)建立文件B)建立目录C)获取文件属性D)读取文件内容3.以下选项中哪个类是所有输入字节流的基类(A)A)InputStreamB)OutputStreamC)ReaderD)Writer4.以下选项中哪个类是所有输出字符流的基类(D)A)InputStreamB)OutputStreamC)ReaderD)Writer5.下列选项中能独立完成外部文件数据读取操作的流类是(B)A)InputStreamB)FileInputStreamC)FilterInputStreamD)DataInputStream6.下列选项中能独立完成外部文件数据读取操作的流类是(B)A)ReaderB)FileReaderC)BufferedReaderD)ReaderInputStream7.在建立FileInputStream流对象时可能会产生下列哪种类型的异常(B)A)ClassNotFoundExceptionB)FileNotFoundExceptionC)RuntimeExceptionD)AWTException8.在使用FileInputStream流对象的read方法读取数据时可能会产生下列哪种类型的异常(D)A)ClassNotFoundExceptionB)FileNotFoundExceptionC)RuntimeExceptionD)IOException三、程序设计题1.编写应用程序,使用System.in.read()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组buffer中,并将用户输入的数据通过System.out.print()显示在屏幕上。importjava.io.*;publicclassClass1{publicstaticvoidmain(Stringargs[]){bytebuffer[]=newbyte[128];intn;try{n=System.in.read(buffer);//把键盘输入的数据读到数组buffer中,返回实际读取的字节数for(inti=0;in;i++)System.out.print((char)buffer[i]);}catch(IOExceptione){System.out.print(e);}}}2.编写应用程序,使用System.in.read()方法读取用户从键盘输入的字节数据,回车后,把从键盘输入的数据存放到数组buffer中,并将用户输入的数据保存为指定路径下的文件。importjava.io.*;publicclassClass1{publicstaticvoidmain(Stringargs[]){bytebuffer[]=newbyte[128];intn;try{n=System.in.read(buffer);FileOutputStreamout=newFileOutputStream(./abc.txt,true);//追加//FileOutputStreamout=newFileOutputStream(./abc.txt,false);out.write(buffer,0,n);out.close();}catch(IOExceptione){System.out.print(e);}}}3.编写java应用程序,使用FileInputStream类对象读取程序本身(或其他目录下的文件)并显示在屏幕上。importjava.io.*;publicclassClass1{publicstaticvoidmain(String[]args){try{//FileInputStreamfis=newFileInputStream(c:\\windows\\Config.txt);FileInputStreamfis=newFileInputStream(Class1.java);intn;while((n=fis.read())!=-1)System.out.print((char)n);fis.close();}catch(IOExceptione){System.out.println(e.toString());}}}4.编写java应用程序,使用FileInputStream类对象读取程序本身(或其他目录下的文件)到字节数组中,并显示在屏幕上(或存储为其他文件)。importjava.io.*;//读取程序本身,显示在屏幕上publicclassClass1{publicstaticvoidmain(String[]args){try{FileInputStreamfis=newFileInputStream(Class1.java);byte[]b=newbyte[fis.available()];System.out.println(文件流的大小:+fis.available());intn=fis.read(b);myprint(b);System.out.print(实际读取的字节数:+n);fis.close();}catch(IOExceptione){System.out.println(e.toString());}}staticvoidmyprint(byte[]x){for(inti=0;ix.length;i++)System.out.print((char)x[i]);}}5.编写应用程序,程序中创建一个文件输入流对象fis,读取当前目录下文本文件test1.txt,该文件内容有如下两行文本:Javaprogramiseasy.Ilikeit.从文件输入流fis中读取5个字节数据存放到数组b中,字节数据存放的位置从数组下标3开始。将读取的数据在屏幕输出。importjava.io.*;publicclassClass1{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile(./test1.txt);FileInputStreamfis=newFileInputStream(file);intn=0;byteb[]=newbyte[8];n=fis.read(b,3,5);fis.close();for(inti=3;ib.length;i++)//字节数组中从下标3开始的数据转化为字符后输出。System.out.print((char)b[i]+\t);}}6.编写应用程序,程序中创建一个文件输出流对象out向当前目录下已有的文件abc.txt(内容为:ABCDEFG)写入字符串abcdefg中的所有字符和大写字母'A'。importjava.io.*;publicclassClass1{publicstaticvoidmain(String[]x)throwsIOException{Strings=abcdefg;byte[]b;FileOutputStreamout=newFileOutputStream(./abc.txt,true);//添加字节数据b=s.getBytes();out.write(b,0,b.length);out.write(65);//写入字节数据65---‘A’out.close();}}7.使用RandomAccessFile类及其方法。importjava.io.*;publicclassClass1{publicstaticvoidmain(String[]args){try{//以随机方式写入数据RandomAccessFileout=newRandomAccessFile(1.dat,rw);out.writeInt(12345);//4out.writeChar('A');//2out.writeBoolean(true);//1out.writeUTF(程序设计);//8//显示字符‘A'和”程序设计“out.seek(4);System.out.println(out.readChar());out.skipBytes(1);//out.seek(7);System.out.println(out.readUTF());System.out.println(out.getFilePointer());System.out.println(out.length());out.close();System.in.read();}catch(IOExceptione){System.out.println(e);System.exit(-2);}}}8.编写应用程序,使用RandomAccessFile类及其方法,把程序本身分两次显示在屏幕上。第一次直接显示,第二次给每一行添加的行号显示。importjava.io.*;publicclassTest{publicstaticvoidmain(String[]args)throwsIOException{RandomAccessFilerandomfile=newRandomAccessFile(Test.java,r);Strings;while((s=randomfile.readLine())!=null){System.out.println(s);}longfilePointer=0,fileLength=randomfile.length();randomfile.seek(0);//文件指针已到文件尾,将文件指针重设到文件开始位置inti=1;while(filePointerfileLength){s=randomfile.readLine();System.out.println((i++)++s);filePointer=randomfile.getFilePointer();}randomfile.close();}}9.在程序所在的目录下有子目录b,目录b下有文本文件testb.txt。编写应用程序,创建文件对象:Filefile=newFile(b/testb.txt);通过文件对象file得到它的文件名、相对路径、绝对路径、父目录名。importjava.io.*;publicclassClass1{publicstaticvoidmain(Stringargs[]){Filefile=newFile(b/testb.txt);System.out.println(文件名:+file.getName());System.out.println(相对路径:+file.getPath());System.out.println(绝对路径:+file.getAbsolutePath());System.out.println(父目录名:+file.getParent());}}