IO流作业
IO流作业
一、 填空题
- Java IO流可以分为 字节流 和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行。
- 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数据, read
方法给程序提供了一个从输入流中读取数据的基本方法。
- read方法从输入流中顺序读取源中的单个字节数据,该方法返回字节值(0-255之间的一个整数),如果到达源的末尾,该方法返回 -1 。
- Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准输出System.out和标准错误输出_____System.err_______________。
- Java IO体系中,____ObjectInputStream________________是字节输入流,不仅提供了存取所有Java基础类型数据(如:int,double 等)和String的方法,也提供了提供存取对象的方法。
- Java IO体系中, DataOutputStream __________________是字节输出流,提供了可以存取所有Java基础类型数据(如:int,double 等)和String的方法,但没有提供存取对象的方法。
- ___序列化 _________是指将Java对象转换成字节序列,从而可以保存到磁盘上,也可以在网络上传输,使得不同的计算机可以共享对象。
二、 选择题
|
1. |
使用Java IO流实现对文本文件的读写过程中,需要处理下列( B )异常。(选择一项) |
|
|
A |
ClassNotFoundException |
|
|
B. |
IOException |
|
|
C. |
SQLException |
|
|
D. |
RemoteException |
|
|
2. |
在Java的IO操作中,( D )方法可以用来刷新流的缓冲。(选择两项) |
|
|
A |
void release() |
|
|
B. |
void close() |
|
|
C. |
void remove() |
|
|
D. |
void flush() |
|
|
3. |
在Java中,下列关于读写文件的描述错误的是( B )。(选择一项) |
|
|
A |
Reader类的read()方法用来从源中读取一个字符的数据 |
|
|
B. |
Reader类的read(int n )方法用来从源中读取一个字符的数据 |
|
|
C. |
Writer类的write(int n)方法用来向输出流写入单个字符 |
|
|
D. |
Writer类的write(String str)方法用来向输出流写入一个字符串 |
|
|
4. |
阅读下列文件定入的Java代码,共有( C )处错误。(选择一项) |
|
|
import java.io.*; public class TestIO { public static void main(String []args){ String str ="文件写入练习"; FileWriter fw = null; //1 try{ fw = new FileWriter("c:\mytext.txt"); //2 fw.writerToEnd(str); //3 }catch(IOException e){ //4 e.printStackTrace(); }finally{ //此处省略关闭流 } } } |
||
|
A |
0 |
|
|
B. |
1 |
|
|
C. |
2 |
|
|
D. |
3 |
|
|
5. |
分析如下Java代码,有标注的四行代码中,有错误的是第( D )处。(选择一项) |
|
|
|
import java.io.FileWriter; import java.io.IOException; public class Test { public static void main(String[ ] args) { String str = "Hello World"; FileWriter fw = null; try { fw = new FileWriter("c:\\hello.txt"); // 1 fw.write(str); // 2 } catch (IOException e) { e.printStackTrace(); // 3 } finally { fw.close(); // 4 } } } |
|
|
A |
1 |
|
|
B. |
2 |
|
|
C. |
3 |
|
|
D. |
4 |
|
|
6. |
以下选项中关于如下代码的说法正确的是( AD )。(选择二项) |
|
|
|
public class TestBuffered { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new FileReader("d:/bjsxt1.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("d:/bjsxt2.txt")); String str = br.readLine(); while(str !=null){ bw.write(str); bw.newLine(); str = br.readLine(); } br.close(); bw.close(); } } |
|
|
A. |
该类使用字符流实现了文件复制,将d:/bjsxt1.txt复制为d:/bjsxt2.txt |
|
|
B. |
FileReader和FileWriter是处理流,直接从文件读写数据//节点流 |
|
|
C. |
BufferedReader和BufferedWriter是节点流,提供缓冲区功能,提高读写效率//处理流 |
|
|
D. |
readLine()可以读取一行数据,返回值是字符串类型,简化了操作 |
|
|
7. |
InputStreamReader是转换流,可以将字节流转换成字符流,是字符流与字节流之间的桥梁。它的实现使用的设计模式是( C )。(选择一项) |
|
|
A. |
工厂模式 |
|
|
B. |
装饰模式 |
|
|
C. |
适配器模式 |
|
|
D. |
代理模式 |
|
三、 判断题
- 假设文件”a.txt”的长度为100字节,那么当正常运行语句”OutputStream f=new FileOutputStream(new File(“a.txt”));”之后,文件”a.txt”的长度变为0字节。( T )
- ByteArrayInutStream和ByteArrayOutputStream对内存中的字节数组进行读写操作,属于字节流,属于处理流而不是节点流。 ( F )
- 实现Serializable接口的可以被序列化和反序列化。该接口中没有定义抽象方法,也没有定义常量。( T )
- 序列化是指将字节序列转换成Java对象,只有实现了Serializable接口的类的对象才可以被序列化。( F)
四、 简答题
- 输入流和输出流的联系和区别,字符流和字节流的联系和区别
输入流是得到数据,输出流是输出数据。
字符流和字节流是流的一种划分,按处理照流的数据单位进行的划分。
两类都分为输入和输出操作。
在字节流中输出数据主要是使用OutputStream完成,输入使InputStream
在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成
- 节点流和处理流的联系和区别
节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
- 列举常用的字节输入流和字节输出流并说明其特点,至少5对。
FileInputStream 从文件系统中的某个文件中获得输入字节。
ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取
的字节。
FilterInputStream 包含其他一些输入流,它将这些流用作其基本数据
源,它可以直接传输数据或提供一些额外的功能。
ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据
和对象进行反序列化。
StringBufferInputStream 此类允许应用程序创建输入流,在该流中读
取的字节由字符串内容提供。
- 说明缓冲流的优点和原理
不带缓冲的流的工作原理:它读取到一个字节/字符,就向用户指定的路径
写出去,读一个写一个,所以就慢了。
带缓冲的流的工作原理:读取到一
个字节/字符,先不输出,等凑足了缓冲的最大容量后一次性写出去,从而
提高了工作效率
优点:减少对硬盘的读取次数,降低对硬盘的损耗。
- 序列化的定义、实现和注意事项
五、 编码题
1. 实现字符串和字节数组之间的相互转换。必如将字符串“北京尚学堂bjsxt”转换为字节数组,并将字节数组再转换回字符串。
public static void main(String[] args) {
String s="北京尚学堂bjsxt";
System.out.println(s);
//字符串转数组
byte [] by = s.getBytes();
//数组转字符串
String str= new String(by, 0, by.length);
System.out.println(str);
}
2. 实现字节数组和任何基本类型和引用类型执行的相互转换
提示:使用ByteArrayInutStream和ByteArrayOutputStream。
3. 分别使用文件流和缓冲流复制一个长度大于100MB的视频文件,并观察效率的差异。
4. 复制文件夹d:/sxtjava下面所有文件和子文件夹内容到d:/sxtjava2。
提示:涉及单个文件复制、目录的创建、递归的使用 六、 可选题
1. 使用IO包中的类读取D盘上exam.txt文本文件的内容,每次读取一行内容,将每行作为一个输入放入ArrayList的泛型集合中并将集合中的内容使用加强for进行输出显示。
2. 假设从入学开始所有书写的Java类代码都在d:/sxtjava文件夹下,包括多级子文件夹。使用IO流获取从入学开始,到目前为止已经写了多少行Java代码。
提示:其实就是获取d:/sxtjava文件夹及其子文件夹下的所有.java文件,使用readLine()读取其中每一行,每读取一行,行数加1。所有的文件读取完毕,得到总共已经写的Java代码行数。需要结合递归实现。
3. 由控制台按照固定格式输入学生信息,包括学号,姓名,年龄信息,当输入的内容为exit退出;将输入的学生信息分别封装到一个Student对象中,再将每个Student对象加入到一个集合中,要求集合中的元素按照年龄大小正序排序;最后遍历集合,将集合中学生信息写入到记事本,每个学生数据占单独一行。
IO流作业的更多相关文章
- javaee IO流作业02
package Zy; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.Fil ...
- javaee IO流作业
package Zy; import java.io.Serializable; public class Student implements Serializable{ private stati ...
- IO流(一)__File对象和字符流FileWriter FileReader
IO流:IO流用来处理设备之间的数据传输,Java对于流的操作对象都在IO包中将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出 流分为字节流和字符流字符流的由来:其实就是字节流读取文字字节 ...
- IO流的总结(一)
IO流的介绍: 其实在我们现实生活中有很多流,例如:水流,电流,气流 等等都是是流,但在Java中IO流是指对数据的操作的流. 按照流的分类: 1:字节流和字符流 Reader和InputStrea ...
- Java中IO流中的装饰设计模式(BufferReader的原理)
本文粗略的介绍下JavaIO的整体框架,重在解释BufferReader/BufferWriter的演变过程和原理(对应的设计模式) 一.JavaIO的简介 流按操作数据分为两种:字节流与字符流. 流 ...
- JavaSE学习总结(十七)—— IO流
一.IO流概要 1.1.概念 开发中经常要进行输入输出操作,掌握Java中的IO流显得非常必要. 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流, ...
- day21<IO流+&FIle递归>
IO流(字符流FileReader) IO流(字符流FileWriter) IO流(字符流的拷贝) IO流(什么情况下使用字符流) IO流(字符流是否可以拷贝非纯文本的文件) IO流(自定义字符数组的 ...
- JavaSE 学习笔记07丨IO流
Chapter 13. IO流 13.1 File类 java.io.File类是文件(file)和目录(文件夹)(directory)路径名(path)的抽象表示,主要用于文件和目录的创建.查找和删 ...
- Java基础之IO流
很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...
随机推荐
- 一次对路边饮用水RFID供应机的跑路玩法
"如何成为一个合格的硬件白帽子? 答案: 一个有聪明大脑的你 要有归纳类比和善于用GOOGLE的能力(百度?放弃吧) 善于翻阅和查询相关开发文档和强大的跑路能力." WARNING ...
- JavaScript 的 Async\/Await 完胜 Promise 的六
参考:http://www.10tiao.com/html/558/201705/2650964601/1.html Node 现在从版本 7.6 开始就支持 async/await 了. 简介: A ...
- .gitignore总结
git进行管理时,.gitignore是必不可少的,可以指定不需要提交到仓库的资源.最好在git init之后就创建 .gitignore文件,这是个好习惯,常用的配置及说明如下:
- POJ 2560
#include<iostream> #include<algorithm> #include<cmath> #include<iomanip> #de ...
- [LeetCode] 206. Reverse Linked List_Easy tag: Linked List
Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4-> ...
- 前端代码质量保障之代码review
经验丰富的程序员和一般程序员之间的最大区别,不仅体现在解决问题的能力上, 还体现在日常代码的风格上.掌握一门技术可能需要几月,甚至几周就够了. 好的习惯风格养成却需数年. 团队成员之间需要合作,代码需 ...
- windows2016 安装mysql5.7
下载msi安装包,一路下一步. 安装好后,做下简单配置. 默认的my.ini和datadir在C:\ProgramData\MySQL Server 5.7下 更改默认my.ini的方法为修改注册表 ...
- Java模式—静态代理模式
静态代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问,提供“真实对象”的代表,在访问对象时引入一定程度的间接性,这种间接性可以附加多种用途. 代理模式的主要作用是为其他对象 ...
- Javascript图片预加载详解 分类: JavaScript HTML+CSS 2015-05-29 11:01 768人阅读 评论(0) 收藏
预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...
- logstash使用template提前设置好maping同步mysql数据到Elasticsearch5.5.2
上篇blog说到采用logstash-input-jdbc将mysql数据同步到ES(http://www.cnblogs.com/jstarseven/p/7704893.html),但是这里有一个 ...