• IO流练习


    一、    填空题

    1. Java IO流按操作类型分为     字节流         和 ___字符流________ 。
    2. 输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数据,   read          方法给程序提供了一个从输入流中读取数据的基本方法。

            3. read方法从输入流中顺序读取源中的单个字节数据,该方法返回字节值(0-255之间的一个整数),如果到达源的末尾,该方法返回    -1     

       4.Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准错误输出System.err和标准输出 ______System.out______________。

       5.Java IO体系中,_____InputStream_______________是字节输入流,不仅提供了存取所有Java基础类型数据(如:int,double 等)和String的方法,也提供了提供存取对象的方法。

       6. Java IO体系中,_____OutputStream_______________是字节输出流,提供了可以存取所有Java基础类型数据(如:int,double 等)和String的方法,但没有提供存取对象的方法。

     

    二、    简答题

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

      输入流是得到数据,输出流是输出数据。

      字符流和字节流是流的一种划分,按处理照流的数据单位进行的划分。

      两类都分为输入和输出操作。

      在字节流中输出数据主要是使用OutputStream完成,输入使InputStream

      在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成

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

      FileInputStream    FileOutputStream

      从文件系统中的某个文件中获得输入字节

      ObjectInputStream   ObjectOutputStream

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

      FilterInputStream   FilterOutputStream

      包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。

      BufferedInputStream   BufferedOutputStream

      ByteArrayInputStream   ByteArrayOutputStream

      包含一个内部缓冲区,该缓冲区包含从流中读取的字节。

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

      原理:缓冲流在进行读写文件时会提供一个缓冲区数组(内存中),在读文件时可根据需要从包含的输入流填充该内部缓冲区,一次填充多个字节或字符。在写文件时输出缓存流调用write方法将数据写在缓冲区中,等到缓冲区满了之后才将数据发送到目的地(文件或磁盘).所以写入缓冲区的数据太小时,就经常会写不到指定文件中,所以最好在调用write方法后再调用flush方法,强制的将缓冲区中的数据发送到流中,而不必等到缓冲区满.

      优点:相对于基本流字节或者字符流是直接对目的地进行读写的,相当于读一个写一个效率比较低。而使用缓冲流避免了多次访问文件,提高了读写速度。

    三、    编码题

    1.实现字符串和字节数组之间的相互转换。必如将字符串“北京最课程bjzkc”转换为字节数组,并将字节数组再转换回字符串。

    package com.zuikc;
    
    import java.io.IOException;
    
    public class TestConvert {
        public static void main(String[] args) throws IOException {
            // 准备一个字符串
            String contents = "北京最课程bjzkc";
            // String---byte []
            byte[] buf = contents.getBytes();
            // byte[]----String
            String contents2 = new String(buf, 0, buf.length);
            System.out.println(contents2);
        }
    }

    2.分别使用文件流和缓冲流复制一个长度大于100MB的视频文件,并观察效率的差异。

    package com.zuikc;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    /** 
    * 分别使用文件流和缓冲流复制一个长度大于100MB的视频文件,并观察效率的差异 
    */
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class Test {
    
        public static void main(String[] args) throws IOException {
            // 缓冲流
            demo1();
    
            // 文件流
            // demo2();
        }
    
        private static void demo1() throws FileNotFoundException, IOException {
            File f = new File("E:\aaa\1.wmv");
            FileInputStream fis = new FileInputStream(f);
            File nf = new File("E:\bbb\2.wmv");
            FileOutputStream fos = new FileOutputStream(nf);
            int len = 0;
            byte b[] = new byte[2048];
            while ((len = fis.read(b)) != -1) {
                fos.write(b);
            }
            fos.flush();
            fos.close();
            fis.close();
        }
    
        private static void demo2() throws FileNotFoundException, IOException {
            FileReader fr = new FileReader("E:\aaa\1.wmv");
            BufferedReader br = new BufferedReader(fr);
            FileWriter fw = new FileWriter("E:\bbb\2.wmv");
            BufferedWriter bw = new BufferedWriter(fw);
            String len = null;
            while ((len = br.readLine()) != null) {
                bw.write(len);
            }
            bw.flush();
            bw.close();
            br.close();
        }
    
    }

    缓冲流比文件流快。

  • 相关阅读:
    Angular2.0 基础:双向数据绑定 [(ngModel)]
    Angular2.0 基础: 环境搭建
    将已编写的静态的网页发布到github上
    kndo grid:通过checkbox 实现多选和全选
    Kendo Grid:将Edit button 移到grid view 得顶部
    溢出文本显示省略号处理
    空MVC项目找不到System.Web.Optimization的处理办法
    cannot find module 'xml2js'
    jquery mobile RedirectToAction url地址不更新
    soapUI 时间格式
  • 原文地址:https://www.cnblogs.com/songzongyuan-java/p/9403237.html
Copyright © 2020-2023  润新知