---恢复内容开始---
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对象加入到一个集合中,要求集合中的元素按照年龄大小正序排序;最后遍历集合,将集合中学生信息写入到记事本,每个学生数据占单独一行。
---恢复内容结束---