• 0801作业


    IO流作业

    一、 填空题

    1. Java IO按操作类型分为   字节流  和 ___字符流________
    2. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数据,    FileInputStream         

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

    1. read方法从输入流中顺序读取源中的单个字节数据,该方法返回字节值(0-255之间的一个整数),如果到达源的末尾,该方法返回     -1     
    2. Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准错误输出System.err和标准输出 __System.out__________________
    3. Java IO体系中,___ObjectInputStream_________________是字节输入流,不仅提供了存取所有Java基础类型数据(如:intdouble 等)和String的方法,也提供了提供存取对象的方法。
    4. Java IO体系中,______DataOutputStream____是字节输出流,提供了可以存取所有Java基础类型数据(如:intdouble 等)和String的方法,但没有提供存取对象的方法。

     

    二、 简答题

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

    流就像管道一样,在程序和文件之间,输入输出的方向是针对程序而言,向程序中读入东西,就是输入流,从程序中向外读东西,就是输出流。输入流是得到数据,输出流是输出数据。

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

     

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

    1.ByteArrayInputStream包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪read方法要提供的下一个字节。

    2.FilterInputStream包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。FilterInputStream类本身只是简单地重写那些将所有请求传递给所包含输入流的 InputStream的所有方法。FilterInputStream 的子类可进一步重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。

    3.ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。

    4.ObjectOutputStreamObjectInputStream分别与FileOutputStreamFileInputStream一起使用时,可以为应用程序提供对对象图形的持久存储

    5.ObjectInputStream用于恢复那些以前序列化的对象。其他用途包括使用套接字流在主机之间传递对象,或者用于编组和解组远程通信系统中的实参和形参。

    1. 说明缓冲流的优点和原理
    • 不带缓冲的流的工作原理:它读取到一个字节/字符,就向用户指定的路径写出去,读一个写一个,所以就慢了。
    • 带缓冲的流的工作原理:读取到一个字节/字符,先不输出,等凑足了缓冲的最大容量后一次性写出去,从而提高了工作效率
    • 优点:减少对硬盘的读取次数,降低对硬盘的损耗。

     

    三、 编码题

    1. 实现字符串和字节数组之间的相互转换。必如将字符串“北京最课程bjzkc”转换为字节数组,并将字节数组再转换回字符串。
    package com.wty.test;
    
    //1.实现字符串和字节数组之间的相互转换。必如将字符串“北京最课程bjzkc”转换为字节数组,并将字节数组再转换回字符串。
    
    public class test3 {
    
        public static void main(String[] args){
    
        String str = "北京最课程bjzkc";
    
        System.out.println(str);
    
        //String-->byte
    
        byte[] bys = str.getBytes();
    
        //byte-->String
    
        String str1 = new String(bys, 0, by.length);
    
        System.out.println(str1);
    
        }
    
    }
    1. 分别使用文件流和缓冲流复制一个长度大于100MB的视频文件,并观察效率的差异。
     package com.wty.iostream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;

    public class Demo4_ArrayCopy { public static void main(String[] args) throws IOException {
        FileInputStream fis
    = new FileInputStream("d:1.mp4");
        FileOutputStream fos
    = new FileOutputStream("d:Copy.mp4");

          int len;
          byte[] arr = new byte[1024*8];

          while((len = fis.read(arr)) != -1){
            fos.write(arr,
    0, len);
            }
            fis.close();
            fos.close();
      }
    }
    package com.wty.iostream;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Demo5_BufferCopy {
    
        public static void main(String[] args) throws IOException {
            FileInputStream fis = new FileInputStream("d:1.mp4");
            BufferedInputStream bis = new BufferedInputStream(fis);
            FileOutputStream fos = new FileOutputStream("d:Copy.mp4");
            BufferedOutputStream bos = new BufferedOutputStream(fos);
            
            int a;
            while ((a = bis.read()) != -1) {
                bos.write(a);
            }
            
            bis.close();
            bos.close();
        }
    
    }

    四、 可选题

    1. 使用IO包中的类读取D盘上exam.txt文本文件的内容,每次读取一行内容,将每行作为一个输入放入ArrayList的泛型集合中并将集合中的内容使用加强for进行输出显示。
    2. 由控制台按照固定格式输入学生信息,包括学号,姓名,年龄信息,当输入的内容为exit退出;将输入的学生信息分别封装到一个Student对象中,再将每个Student对象加入到一个集合中,要求集合中的元素按照年龄大小正序排序;最后遍历集合,将集合中学生信息写入到记事本,每个学生数据占单独一行。
  • 相关阅读:
    javascript回调函数笔记
    JavaScript回调函数的实现
    深入理解JS执行细节(写的很精辟)
    javascript中return function与return function()的区别
    windows下dubbo-admin2.6.x之后版本的安装
    shiro经典通俗易懂javase例子
    字符串转数字练习--String to Integer (atoi)
    字符串按照Z旋转90度然后上下翻转的字形按行输出字符串--ZigZag Conversion
    SQL ----post漏洞测试注入
    nginx笔记----解决windows80端口被iis占用
  • 原文地址:https://www.cnblogs.com/wty1994/p/9403977.html
Copyright © 2020-2023  润新知