JAVA I/O 篇
2018-04-26
Java 关于 IO 的操作都要 try catch .flush();可以把内存中没堆满的直接写入,一般跟在.write()方法后面
不过,关于 copy 的实现方法,提供几个比较高效的
· Java7 的 Files 类
Files.copy(source.toPath(), dest.toPath());
· FileChannel FileUtils
FileUtils.copyFile(source, dest);
Q:什么是序列化?
A:四将对象转换为字节序列的过程, 文本、图片、音频、视频等都是通过二进制序列进行传输的。
Q:那怎么实现呢?
A: ObjectOutputStream & ObjectInputStream
ObjectOutputStream 类中:通过使用 writeObject(Object object) 方法,将对象以二进制格式进行写入。
ObjectInputStream 类中:通过使用 readObject()方法,从输入流中读取二进制流,转换成对象。
File file = new File("D:/test.txt");
Student student = new Student("孙悟空","12");
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));
outputStream.writeObject(student);
//
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(file));
Student s = (Student) objectInputStream.readObject(); System.out.println(s.toString());
第二种
Seriable: 目标对象需要先实现 Seriable 接口(没有任何方法)。
通过在序列化对象中实现 writeObject()和 readObject()方法,传入 ObjectOutputStream 和 ObjectInputStream 对象,完成序列化。
OutputStream outputStream = new FileOutputStream("output.txt")
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(student);
//
InputStream inputStream= new FileInputStream("output.txt")
ObjectInputStream objectInputStream= new ObjectInputStream(inputStream);
objectInputStream.readObject();
不要忘了所有对象的.close()
转换流
transient 关键字,主要用来忽略我们不希望进行序列化的变量。