• IO流作业


    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 五、    编码题
         2 1.    实现字符串和字节数组之间的相互转换。必如将字符串“北京尚学堂bjsxt”转换为字节数组,并将字节数组再转换回字符串。
         3 public static void main(String[] args) {
         4         String s="北京尚学堂bjsxt";
         5             System.out.println(s);
         6             //字符串转数组
         7             byte [] by = s.getBytes();    
         8             //数组转字符串
         9             String str= new String(by, 0, by.length);
        10             System.out.println(str);        
        11     }
        12 2.    实现字节数组和任何基本类型和引用类型执行的相互转换
        13 提示:使用ByteArrayInutStream和ByteArrayOutputStream。
        14 3.    分别使用文件流和缓冲流复制一个长度大于100MB的视频文件,并观察效率的差异。
        15 4.    复制文件夹d:/sxtjava下面所有文件和子文件夹内容到d:/sxtjava2。
        16 提示:涉及单个文件复制、目录的创建、递归的使用
        17 
        18 六、    可选题
        19 1.    使用IO包中的类读取D盘上exam.txt文本文件的内容,每次读取一行内容,将每行作为一个输入放入ArrayList的泛型集合中并将集合中的内容使用加强for进行输出显示。
        20 2.    假设从入学开始所有书写的Java类代码都在d:/sxtjava文件夹下,包括多级子文件夹。使用IO流获取从入学开始,到目前为止已经写了多少行Java代码。
        21 提示:其实就是获取d:/sxtjava文件夹及其子文件夹下的所有.java文件,使用readLine()读取其中每一行,每读取一行,行数加1。所有的文件读取完毕,得到总共已经写的Java代码行数。需要结合递归实现。
        22 3.    由控制台按照固定格式输入学生信息,包括学号,姓名,年龄信息,当输入的内容为exit退出;将输入的学生信息分别封装到一个Student对象中,再将每个Student对象加入到一个集合中,要求集合中的元素按照年龄大小正序排序;最后遍历集合,将集合中学生信息写入到记事本,每个学生数据占单独一行。
  • 相关阅读:
    YApi 部署记录
    《Go语言网络编程》第一章:体系
    Golang知识图谱
    Docker学习笔记之二:制作镜像并PUSH
    下载m3u8视频
    杂知识
    遗传算法
    评分卡
    小数据玩转Pyspark(2)
    从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史(转载)
  • 原文地址:https://www.cnblogs.com/topshark/p/10251979.html
Copyright © 2020-2023  润新知