1、字节流:音频文件、图片、歌曲 2、字符流:文本
注意:在程序中一个字符等于两个字节
字节流与字符流的区别:
字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的
字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容
字节流:
InputStrean 字节输入流 从文件到程序
OutputStream 字节输出流 从程序到文件
方法
描述
Public void close()
关闭输入流
Public abstract int read()
以数字的方式读取内容
Public int read(byte [] b)
将内容读取到byte数组中,同时返回读入的个数
OutputStream的主要方法
方法
描述
Public void close()
关闭输出流
Public abstract int write(int b)
在数据流中写入一个字节
Public void write(byte[] b)
在数据流中写入一个byte数组
Public void write(byte[] b,int off,int len)
在数据流中写入一个指定范围byte数组
Public void flush()
刷新缓冲区
FileInputStream是InputStrean的子类,主要用于从文件读取数据;
FileOuputStream是OutputStream的子类,主要用于向文件中写入数据。
BufferedInputStrean和BufferedOutputStream为InputStrean和OutputStream增加了内存缓冲区,根本目的是允许java的IO流一次操作多个字节,从而提高系统的性能。
BufferedInputStream(InputStrean in) //按照32个字节缓冲区的缓冲流
BufferedInputStream(InputStrean in,int size)//指定大小的缓冲流
BufferedOutputStream(OutputStream in) //按照32个字节缓冲区的缓冲流
BufferedOutputStream(OutputStream in,int size)//指定大小的缓冲流
BufferedOutputStream 中的flush方法可以强制输出缓冲区的数据
对象序列化和反序列化;
把Java对象转换成字节序列的过程成为对象序列化
把字节序列恢复到java对象的过程叫做对象的发序列化
序列化类的对象要求实现java.io.Serializable;
Public ObjectInputSrteam(inputStream in)
构造方法
构造输入对象
Final object readObject()
方法
从指定位置读取对象
Public ObjectOutStream
(inputStream in)
构造方法
构造输出对象
Final void writeObject()
方法
输出对象的指定位置
//对象序列化:对象转换成字节
File f=new File(“d:”+Fiel.separator+”stuInfo.txt”);
OutputStream outStream=new FileOutputStream(f);
ObjectOutputStream os=new ObjectOutputStream(outStream);
Os.writeObject(new Student(“tom”,20));
outStream.close();
os.close();
//对象反序列化:自己转换成对象
File f=new File(“d:”+Fiel.separator+”stuInfo.txt”);
InputStream inStream=new FileInputStream(f);
ObjectInputStream os=new ObjectInputStream(in);
Object object=in。readObject();
Student stu=(Student)object;
System.out.print(“姓名”+stu.getName());
System.out.print(“姓名”+stu.getAgee());
inStream.close();
in.close();
字符流Reader和Writer 抽象类
Reader
方法
描述
Public abstract void close()
关闭输入流
Public int read()
读取单个字符
Public int read(char[] c)
将内容读取到字符流数组中,并返回读取的长度
writer
方法
描述
Public abstract void close()
关闭输出流
Public int writer(String str)
输出字符串到流中
Public int writer(char[] c)
输出字符数组到流中
Public abstarct void flush()
强制清空缓存
注意:在程序中一个字符等于两个字节
字节流与字符流的区别:
字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的
字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容
字节流:
InputStrean 字节输入流 从文件到程序
OutputStream 字节输出流 从程序到文件
方法
描述
Public void close()
关闭输入流
Public abstract int read()
以数字的方式读取内容
Public int read(byte [] b)
将内容读取到byte数组中,同时返回读入的个数
OutputStream的主要方法
方法
描述
Public void close()
关闭输出流
Public abstract int write(int b)
在数据流中写入一个字节
Public void write(byte[] b)
在数据流中写入一个byte数组
Public void write(byte[] b,int off,int len)
在数据流中写入一个指定范围byte数组
Public void flush()
刷新缓冲区
FileInputStream是InputStrean的子类,主要用于从文件读取数据;
FileOuputStream是OutputStream的子类,主要用于向文件中写入数据。
BufferedInputStrean和BufferedOutputStream为InputStrean和OutputStream增加了内存缓冲区,根本目的是允许java的IO流一次操作多个字节,从而提高系统的性能。
BufferedInputStream(InputStrean in) //按照32个字节缓冲区的缓冲流
BufferedInputStream(InputStrean in,int size)//指定大小的缓冲流
BufferedOutputStream(OutputStream in) //按照32个字节缓冲区的缓冲流
BufferedOutputStream(OutputStream in,int size)//指定大小的缓冲流
BufferedOutputStream 中的flush方法可以强制输出缓冲区的数据
对象序列化和反序列化;
把Java对象转换成字节序列的过程成为对象序列化
把字节序列恢复到java对象的过程叫做对象的发序列化
序列化类的对象要求实现java.io.Serializable;
Public ObjectInputSrteam(inputStream in)
构造方法
构造输入对象
Final object readObject()
方法
从指定位置读取对象
Public ObjectOutStream
(inputStream in)
构造方法
构造输出对象
Final void writeObject()
方法
输出对象的指定位置
//对象序列化:对象转换成字节
File f=new File(“d:”+Fiel.separator+”stuInfo.txt”);
OutputStream outStream=new FileOutputStream(f);
ObjectOutputStream os=new ObjectOutputStream(outStream);
Os.writeObject(new Student(“tom”,20));
outStream.close();
os.close();
//对象反序列化:自己转换成对象
File f=new File(“d:”+Fiel.separator+”stuInfo.txt”);
InputStream inStream=new FileInputStream(f);
ObjectInputStream os=new ObjectInputStream(in);
Object object=in。readObject();
Student stu=(Student)object;
System.out.print(“姓名”+stu.getName());
System.out.print(“姓名”+stu.getAgee());
inStream.close();
in.close();
字符流Reader和Writer 抽象类
Reader
方法
描述
Public abstract void close()
关闭输入流
Public int read()
读取单个字符
Public int read(char[] c)
将内容读取到字符流数组中,并返回读取的长度
writer
方法
描述
Public abstract void close()
关闭输出流
Public int writer(String str)
输出字符串到流中
Public int writer(char[] c)
输出字符数组到流中
Public abstarct void flush()
强制清空缓存