0801作业

---恢复内容开始---


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.输入流和输出流的联系和区别,字符流和字节流的联系和区别
流根据流向分为输入流和输出流,输入流用来输入数据到java程序,输出流用来从java程序中输出数据 二者是上下游的关系
流根据操作类型又分为字符流和字节流.字节流可以操作任何数据,而字符流只能操作纯字符数据
3.列举常用的字节输入流和字节输出流并说明其特点,至少5对。
FileInputStream BufferedInputStream AutoInputStream ObjectInputStream FilterInputStream
FileOutputStream BufferedOutputStream AutoOutputStream ObjectOutputStream FilterOutputStream

4.说明缓冲流的优点和原理
缓冲流的优点是:数据传输速度快
原理:一次传入一大组数据,存入缓存区,等程序需要再传输时,不用再找文件,因此快
三、编码题
1.实现字符串和字节数组之间的相互转换。必如将字符串“北京最课程bjzkc”转换为字节数组,并将字节数组再转换回字符串。

package com.zuikc.chario;
public class Test1 {
    public static void main(String[] args) throws IOException {
        String str = "北京最课程bjzkc";
        byte[] arr = str.getBytes();
        String str1 = new String(arr);
        
        System.out.println(arr);
        System.out.println(str1);
    }

}

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

package com.zuikc.chario;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Tested {

    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("Video_2018-05-25_165621.wmv");
        FileOutputStream fos = new FileOutputStream("copy.wmv");
        
        int b;
        while((b= fis.read())!=-1) {
            fos.write(b);
        }
        fis.close();
        fos.close();
    }

}
package com.zuikc.chario;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;

public class Tested1 {

    public static void main(String[] args) {
        BufferedInputStream bis = new BufferedInputStream("Video_2018-05-25_165621.wmv");
        BufferedOutputStream bos = new BufferedOutputStream("copy.wmv");
        
        int b;
        while((b = bis.read())!= -1) {
            bos.write(b);
        }
        bis.close();
        bos.close();
    }
}

四、可选题
1.使用IO包中的类读取D盘上exam.txt文本文件的内容,每次读取一行内容,将每行作为一个输入放入ArrayList的泛型集合中并将集合中的内容使用加强for进行输出显示。

package com.zuikc.chario;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class Demo4_Test1 {
/*1.读取文本文件 用FileReader 而且每次读取一行
 * 2.将每行放入list集合中,使用for循环输出
 */
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("D:\exam.txt"));
        
        ArrayList<String> list = new ArrayList<>();
        String line;
        while((line = br.readLine())!= null) {
            list.add(line);        
        }
        br.close();
        for (String string : list) {
            System.out.println(string);
        }
    }

}


2.由控制台按照固定格式输入学生信息,包括学号,姓名,年龄信息,当输入的内容为exit退出;将输入的学生信息分别封装到一个Student对象中,再将每个Student对象加入到一个集合中,要求集合中的元素按照年龄大小正序排序;最后遍历集合,将集合中学生信息写入到记事本,每个学生数据占单独一行。

---恢复内容结束---

原文地址:https://www.cnblogs.com/zhangzheng1989/p/9404516.html