3.1 部分概念名词
节点流:和数据源“直接”对接的流
FileInputStream ByteArrayInputStreamStringBufferInputStraem PipedInputStream
处理流:反之节点流
FileterInputStreamSequenceInputStream ObjectInputStream
3.2InputStream 的基本方法
intread() throws IOException
intread(byte[] buffer)
void close(){}
4.1
字节流:
FileOutputStream ByteArrayOutputStream PipedOutputStream
处理流:
FileterOutputStream
4.2
void write()
void close()
voidflush() 刷新 close()之前默认flush(){}
5.1
字节流:
CharArrayReaderPipedReader StringReader FileReader--(孙子)
处理流:
BufferedReadInputStream FilterReader--(儿子)
FileInputStream-----> InputStreamReader ---->BufferedReader readLine()
字节流向字符流转化 ---->把双字节组装成字符,避免乱码
字符缓冲流:减少和内存的交互
readLine(){} 从字符缓冲流中读取字符,将\n之前的字符转换成字符串返回-------按行读取
public static void m5() throws Exception {
FileInputStream fis = new FileInputStream("e:\\a\\01.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String str = null;
while ((str=br.readLine())!=null) {
System.out.println(str);
}
}
6.PrintStream
System.out.println()
System 类名
out静态变量(基本型变量/引用型变量?)-----引用型变量 会指向某个对象,
那么该对象的类型是什么?----PrintStream
println() : 非静态方法,那么一定属于某个对象,那么这个对象是谁?
----out这个变量所指向的那个对象的方法
PrintStream-----> OutputStream(内存 -- out决定了默认数据源是命令行窗口)
out变量所指向那个的输出流,默认的数据源是“命令行窗口”
PrintStream 处理流:不能与数据源直接相连
搭建一个节点流 FileOutputStream
不会抛出IOException异常 不用catch
println()调用之后,能够自动刷新flush()
import java.io.*;
public class Teat {
public static void main(String[] args) {
}
public static void m1() {
try {
File file = new File("e:\\a\\02.txt");
PrintStream ps = new PrintStream(new FileOutputStream(file));
ps.println("hello java!");
ps.flush();
} catch (FileNotFoundException) {
e.printStackTrace();
} finally {
}
}
}
7.PrintWriter
PrintWriter extendsWrite
PrintWriter 处理流-----> 节点流 (字节/字符)
不会抛出IOException异常
println()调用之后,能够自动刷新flush
publicPrintWriter(OutputStream out)
内存----->PrintWriter/PrintStream--------> OutputStream/FileOutputStream----->文件/数据源
和数据源直接对接的“节点流”是不变的,变化的是节点流外面包裹的“处理流”