第十五章习题答案.docx
《第十五章习题答案.docx》由会员分享,可在线阅读,更多相关《第十五章习题答案.docx(10页珍藏版)》请在冰豆网上搜索。
第十五章习题答案
一、填空题
1.所有字节流类的基类是________、______(InputStreamOutputStream)
2.所有字符流类的基类是________、______(ReaderWriter)
3.InputStream类以_____为信息的基本单位(字节)
4.Reader类以______为信息的基本单位(字符)
5.______类用以处理文件和路径问题(File)
6.Javaxx标准输入输出流对象是:
________、______、______(System.inSystem.outSystem.err)
7.System.in的类型是______(InputStream)
8.System.out的类型是_______(PrinterStream)
二、选择题
1.以下选项中属于字节流的是(A)
A)FileInputSreamB)FileWriterC)FileReaderD)PrintWriter
2.以下选项中不属于File类能够实现的功能的是(D)
A)建立文件B)建立目录C)获取文件属性D)读取文件内容
3.以下选项中哪个类是所有输入字节流的基类(A)
A)InputStreamB)OutputStreamC)ReaderD)Writer
4.以下选项中哪个类是所有输出字符流的基类(D)
A)InputStreamB)OutputStreamC)ReaderD)Writer
5.下列选项中能独立完成外部文件数据读取操作的流类是(B)
A)InputStreamB)FileInputStreamC)FilterInputStreamD)DataInputStream
6.下列选项中能独立完成外部文件数据读取操作的流类是(B)
A)ReaderB)FileReaderC)BufferedReaderD)ReaderInputStream
7.在建立FileInputStream流对象时可能会产生下列哪种类型的异常(B)
A)ClassNotFoundExceptionB)FileNotFoundException
C)RuntimeExceptionD)AWTException
8.在使用FileInputStream流对象的read方法读取数据时可能会产生下列哪种类型的异常(D)A)ClassNotFoundExceptionB)FileNotFoundException
C)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;iSystem.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("Class
1.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("Class
1.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;iSystem.out.print((char)x[i]);}}
5.编写应用程序,程序中创建一个文件输入流对象fis,读取当前目录下文本文件test
1.txt,该文件内容有如下两行文本:
Javaprogramiseasy.
Ilikeit.
从文件输入流fis中读取5个字节数据存放到数组b中,字节数据存放的位置从数组下标3开始。
将读取的数据在屏幕输出。
importjava.io.*;
publicclassClass1{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile("./test
1.txt");
FileInputStreamfis=newFileInputStream(file);
intn=0;
byteb[]=newbyte[8];
n=fis.read(b,3,5);
fis.close();
for(inti=3;iSystem.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);//4
out.writeChar('A');//2
out.writeBoolean(true);//1
out.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(filePointerSystem.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());}}
10.请编写一个名为Class
1.java的Application,其功能为:
测验文件Class
1.java是否存在并输出其xx。
importjava.io.*;
publicclassClass1{publicstaticvoidmain(String[]args){Filef1=newFile("./Class
1.java");
System.out.println("isexist:
"+f
1.exists());
System.out.println("filelength:
"+f
1.length());}}
11.编写应用程序:
创建目录c:
\temp,并创建一个文件
2.txt,向该文件中写入字符串"Thefirstsnowcame."共5次。
importjava.io.*;
publicclassClass1{publicstaticvoidmain(Stringargs[])throwsIOException{Filefile1=newFile("c:
\\temp");
file
1.mkdir();
Filefile2=newFile(file1,"
2.txt");
FileOutputStreamout1=newFileOutputStream(file2);
Strings="Thefirstsnowcame.";
byte[]b=s.getBytes();
for(inti=0;i<5;i++){out
1.write(b,0,b.length);}}}
12.过滤文件并显示。
importjava.io.*;
publicclassClass1{publicstaticvoidmain(String[]args){try{FileoDir=newFile(".");
String[]strList;
//如果没有命令行参数就取当前目录下的所有文件列表
if(0==args.length)
strList=oDir.list();
else
strList=oDir.list(newDirFilter(args[0]));
for(inti=0;iSystem.out.println(strList[i]);}catch(Exceptione){System.out.println(e);}}}classDirFilterimplementsFilenameFilter{StringstrPick;
DirFilter(Stringpickname){this.strPick=pickname;}publicbooleanaccept(Filedir,Stringname){returnname.endsWith(strPick);}}
13.编写java应用程序,使用FileReader类对象读取程序本身(或其他目录下的文件)并显示在屏幕上。
importjava.io.*;//读取程序本身,显示在屏幕上
publicclassClass1{publicstaticvoidmain(String[]args){try{FileReaderfis=newFileReader("Class
1.java");
//FileReaderfis=newFileReader("c:
\\windows\\Config.txt");
intn;
while((n=fis.read())!
=-1)
System.out.print((char)n);
fis.close();}catch(IOExceptione){System.out.println(e.toString());}}}
14.编写应用程序,创建BufferedReader的对象,从某个文本文件中的字符输入数据流中读取一行字符(该文件与程序在同一目录下),跳过10个字节后将其显示出来。
importjava.io.*;
publicclassClass1{publicstaticvoidmain(Stringargs[])throwsIOException{BufferedReaderb_reader=newBufferedReader(newFileReader("
1.js"));
Stringstr;
b_reader.skip
(10);
str=b_reader.readLine();
System.out.println(str);}}