java IO流(习题)

(2011-09-23 20:13:50)

标签:

杂谈

IO 框架

Key Point

* File 类

* 流的分类

* 基本字节流

* 字节过滤流

* 基本字符流、桥转换

* 字符过滤流

* 对象序列化

练习

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

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”);

}

}

请选择一个正确答案:

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”文件

//判断该文件是否存在

//如果该文件存在,则输出该文件的完整路径

}

}

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

位上分,它是__________流,从功能上分,它是____________流。

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

1) 无参的read 方法返回值为___类型,表示_________________

2) int read(byte[]

bs)方法返回值表示______________,参数表示________________

3) int read(byte[] bs, int offset, int 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{

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 块中。

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. (对象序列化)

为了让某对象能够被序列化,要求其实现________________________接口;

为了让该对象某个属性不参与序列化,应当使用____________修饰符。

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();

}

}

问:这个程序总共往文件中写入了多少字节?

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);

oos.close();

ObjectInputStream oin = new ObjectInputStream(

new FileInputStream(“stu.dat”) );

Student stu2 = (Student) oin.readObject();

oin.close();

System.out.println(stu2);

}

}

19. *(对象序列化)有以下代码:

import java.io.*;

class Address{

private String addressName;

private String zipCode;

//构造方法…

//get/set 方法…

}

class Worker implements Serializable{

private String name;

private int age;

private Address address;

//构造方法…

//get/set 方法…

}

public class TestSerializable {

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

Address addr = new Address("Beijing", "100000");

Worker w = new Worker("Tom", 18, addr);

ObjectOutputStream oout = new ObjectOutputStream(

new FileOutputStream("fout.dat") );

oout.writeObject(w);

oout.close();

}

}

选择正确答案

A. 该程序编译出错

B. 编译正常,运行时异常

C. 编译正常,运行时也正常。

20. *(字节流,BufferedReader)完成下面操作。

在当前目录下创建一个worldcup.txt 的文本文件,其格式如下:

2006/意大利

2002/巴西

该文件采用“年份/世界杯冠军”的方式保存每一年世界杯冠军的信息。

要求:读入该文件的基础上,让用户输入一个年份,输出该年的世界杯冠军。如果该年

没有举办世界杯,则输出“没有举办世界杯”

21. **(Buffered 流,缓冲区)有下面代码

import java.io.*;

public class TestBufferedWriter{

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

FileWriter fw = new FileWriter(“test.txt”);

BufferedWriter bw = new BufferedWriter(fw);

String str = “Hello World”;

bw.write(str);

}

}

在处放入什么代码,能够使得test.txt 文件被正确写入?

A. bw.close()

B. bw.flush();

C. fw.close();

22. **(Data 流)在原有自动分配id 的Account 对象基础上,利用Data 流,完成下面的要

求:

要求每次启动程序时,id 的自动分配都能在上一次运行的基础上继续。例如,假设有以

下代码:

public class TestAccount{

public static void main(String args[]){

Account a1 = new Account();

Account a2 = new Account();

Account a3 = new Account();

System.out.println(a1.getId() );

System.out.println(a2.getId() );

System.out.println(a3.getId() );

}

}

编译之后,第一次运行

java TestAccount

时,输出

100001

100002

100003

第二次运行

java TestAccount

时,输出

100004

100005

100006

23. **(综合)

从命令行中读入一个文件名,判断该文件是否存在。如果该文件存在,则在原文件相同

路径下创建一个文件名为“copy_原文件名”的新文件,该文件内容为原文件的拷贝。

例如:读入

/home/java/photo.jpg

则创建一个文件

/home/java/copy_photo.jpg

新文件内容和原文件内容相同。

24. ***(可选,综合)用两种方式保存对象。

有Worker 对象,部分代码如下:

class Worker{

private String name;

private int age

private double salary;

//构造方法

//get/set 方法

//toString 方法

}

1) 完善Worker 对象,并使其能使用对象序列化机制。

2) 利用ObjectOutputStream 存入两个Worker 对象, 然后使用

ObjectInputStream 读出这两个对象,并打印这两个对象的信息。

3) 写一个方法saveWorkerToFile(Worker w, File file),该方法完成下面的

功能:

假设有一个Worker 对象w1,File 对象f1 如下:

Worker w1 = new Worker(“Tom”, 30, 5000);

File f1 = new File(“test.txt”);

则调用saveWorkerToFile(w1, f1),会在test.txt 中增加一行:

Tom/30/5000

4) 写一个方法List

readWorkerFromFile(File file),该方法读某

个文件,从文件信息中创建一个Worker 类型的List。

例如,假设文件内容如下:

Tom/30/5000

Jim/25/3000

Terry/33/4500

则返回一个包含三个Worker 对象的List。

分享:

喜欢

0

赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

java io 流选择题_java IO流(习题)相关推荐

  1. java io 流选择题_java Io流面试题和选择题

    Java对象的序列化指将一个java对象写入OI流中,与此对应的是,对象的反序列化则从IO流中恢复该java对象.下面就由学习啦小编为大家介绍一下java Io流面试题和选择题的文章,欢迎阅读. ja ...

  2. java io流填空题,java面试题选择题_java,Io流面试题和选择题

    Java对象的序列化指将一个java对象写入OI流中,与此对应的是,对象的反序列化则从IO流中恢复该java对象.下面就由小编为大家介绍一下java Io流面试题和选择题的文章,欢迎阅读. java ...

  3. java第二章选择题_Java第二章习题讲解(2)

    第二章习题讲解(1) 3.阅读或调试程序 (1) 上机运行下列程序,注意观察输出的结果.Java public class E{ public static void main(String args ...

  4. java io流大全_Java IO流系统整理

    Java IO流的分类 Java中的流,可以从不同的角度进行分类. 按流向分类: 输入流: 程序可以从中读取数据的流. 输出流: 程序能向其中写入数据的流. 按数据传输单位分类: 字节流:以字节(8位 ...

  5. 基于java洗浴中心管理系统_Java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  6. java io框架图_Java IO流体系继承结构图解析

    Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...

  7. java 输入流关闭顺序_Java IO流中先关闭输出流还是先关闭输入流?为什么?

    java中需要手动释放的资源bai常见的有以下两个: 流相du关资zhi源 流相关资源一般遵循: 1)先开后关dao,先开的输入流,再开的输出流,通过读取输入流写入输出流中,那么应该先关输出流,再关输 ...

  8. java+io体系结构图_Java IO 体系结构

    Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...

  9. java io 面试题_Java IO面试题及答案整理汇总

    说到Java开发,所有的java程序员都知道Java IO流,而且相信大家在具体的工作中也都会用到,但是其实很多朋友们并没有完全掌握java IQ流的内容,而且java IO在java 面试中也会考察 ...

最新文章

  1. UGUI世界转屏幕坐标
  2. 我的世界java怎么骑马,我的世界怎么骑马?方法解答
  3. ios模拟器装ipa包_在iOS开发的时候如何在模拟器中安装APP
  4. 关于.Net 1.1 Windows Forms 控件的一个小问题
  5. 缓存击穿/穿透/雪崩
  6. php手机论坛程序,网站开发-php开发手机论坛(8)-编辑帖子
  7. 风控算法知识——WOE值的深度理解与应用
  8. sql 标量子查询_SQL Server 2017:标量子查询简化
  9. 直线距离uva 11168 Airport(训练指南)
  10. pythondebug教学_python debug的使用方式
  11. html5 go语言运行环境,GO语言环境搭建 及 helloworld开发
  12. matlab二重定积分_怎么用matlab计算这个二重积分如何用matlab求二重积分
  13. Java IO(文件流)
  14. Java必突-JVM知识专题(一): Java代码是如何跑起来的+类加载到使用的过程+类从加载到使用核心阶段(类初始化)+类加载的层级结构+什么是JVM的内存区域划分?Java虚拟机栈、Java堆内存
  15. php memcache内存大小,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP
  16. CTFshow-原谅杯(1-4)
  17. 树型拓扑计算机网络的缺点是,拓扑结构的优缺点_网状拓扑结构特点_总线的优缺点...
  18. 深扒程序员外包,为啥我不建议你去外包公司?
  19. 自走棋java代码,【自走棋】地图格子高亮效果
  20. QQ(微信)一次性发送多条信息(连续发520遍我爱你)

热门文章

  1. 霍尼韦尔服务器 型号,霍尼韦尔Honeywell中心管理服务器HUS-VMS-MAS HUS-VMS-SLA HUS-VMS-RPK详细信息_产品参数_价格_联系方式_DAV数字音视工程网...
  2. ribbon设置权重_Ribbon负载均衡策略配置
  3. 聚合查询、联合查询【mysql数据库】
  4. 疯狂的DFS,也带不动EOS大丰收
  5. Vscode开发Qt
  6. QT配置Eigen库
  7. Cisco路由器恢复出厂配置
  8. jenkins 连接k8s 集群
  9. blob图片路径加密
  10. python模拟支付宝扫码登录_GitHub - Jaccorot/alipay_python: 支付宝 alipay python接口,支持担保交易,即时到帐和自动发货接口...