1、打印流:就是输出流,可以直接操作输入流和文件
printStream:字节流
特点:1、构造函数接收File对象、字符路径、字符输出流
2、该对象具有特有的方法,print println可以打印任何数据类型的数据。
3、特有的printf方法可以保持任意类型的数据表现形式的原样性,将数据输出到目的地,对于OutputStream父类中的write是将数据的最低字节写出去、
API:为其他的输出流添加了功能,使他们能够方法便的打印各种数据值表示形式,它还提供了其他两项功能。与其他输出流不同,printStream永远不会抛出IOException异常,而是异常情况仅设置可通过checkError方法测试的内部标识,另外,为了自动刷新,可以创建一个printStream,这以为着可在写入byte数组之后自动调用flush方法,可吊桶其中一个println方法,或者写入一个换行符或者字节(\r\n),printStream打印的所有字符都使用平台默认字符编码转换为字节,在需要写入字符而不是写入字节的情况下,应该使用printWriter类。
注意:能写一个整数、还能打印一个整数为什么?
Write(97);a
0000-0000 0000-0000 0000-0000 0110-0001 97
将最后一个八位写入到硬盘,也就是最后一个字节0110-0001记事本把这个二进制解析了,然后查表返回a;
Print(97);你看到是什么?目的里面就是什么?97
原理:先把97--->"97"--->"97".getBytes()(2个字节)
printWriter字符流:使用频繁,因为需要将数据从服务端打印到客户端
特点:
1、当操作的数据是字符时,可以选择printWriter比printStream更方便。
2、它的构造函数可以接收File对象,字符串路径、字节输出流、字符流。
3、可以在构造函数中、如果参数是输出流,那么可以通过指定另一个参数true来完成自动刷新,该方法只对println()有效。
实现代码:
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
PrintWriter out=new PrintWriter(new BufferedWriter( new FileWriter("out.txt")),true);
//加上true它能自动刷新,但是只能对println有效,需要高效,而且具备自动刷新的功能的只有字符流和字节流,所以需要封装为字符输出流。
String line=null;
while((line=buf,.readLine())!=null){
If("over".equals(line))
break;
}
out.println(line);
out.close();
//什么时候用?当需要保证数据表现的原样性时,就可以使用打印流的打印方法来完成,保证(表现形式)原样性的原理:其实就是将数据变成字符串,再进行写入操作。
2、序列流:按照一定顺序排列。
SequenceInputStream:对多个流进行合并。作用:将多个字节读取流合并成一个读取流。
特点:
1、将多个自己流合并成一个读取流,将多个源合并成一个源,操作起来方便。
2、需要的枚举接口可以通过collections.enumeration(collection);
练习:切割照片
注意:切割有两种方式:1、按照大小,2、按照文件个数。
3、操作