1、io流所用的模式
装饰模式decorator
2、装饰模式的特点:
有四个角色分别是通过用接口、本原、装饰、具体装饰,
可以将装饰或本原注入到另一个装饰中,
让相关装饰功能进行累积,得到一综合的新功能。
3、io的通用特点?
按方向分为输入流、输出流,输入流是文件到内存,
输入流的通用方法是read(byte byte),read(char char),read(byte[] bytes)
,read(char[] chars),readLine()
输出流是内存到文件,输出流的通用方法是print或write
对于输出的高层缓存(BuffererWriter、BufferOuputStream、PrintWriter)流只有flush()或close()后才将信息写入到文件中。
从文件读取内容,如果读的是字节/字符或字节数组/字符数组,循环结束的条件-1
如果通过BufferReader读取字符串,结束条件是!=null
要想得到高层流必须通过构造子将低层流注入到高层流中。
要是从键盘读取信息必须判断最后输入的字符
4、io流的分类:
存储方式:
字节流:传送是字节,只能通过专用工具才能打开。一般用于二进制文件如jpg、rm、mp3、xsl、db。
字符流:传送的是字符 ,一般用于文本,通过文本编辑器可以打开。
处理层次:
分为高层流及低层流,在实例化高层流时通过构造子将低层流注入高层流中
产生高层流。
5、字节流的体系:
字节流
体系结构
InputStream
FileInputStream
FilterInputStream
ObjectInputStream(可以进行对象序列化) BufferedInputStream(具有缓存) DataInputSteam
字节流的转化
FileInputStream fis=new FileInputStream("c.txt");
DataInputStream dis=new DataInputStream(fis);可以直接得到一个基本的数据类型,可直接读取int double float
ObjectInputStream:可以将一个文件转化为一个对象,叫返序列化
BufferedInputStream bis=new BufferedInputStream(fis);//在应用与硬盘之间提供缓存,
当超过缓存的容量时才与应用层交换,减少了交互次数,提高了运行速度。
处理
1、读取一个字节
int temp=bis.read();
while(temp!=-1)
{
temp=bis.read();
}
2、读取一批字节
byte[] bytes=new byte[1024*10];
int result=bis.read(bytes);
while(result!=-1)
{
result=bis.read(bytes);
}
输出字节流
体系结构
OutputStream
FileOutputStream
FilterOutputStream
ObjectOutputStream BufferedOutputStream(具有缓存) DataOutputSteam PrintStream
字节流的转化
FileOutputStream fis=new FileOutputStream("c.txt");
DataOutputStream dis=new DataOutputStream(fis);可以写一个基本的数据类型
ObjectOutputStream:将一个对象写到文件中
BufferedOutputStream bos=new BufferedOutputStream(fis);//在应用与硬盘之间提供缓存,
当超过缓存的容量时才与应用层交换,减少了交互次数,提高了运行速度。
PrintStream:属于字节流,可以打印字节,也可以打印字符,
e.printStackTrace()及System.out都是其实例。
处理
1、写入一个字节
int temp=System.in.read();
bis.write(temp);
2、读取一批字节
byte[] bytes=new byte[1024];
int result=System.in.read(bytes);
bos.write(bytes,0,result);
序列化:将对象写入到文件中,通过读取文件可以将文件内容转化为对象。
字符流
输入字符结构
Reader
FileReader
InputStreamReader(将字节流转化为字符流)
BufferedReader
字节流的转化
FileInputStream-->InputStreamReader-->BufferedReader
System.in-->InputStreamReader-->BufferedReader
FileReader-->BuffferedReader
处理
1、读取一个字节
int temp=bis.read();
while(temp!=-1)
{
temp=bis.read();
}
2、读取一批字节
char[] chars=new char[1024*10];
int result=bis.read(chars);
while(result!=-1)
{
result=bis.read(chars);
}
3、读取一行信息
BufferedReader br=new BufferdReader(new FileReader("c:/a.txt"));
String temp=br.readLine();
while(temp!=null)
{
temp=br.readLine();
}
输出字符流
体系结构
Writer
FileWriter
OutputStreamWriter(将输出的字节流转化字符流)
BufferedPrinter(具有缓存) PrintWriter
字节流的转化
FileWriter-->BufferedPrinter
FileWriter-->PrintWriter
FileWriter-->BufferedPrinter-->PrintWriter
System.out-->OutputStreamWriter-->PrintWriter-->BufferedWriter
若要想将数据写入到文件,BufferedWriter及PrintWriter必须close或flush
处理
1、写入一个字节
int temp=System.in.read();
bis.write(temp);
2、写入一批字节
char[] charss=new char[1024];
int result=System.in.read(chars);
bos.write(chars,0,result);
3、写出一个字符串
BufferedWriter bw=new BufferedWriter(new FileWriter("c:/a.txt"));
bw.write("aaaaaaaaaaaaaa");
序列化:将对象写入到文件中,通过读取文件可以将文件内容转化为对象。
PrintWriter、BufferedWriter、PrintStream的区别
PrintWriter、BufferedWriter:属于字符流,若要保存必须close或flush
PrintStream:属于字节流,可以打印字节也可以打印字符,e.printStackTrace及
System.out.println()都是其实例,没有缓存不用关闭就可以保存。
File:流是对文件内容的处理,File是文件的整体处理,主要可以创建、删除、判断是否存在、
是文件还是文件夹
1、用递归遍历一个文件夹下的所有目录。
2、什么是递归:
a、自己调用自己
2、必须有出口
io流
最新推荐文章于 2023-06-11 20:05:01 发布