IO基础
一:IO流整体说明?
用的是装饰模式,装饰模式有四个角色,分别是通用接口、本原、抽象装饰、具体装饰,因为是将本原聚合到了装饰中,所以可以将本原或装饰通过构造子注入到另一个装饰,多个装饰可以随意的组合,形成一个综合的功能对象。
io流分为输入流及输出流,输入流是文件到内存,输出流是内存到文件。
流分为低层流及高层流,在实例化高层流时必须通过构造子将低层流注入到高层流中。输入流通用的方法是read(),read(char[]),read(byte[]),readline。
输出流的通用方法是write(int),write(byte[]),write[char[]],print("string")。
当读取一个文件时,对于以字节/字节数组,字符/字符数组读取的结束条件是!=-1,对于以字符串读取的结束条件是!=null。
对于有缓存的输出时,要想写入到文件必须flush或close。
二:输入字节流的体系结构?
输入字节流的体系结构:
InputStream
FileInputStream FilterInputStream
ObjectInputStream DataInputStream BufferedInputStream
实现代码:
--读一个字节
int temp=fis.read();
while(temp!=-1)
{
System.out.print(temp);
temp=fis.read();
}
--读一批字节
byte[] bytes=new byte[1000];
int result=fis.read(bytes);
while(result!=-1)
{
String temp=new String(bytes,0,result);
result=fis.read(bytes);
}
三:输出的字节流体系结构?
输出的字节流的体系结构:
OutputStream
FileOutputStream FilterOutputStreame
ObjectOutputStream BufferedOutputStream DataOutputStream
PrintStream
实现代码:
int temp;
fis.write(temp);
byte temps[]=new byte[1000];
fos.write(temps);
四:输入的字符流体系结构?
输入的字符流的体系结构:
Reader
FileReader InputStreamReader(将字节流转化字符流)
BufferedReader(有缓存)
实现代码:
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String temp=br.readLine();
while(temp!=null)
{
temp=br.readLine();
}
五:输出的字符流体系结构?
输出的字符流的体系结构:
Writer
FileWriter OutputStreamWriter
BufferedWriter PrintWriter
实现代码:
fw.write(int)
fw.write(char[])
fw.write("string");
六:PrintStream、BufferedWriter、PrintWriter的比较?
PrintStream:属于字节流,即可以打印字节也可以打印数组
写入文件不用close或flush
e.printStackTrace()、System.out.println()都是它的实例。
BufferedWriter、PrintWriter:属于字符流,只可以打印字符或字符串
因为有缓存,要想写入文件必须close或flush