IO

https://blog.csdn.net/wangbaochu/article/details/53484042

分为字节流和字符流

字节流:读取以字节为单位

字符流:读取以字符为单位

字节流

两个抽象类:

InputStream OutputStream

处理流

BufferedInputStream & BufferOutputStream

带缓冲区的输入输出流

构造方法

BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)

DataInputStream & DataOutputStream

因为是字节流无法直接读取字符,比如123,可先写入再读取

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class TestDataBufferStream {
public static void main(String[] args) {
FileInputStream fin = null;
FileOutputStream fout = null;
DataInputStream din = null;
DataOutputStream dout = null;
try {
fin = new FileInputStream("in.txt");
fout = new FileOutputStream("in.txt");
din = new DataInputStream(fin);
dout = new DataOutputStream(fout);
dout.writeInt(123);
System.out.println(din.readInt());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

字符流

抽象基类

Reader Writer

InputStreamReader & OutputStreamWriter

用于解析字节流

InputStreamReader(InputStream in)
InputStreamReader(InputStream in, String charsetName)
InputStreamReader(InputStream in, Charset cs)
InputStreamReader(InputStream in, CharsetDecoder dec)

BufferdReader & BufferedWriter

带缓冲区

import java.io.*;

public interface TestBufferedRW {
public static void main(String[] args) {
FileInputStream fin = null;
BufferedReader bin = null;
try {
fin = new FileInputStream("in1.txt");
bin = new BufferedReader(new InputStreamReader(fin));
System.out.println(bin.readLine());
bin.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

Scanner

构造方法

Scanner(File source)
Scanner(File source, String charsetName)
Scanner(File source, Charset charset)
Scanner(Path source)
Scanner(Path source, String charsetName)
Scanner(Path source, Charset charset)

Scanner(InputStream source)
Scanner(InputStream source, String charsetName)
Scanner(InputStream source, Charset charset)

Scanner(Readable source)
Scanner(String source)
Scanner(ReadableByteChannel source)
Scanner(ReadableByteChannel source, String charsetName)
Scanner(ReadableByteChannel source, Charset charset)

可读取输入流或直接读文件