序列化流与反序列化流、打印流
一、
向流中写入对象的操作流 ObjectOutputStream 称为 :序列硫化
向流中写入对象的操作流 ObjectInputStream 称为:反序列硫化
二、首先创建一个persoson对象
public class Person { private String name; private int age;
出现这种错误:需要在person对象上加一个接口
public class Person implements Serializable{ //必须加一个implements 接口不然会报错
private String name;
private int age;
public Person(String name, int age)
}
public class Person implements Serializable{ private String name; public int age; //这个地方 private修改成public 后 会发生InvalidClassException异常
同时当反序列化对象时,如果对象所属的class文件在序列化之后进行的修改,那么进行反序列化也会发生异常InvalidClassException。发生这个异常的原因如下:
①该类的序列版本号与从流中读取的类描述符的版本号不匹配
②该类包含未知数据类型
③ 该类没有可访问的无参数构造方法
不想该私有序列化有二种方式 用static 和transient 关键字;
private static int age;
private transient int age;
三、打印流
①字节打印流使用关键字 PrintStream
②字符打印流使用关键字 PrintWriter
PrintWriter pw=new PrintWriter(fw,true); true自动刷新 flase不刷新
四、 commons-IO
在使用这个类之前需要先将 commons-io放入文件lib中 才能使用快捷方式
l 常用方法:
getExtension(String path):获取文件的扩展名;
getName(String filename):获取文件名;
isExtension(String fileName,String ext):判断fileName是否是ext后缀名;
readFileToString(File file):读取文件内容,并返回一个String;
writeStringToFile(File file,String content):将内容content写入到file中;
copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制
copyFile(File srcFile,File destFile);文件复制
实例如下:
public class Demo03 { public static void main(String[] args) throws IOException { //获取文件扩展名 String ext=FilenameUtils.getExtension("D:io1227\\print.txt"); System.out.println(ext); //获取文件名 String filename=FilenameUtils.getName("D:io1227\\print.txt"); System.out.println(filename); //判断是否以。java结尾 boolean b = FilenameUtils.isExtension("D:io1227\\print.txt", "java"); System.out.println(b); //文件夹复制 FileUtils.copyDirectoryToDirectory(new File("D:\\io1227"), new File("D:\\demo1227")); //文本复制 FileUtils.copyFile(new File("D:\\io1227\\work.txt"), new File("D:\\io1227\\b\\work.txt")); //将内容写到文件中 FileUtils.writeStringToFile(new File("D:\\io1227\\work.txt"), "我是程序员,我喜欢这个工作"); //读取文件内容 FileUtils.readFileToString(new File("D:\\io1227\\work.txt")); } }
运行结果如下:
欢迎各位大神留言 指点和评论;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程