可信网站收费吗,江苏国龙翔建设公司网站,小程序商店怎么关闭,淘宝营销推广方案#x1f38a;专栏【JavaSE】 #x1f354;喜欢的诗句#xff1a;天行健#xff0c;君子以自强不息。 #x1f386;音乐分享【如愿】 #x1f384;欢迎并且感谢大家指出小吉的问题#x1f970; 文章目录 #x1f384;缓冲流#x1f354;字节缓冲流#x1f6f8;一次读取… 专栏【JavaSE】 喜欢的诗句天行健君子以自强不息。 音乐分享【如愿】 欢迎并且感谢大家指出小吉的问题 文章目录 缓冲流字节缓冲流一次读取一个字节一次读取多个字节 字符缓冲流 转换流利用转换流按照指定的字符编码读取数据利用转换流按照指定的字符编码写入数据读写结合使用转换流读取数据并且写入数据并且转换编码方式乱码的解决方法 序列化流(对象操作输出流)写出一个对象创建类Student.java创建类Demo1.java 反序列化流(对象操作输入流)小练习——读写多个对象创建类Student.java创建类Write.Java创建类Read.Java结果 缓冲流 在代码中使用缓冲流Buffered Streams有许多好处特别是在处理I/O操作时它们可以显著提高性能和效率。缓冲流是一种在内存中创建缓冲区的I/O流可以将数据暂时存储在缓冲区中然后一次性地进行批量读取或写入而不是每次操作都直接与底层数据源如文件、网络套接字等交互。
字节缓冲流 原理底层自带了长度为8192的缓冲区来提高性能 在创建对象的时候还是使用原来的基本流但是在缓冲流的加持下提高了基本流读写的效率
一次读取一个字节
package IODemo1;import java.io.*;public class Demo2 {public static void main(String[] args) throws IOException {//创建缓冲流对象BufferedInputStream bisnew BufferedInputStream(new FileInputStream(G:\\a.txt));BufferedOutputStream bosnew BufferedOutputStream(new FileOutputStream(G:\\copy.txt));//循环读写到目的地int b;while ((bbis.read())!-1){bos.write(b);}bos.close();bis.close();}} 一次读取多个字节
package IODemo1;import java.io.*;public class Demo2 {public static void main(String[] args) throws IOException {//创建缓冲流对象BufferedInputStream bis new BufferedInputStream(new FileInputStream(G:\\a.txt));BufferedOutputStream bos new BufferedOutputStream(new FileOutputStream(G:\\copy.txt));//循环读写到目的地byte[] bytes new byte[1024];int len;while ((len bis.read(bytes)) ! -1) {bos.write(bytes, 0, len);}//释放资源bos.close();bis.close();}} 字符缓冲流 为什么文件有三行数据但是读出的只有一行呢 因为readline在读取的时候一次只读一整行读到回车换行符结束 如何把文件全部都读出来
package IODemo1;import java.io.*;public class Demo2 {public static void main(String[] args) throws IOException {BufferedReader brnew BufferedReader(new FileReader(G:\\a.txt));String line;while (((linebr.readLine())!null)){System.out.println(line);}br.close();}} 转换流
转换流是字符流和字节流之间的桥梁
利用转换流按照指定的字符编码读取数据 读取数据 利用转换流按照指定的字符编码写入数据 写入数据 读写结合使用转换流读取数据并且写入数据并且转换编码方式 读写结合 乱码的解决方法
字节流读取中文会出现乱码那么我们就要使用字符流
序列化流(对象操作输出流)
可以把Java中的对象写到本地文件中
写出一个对象
创建类Student.java
package IODemo2;import java.io.Serializable;public class Student implements Serializable {private String name;private int age;public Student() {}public Student(String name, int age) {this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}Overridepublic String toString() {return Student{ name name \ , age age };}
} 注意 这里要加上Serializable接口 创建类Demo1.java
package IODemo2;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;public class Demo1 {public static void main(String[] args) throws IOException {//创建对象Student stunew Student(zhangsan,23);//创建序列化流的对象ObjectOutputStream oosnew ObjectOutputStream(new FileOutputStream(G:\\a.txt));//写出数据oos.writeObject(stu);//释放资源oos.close();}}
反序列化流(对象操作输入流)
可以把序列化到本地文件中的对象读取到程序中来
package IODemo2;import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;public class Demo2 {public static void main(String[] args) throws IOException, ClassNotFoundException {//创建反序列化流的对象ObjectInputStream oisnew ObjectInputStream(new FileInputStream(G:\\a.txt));//读取数据Object oois.readObject();//打印对象System.out.println(o);//释放资源ois.close();}
}
读取成功
小练习——读写多个对象 注意是多个对象 创建类Student.java
package IODemo2;import java.io.Serializable;public class Student implements Serializable {private String name;private int age;public Student() {}public Student(String name, int age) {this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}Overridepublic String toString() {return Student{ name name \ , age age };}
}创建类Write.Java
package IODemo2;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;public class Write {public static void main(String[] args) throws IOException {Student s1 new Student(zhangsan, 23);Student s2 new Student(lisi, 24);Student s3 new Student(wangwu, 25);ArrayListStudent list new ArrayList();list.add(s1);list.add(s2);list.add(s3);ObjectOutputStream oos new ObjectOutputStream(new FileOutputStream(G:\\a.txt));oos.writeObject(list);}
}
创建类Read.Java
package IODemo2;import java.io.*;
import java.util.ArrayList;public class Read {public static void main(String[] args) throws IOException, ClassNotFoundException {ObjectInputStream oisnew ObjectInputStream(new FileInputStream(G:\\a.txt));ArrayListStudentlist(ArrayListStudent) ois.readObject();//强转for (Student student:list){System.out.println(student);}ois.close();}
}结果 一定要先写再读 先执行Write.java 再执行Read.java 如果大家对于这篇文章有问题欢迎在评论区进行讨论