IO流作业

一、    填空题

  1. Java IO流可以分为    字节流          和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行。
  2. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数据,  read

方法给程序提供了一个从输入流中读取数据的基本方法。

  1. read方法从输入流中顺序读取源中的单个字节数据,该方法返回字节值(0-255之间的一个整数),如果到达源的末尾,该方法返回   -1       。
  2. Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准输出System.out和标准错误输出_____System.err_______________。
  3. Java IO体系中,____ObjectInputStream________________是字节输入流,不仅提供了存取所有Java基础类型数据(如:int,double 等)和String的方法,也提供了提供存取对象的方法。
  4. Java IO体系中, DataOutputStream __________________是字节输出流,提供了可以存取所有Java基础类型数据(如:int,double 等)和String的方法,但没有提供存取对象的方法。
  5. ___序列化 _________是指将Java对象转换成字节序列,从而可以保存到磁盘上,也可以在网络上传输,使得不同的计算机可以共享对象。

二、    选择题

 

1.

使用Java IO流实现对文本文件的读写过程中,需要处理下列(   B )异常。(选择一项)

A

ClassNotFoundException

B.

IOException

C.

SQLException

D.

RemoteException

 

2.

JavaIO操作中,(  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.

代理模式

三、    判断题

  1. 假设文件”a.txt”的长度为100字节,那么当正常运行语句”OutputStream f=new FileOutputStream(new File(“a.txt”));”之后,文件”a.txt”的长度变为0字节。( T   )
  2. ByteArrayInutStream和ByteArrayOutputStream对内存中的字节数组进行读写操作,属于字节流,属于处理流而不是节点流。 (   F )
  3. 实现Serializable接口的可以被序列化和反序列化。该接口中没有定义抽象方法,也没有定义常量。(   T )
  4. 序列化是指将字节序列转换成Java对象,只有实现了Serializable接口的类的对象才可以被序列化。(    F)

四、    简答题

  1. 输入流和输出流的联系和区别,字符流和字节流的联系和区别

    输入流是得到数据,输出流是输出数据。
    字符流和字节流是流的一种划分,按处理照流的数据单位进行的划分。
    两类都分为输入和输出操作。
    在字节流中输出数据主要是使用OutputStream完成,输入使InputStream
    在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成

  1. 节点流和处理流的联系和区别

    节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader
      处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。

  1. 列举常用的字节输入流和字节输出流并说明其特点,至少5对。

    FileInputStream  从文件系统中的某个文件中获得输入字节。
    ByteArrayInputStream  包含一个内部缓冲区,该缓冲区包含从流中读取
的字节。
    FilterInputStream  包含其他一些输入流,它将这些流用作其基本数据
    源,它可以直接传输数据或提供一些额外的功能。
    ObjectInputStream  对以前使用 ObjectOutputStream 写入的基本数据
和对象进行反序列化。 
StringBufferInputStream  此类允许应用程序创建输入流,在该流中读
取的字节由字符串内容提供。

  1. 说明缓冲流的优点和原理

    不带缓冲的流的工作原理:它读取到一个字节/字符,就向用户指定的路径
写出去,读一个写一个,所以就慢了。

    带缓冲的流的工作原理:读取到一
个字节/字符,先不输出,等凑足了缓冲的最大容量后一次性写出去,从而
    提高了工作效率
    优点:减少对硬盘的读取次数,降低对硬盘的损耗。

    1. 序列化的定义、实现和注意事项

       五、    编码题
      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流作业的更多相关文章

  1. javaee IO流作业02

    package Zy; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.Fil ...

  2. javaee IO流作业

    package Zy; import java.io.Serializable; public class Student implements Serializable{ private stati ...

  3. IO流(一)__File对象和字符流FileWriter FileReader

    IO流:IO流用来处理设备之间的数据传输,Java对于流的操作对象都在IO包中将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出 流分为字节流和字符流字符流的由来:其实就是字节流读取文字字节 ...

  4. IO流的总结(一)

    IO流的介绍: 其实在我们现实生活中有很多流,例如:水流,电流,气流  等等都是是流,但在Java中IO流是指对数据的操作的流. 按照流的分类: 1:字节流和字符流 Reader和InputStrea ...

  5. Java中IO流中的装饰设计模式(BufferReader的原理)

    本文粗略的介绍下JavaIO的整体框架,重在解释BufferReader/BufferWriter的演变过程和原理(对应的设计模式) 一.JavaIO的简介 流按操作数据分为两种:字节流与字符流. 流 ...

  6. JavaSE学习总结(十七)—— IO流

    一.IO流概要 1.1.概念 开发中经常要进行输入输出操作,掌握Java中的IO流显得非常必要. 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流, ...

  7. day21<IO流+&FIle递归>

    IO流(字符流FileReader) IO流(字符流FileWriter) IO流(字符流的拷贝) IO流(什么情况下使用字符流) IO流(字符流是否可以拷贝非纯文本的文件) IO流(自定义字符数组的 ...

  8. JavaSE 学习笔记07丨IO流

    Chapter 13. IO流 13.1 File类 java.io.File类是文件(file)和目录(文件夹)(directory)路径名(path)的抽象表示,主要用于文件和目录的创建.查找和删 ...

  9. Java基础之IO流

    很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...

随机推荐

  1. 分布式管理GIT命令总结(转载)

    GIT是个了不起但却复杂的源代码管理系统.它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作.让我们诚实一记吧:Git是复杂的,我们不要装作它不是.但我仍然会试图教会你用(我的)基本 ...

  2. JS脚本实现CSDN免登陆免关闭广告插件自动展开“阅读更多”内容

    最近在CSDN查资料,总是弹出以下弹窗,然后就自动跳转到登录页面,蛋疼! 于是重新捣腾了一下,修改了原来的脚本,最新的脚本代码如下: 温馨提示:在打开CSDN页面后立刻执行以下脚本即可免登陆免关闭广告 ...

  3. [工具]Cobalt Strike 3.13 TeamServer for Windows

    Cobalt Strike 3.13 TeamServer for Windows 0x001 环境 CS 3.12 或 3.13 Kali或Win最好安装jdk1.8.5或之后版本 设置环境变量,如 ...

  4. 课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)—— 2、编程作业常见问题与答案(Programming Assignment FAQ)

    Please note that when you are working on the programming exercise you will find comments that say &q ...

  5. Azure Redis 缓存使用注意事项与排查问题文档整理

    StackExchange.Redis 使用名为 synctimeout 的配置设置进行同步操作,该设置的默认值为 1000 毫秒. 如果同步调用未在规定时间内完成,StackExchange.Red ...

  6. CentOS下使用crontab命令来定时执行任务

    原文地址:http://www.centoscn.com/CentOS/help/2015/0424/5261.html crontab命令 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说, ...

  7. 公共技术点( View 事件传递)

    转载地址:http://p.codekk.com/blogs/detail/54cfab086c4761e5001b253e 本文为 Android 开源项目源码解析 公共技术点中的 View 事件传 ...

  8. PHP多进程系列笔记(三)

    本节讲解几个多进程的实例. 多进程实例 Master-Worker结构 下面例子实现了简单的多进程管理: 支持设置最大子进程数 Master-Worker结构:Worker挂掉,Master进程会重新 ...

  9. DNF NPK包名对照一览表

    文章转载自:http://bbs.exrpg.com/thread-107917-1-1.html ┌ sprite.NPK                                      ...

  10. 面试:C++输入数据

    最近在做笔试题,相比与leetcode,笔试题都是要自己写输入输出的,每次在这里都浪费了不少时间,这篇文章总结了一下在C++中怎么向数组中输入数据. 1. 先输入数组大小,然后输入数据数据,中间以空格 ...