1. 流的概念:内存与存储设备之间传输数据的通道。
2. 流的分类:按方向(以内存作为参照): 输入流:将存储设备(文件)中的内容读入到内存(程序)中; 输出流:将内存中的内容写入到存储设备中; 按单位: 字节流:以字节为单位,可以读写所有数据; 字符流:以字符为单位,只能读写文本数据。
//读取 FileReader fr = new FileReader("e:\\hello.txt"); BufferedReader br = new BufferedReader(fr); //单个字符读取 /* int data=0; while ((data=fr.read())!=-1){//读取一个字符 System.out.print((char) data); } */ /* 相当于自己创建了一个缓冲区 读取: int count=0; byte[] buf=new byte[1024]; while ((count=bis.read(buf))!=-1){ System.out.println(new String(buf,0,count)); }*/
写入: FileWriter fw = new FileWriter("e:\\L.txt"); BufferedWriter bw = new BufferedWriter(fw); //写入 for (int i = 0; i < 5; i++) { bw.write("牛逼"); bw.newLine();//写入一个换行符 }
3.序列化
使用ObjectOutputStream实现对象的序列化 * 在Student类中必须实现Serializable接口,使得Student类可以序列化 * 序列化中对象的属性也要求实现Serializable接口 * 使用transient修饰属性,这个属性就不能被序列化了 * 静态属性也不能被序列化 * 序列化多个对象时,可以借助集合来实现
使用ObjectOutputStream实现对象的序列化 在Student类中必须实现Serializable接口,使得Student类可以序列化
使用FileReader和FileWriter复制文本文件,不能复制图片或二进制文件,其没有字符编码 使用字节流复制任意文件
4.打印
/** * 演示PrintWriter的使用 * 打印流和写入流类似,也有缓冲区 * 打印什么就是什么,如打印97,文本的也是97;但写入97,文本的是a */ //创建打印流 PrintWriter pw = new PrintWriter("e:\\print.txt"); //打印 pw.println(97); pw.println(true); pw.println('a'); pw.close();
5.File