IO练习

发布时间 : 星期三 文章IO练习更新完毕开始阅读

1. (File 类)以下关于File 类说法正确的是:ABC

A. 一个File 对象代表了操作系统中的一个文件或者文件夹 B. 可以使用File 对象创建和删除一个文件 C. 可以使用File 对象创建和删除一个文件夹

D. 当一个File 对象被垃圾回收时,系统上对应的文件或文件夹也被删除 2. (File 类)有如下代码: public class TestFile{

public static void main(String args[]){ File file = new File(“chp13/corejava.txt”); } }

请选择一个正确答案:B

A. corejava.txt 文件在系统中被创建

B. 在windows 系统上运行出错,因为路径分隔符不正确 C. corejava.txt 文件在系统中没有被创建

D. 如果corejava.txt 文件已存在,则抛出一个异常 3. (File 类)将下列代码补充完整 class TestMyFile{

public static void main(String args[]) throws Exception{ File file;

//创建一个File 对象表示当前目录下的“hello.txt”文件 file=new File(“hello.txt”); //判断该文件是否存在 file.exists();

//如果该文件存在,则输出该文件的完整路径 Syso(file.getAbsolutePath()); } }

4. (流的分类)对于FileInputStream 来说,从方向上来分,它是____输入_____流,从数据单

位上分,它是___字节___流,从功能上分,它是__基本_____流。

5. (字节流, FileInputStream)FileInputStream 有三个重载的read 方法,其中

1) 无参的read 方法返回值为_int__类型,表示___下一个数据字节;如果已到达文件末尾,则返回 -1。

2) int read(byte[] bs)方法返回值表示___读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。,参数表示存储读取数据的缓冲区

3) int read(byte[] bs, int offset, int len) 方法返回值表示读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1,参数分别表示b - 存储读取数据的缓冲区。off - 目标数组 b 中的起始偏移量。 len - 读取的最大字节数 6. (FileInputStream)下面关于FileInputStream 类型说法正确的是: A. 创建FileInputStream 对象是为了读取硬盘上的文件

B. 创建FileInputStream 对象时,如果硬盘上对应的文件不存在,则抛出一个异常 C. 利用FileInputStream 对象可以创建文件

D. FileInputStream 对象读取文件时,只能读取文本文件。 7. (FileOutputStream)填空:

创建FileOutputStream 对象时,如果对应的文件在硬盘上不存在,则会_自动创建___;如 果对应的文件在硬盘上已经存在,则__覆盖______;

如果使用FileOutputStream(String path, boolean append) 这个构造方法创建

FileOutputStream 对象,并给定第二个参数为true,则效果为____可以添加数据______。 创建FileOutputStream 时__不会_(会|不会)产生异常。 8. 代码改错

class TestFileInputStream{

public static void main(String args[]){

FileInputStream fin = new FileInputStream(“test.txt”); //文件输入流应该放入try/catch中

try{

System.out.println( fin.read() ); fin.close();

}catch(Exception e){} } }

9. (FileInputStream 和FileOutputStream)利用FileInputStream 和FileOutputStream,完成 下面的要求:

1) 用FileOutputStream 在当前目录下创建一个文件“test.txt”,并向文件输出“Hello World”,如果文件已存在,则在原有文件内容后面追加。

2) 用FileInputStream 读入test.txt 文件,并在控制台上打印出test.txt 中的内容。 3) 要求用try-catch-finally 处理异常,并且关闭流应放在finally 块中。

FileInputStream fin; FileOutputStream fon;

try{ fin = new FileInputStream(\

on = new FileOutputStream(\fon.write(“Hello World”);

System.out.println( fin.read() ); fin.close(); }catch(Exception e){}finally{fin.close();}

10. (Data 流)利用Data 流,完成下面操作:

1) 判断当前目录下是否存在一个“test.dat”的文件,如果该文件不存在,则往该文件 中写入一个long 类型的数值:10000L

2) 如果该文件存在,则从该文件中读出数值,并把该数值加1 之后,再存回文件中。

11. (字符流、桥转换)要想从某个文件中获得一个字符输出流,则至少有以下三种方式 A. 利用FileWriter 类 B. 利用PrintWriter 类

C. 利用FileOutputStream 类,并通过OutputStreamWriter 类获得Writer 请简述这三种方式获得Writer 的区别。

12. (字节流、字符流)以下几种文件格式,应当使用字节流还是字符流? 1) .java 源文件

2) .class 字节码文件 3) .html 网页文件 4) .jpg 图像文件 5) .mp3 音乐文件

6) 配置文件.bash_profile 7) .jar 文件

13. (过滤流)连线题。把过滤流和相应的功能用线连起来。注意,左右两边不是一一对应 的关系。

ObjectInputStream 字节流 ObjectOutputStream 字符流 BufferInputStream 读八种基本类型 BufferedOutputStream 写八种基本类型 DataInputStream 读对象 DataOutputStream 写对象 PrintWriter 缓冲功能 PrintStream 读入一行文本 BufferedReader 写字符串并换行 BufferedWriter 写字符串 14. (对象序列化)

为了让某对象能够被序列化,要求其实现______Serializable___接口; 为了让该对象某个属性不参与序列化,应当使用_transient_修饰符。

15. *(字符流、桥转换)完成下面功能:

事先在当前目录下准备好一个test.txt 的文本文件,要求该文本文件是使用GBK 编码的 多行文本文件。如: test.txt

窗前明月光 疑是地上霜 举头望明月 低头思故乡

利用字节流+桥转换读入这个文本文件,然后按照行的顺序,以UTF-8 的编码方式,写 到test2.txt 文件中,例: test2.txt 低头思故乡 举头望明月 疑是地上霜 窗前明月光

16. *(Data 流)有以下代码 public class Check{

public static void main(String args[]) throws Exception{ FileOutputStream fout = new FileOutputStream(“test.dat”);

DataOutputStream dout = new DataOutputStream(fout); dout.writeInt(1);

dout.writeDouble(0.01); dout.close(); } }

问:这个程序总共往文件中写入了多少字节?C A. 2 B. 8 C. 12 D. 16

E. 字节数取决于具体平台 17. *(对象序列化)

在PrintWriter 中,有一个方法print(Object obj)

在ObjectOutputStream 中,有一个方法writeObject(Object obj) 请简述这两个方法的区别

18. *(对象序列化)写出下面代码运行结果 import java.io.*;

class Address implements Serializable{ private String addressName; private String zipCode; //构造方法 //set/get 方法

public String toString(){

return addressName + “ ” + zipCode; } }

class Student implements Serializable { private String name; private transient int age; private Address addr; //构造方法? //set/get 方法?

public String toString(){

return name + “ ” + age + “” + addr.toString(); } }

public class TestObjectStream{

public static void main(String args[]) throws Exception{ Address addr = new Address(“Beijing”, “100000”); Student stu = new Student(“Tom”, 18, addr);

ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(“stu.dat”) ); oos.writeObject(stu);

联系合同范文客服:xxxxx#qq.com(#替换为@)