IO https://blog.csdn.net/wangbaochu/article/details/53484042
分为字节流和字符流
字节流:读取以字节为单位
字符流:读取以字符为单位
字节流 两个抽象类:
InputStream
OutputStream
处理流
带缓冲区的输入输出流
构造方法
BufferedInputStream(InputStream in) BufferedInputStream(InputStream in, int size)
因为是字节流无法直接读取字符,比如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(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)
可读取输入流或直接读文件