一、
向流中写入对象的操作流 ObjectOutputStream 称为 :序列硫化
向流中写入对象的操作流 ObjectInputStream 称为:反序列硫化
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")); } }
运行结果如下:
欢迎各位大神留言 指点和评论;
原文:https://www.cnblogs.com/lxc127136/p/12768670.html