1.缓冲输出流:1>概念:增强基本流(字节流,字符流)对象;
BufferedOutputStream是继承OutputStream;
BufferedOutputStream(OutputStream out);
// 创建一个新的缓冲输出流,将数据写入指定的底层输出流中;
BufferedOutputStream(OutputStream out, int size);
// 创建一个新的缓冲输出流,已将具有指定缓冲区大小的数据写入指定的底层输出流参数;
2>步骤://1.创建FileOutputStream对象,构造方法中绑定要输出的目的地
FileOutputStream fos = new FileOutputStream("akdgn\\a.txt);
//2.创建BufferedOutputStream,构造方法中传递FileOutputStream对象,提高效率
BufferedOutputStream bos = new BufferedOutputStream(fos);
//3.使用BufferedOutputStream对象中的方法write,把数据写入到内部缓冲区中
bos.write("xierubneibuhuanchongqu".getBytes());
//4.使用BufferedOutputStream对象中的方法flush,把内部缓冲区的数据,刷新到文件中
bos.flush();
//5.释放资源(先调用flush方法刷新数据)
bos.close();
2.缓冲输入流:1>概念:增强基本流(字节流,字符流)对象;
BufferedInputStream是继承InputStream;
BufferedInputStream(InputStream in);
// 创建一个新的缓冲输入流,并保存参数;
BufferedInputStream(InputStream in, int size);
// 创建一个具有指定大小的缓冲区,并保存参数;
2>步骤://1.创建FileInputStream对象,构造方法中绑定要读取的数据源;
FileIntputStream fis = new FileInputStream("akdgn\\a.txt);
//2.创建BufferedInputStream,构造方法中传递FileInputStream对象,提高效率
BufferedInputStream bis = new BufferedInputStream(fis);
//3.使用BufferedInputStream对象中的方法read,把数据写入到内部缓冲区中
使用FileInputStream读取;
//4.释放资源(先调用flush方法刷新数据)
bis.close();
3.Reader转换流:1>概念:读取字节,并使用指定的字符集将其解码为字符;
InputStreamReader是继承Reader;
InputStreamReader(InputStream in) ;
// 创建一个使用默认字符集的字符流;
InputStreamReader(InputStream in, String charsetName) ;
// 创建一个指定字符集的字符流;
2>步骤://1.定义文件路径,文件为gbk编码;
String FileName = "E:\\file_gbk.txt";
//2.创建流对象,默认UTF8编码;
InputStreamReader isr = new InputStreamReader(new FileInputStream(FileName));
//3.while ((read = isr.read()) != ‐1) {
System.out.print((char)read);
//4. 使用指定编码字符流读取,正常解析 ;
while ((read = isr2.read()) != ‐1) {
System.out.print((char)read);
//5.释放资源(先调用flush方法刷新数据)
bos.close();
4.Writer转换流:1>概念:使用指定的字符集将字符编码为字节;
OutputStreamWriter是继承Writer;
OutputStreamWriter(OutputStream in) ;
// 创建一个使用默认字符集的字符流;
OutputStreamWriter(OutputStream in, String charsetName) ;
// 创建一个指定字符集的字符流;
2>步骤://1.定义文件路径,文件为gbk编码;
String FileName = "E:\\file_gbk.txt";
//2.创建流对象,默认UTF8编码;
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(FileName));
//3. 写出数据
osw.write("你好"); // 保存为6个字节
//4.释放资源(先调用flush方法刷新数据)
osw.close();
5.序列化:1>ObjectOutputstream:<1>将Java对象的原始数据类型写出到文件,实现对象的持久存储;
<2>public ObjectOutputStream(OutputStream out);
// 创建一个指定OutputStream的ObjectOutputStream;
<3>FileOutputStream fileOut = new FileOutputStream("employee.txt");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
<4>使用序列化的条件:该类必须实现 java.io.Serializable 接口,Serializable 是一
个标记接口,不实现此接口的类将不会使任 何状态序列化或反序列化,会抛出 NotSerializableException 。
该类的所有属性必须是可序列化的。如果有一个属性不需要可序列化的,则该属性必须注明是瞬态的,使用
transient 关键字修饰;
2>ObjectInputstream:<1>将之前使用ObjectOutputStream序列化的原始数据恢复为对象;
<2>public final Object readObject () ;
// 读取一个对象
<3>e = (Employee) in.readObject();
in.close(); // 释放资源
<4>JVM可以反序列化对象,它必须是能够找到class文件的类;
如果找不到该类的class文件,则抛出一个 ClassNotFoundException 异常;
6.打印流:1>public PrintStream(String fileName) // 使用指定的文件名创建一个新的打印流;
2>PrintStream ps = new PrintStream("ps.txt");
3>改变打印流向:// 创建打印流,指定文件的名称;
PrintStream ps = new PrintStream("ps.txt");
// 设置系统的打印流流向,输出到ps.txt;
System.setOut(ps);
// 调用系统的打印流,ps.txt中输出97
System.out.println(97);