对象流可以将 Java 对象转换成二进制写入磁盘,这个过程通常叫做序列化,并且还可
以从磁盘读出完整的 Java 对象,而这个过程叫做反序列化。
对象流主要包括:ObjectInputStream 和 ObjectOutputStream
如何实现序列化和反序列化
如果实现序列化该类必须实现序列化接口 java.io. Serializable , 该接口没有任何方法, 该接口
只是一种标记接口,标记这个类是可以序列化的
/*
对象流:
对象流可以将java对象转换成二进制写入磁盘,这个过程叫做“序列化”
还可以从磁盘读取完整的Java对象,这个过程叫 “反序列化”
包括:ObjectInputStream 和 ObjectOutputStream
java.io.Serializable
*/
import java.io.*;
public class ObjectStreamTest01{
public static void main(String[] ags){
ObjectOutputStream oos = null;
try{
FileOutputStream fos = new FileOutputStream("C:\\work\\Java\\arry.txt");
oos = new ObjectOutputStream(fos);
Student stu = new Student();
stu.name = "ming太帅了,没道理不爱你 !";
oos.writeObject(stu);
} catch(FileNotFoundException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
} finally{
try{
if(oos != null){
oos.close();
}
} catch(IOException e){
e.printStackTrace();
}
}
}
}
// 实现序列化接口
class Student implements Serializable{
String name;
}
//////////////////////////////////////////////////////////
/*
对象流:
对象流可以将java对象转换成二进制写入磁盘,这个过程叫做“序列化”
还可以从磁盘读取完整的Java对象,这个过程叫 “反序列化”
包括:ObjectInputStream 和 ObjectOutputStream
java.io.Serializable
*/
import java.io.*;
public class ObjectStreamTest02{
public static void main(String[] ags){
ObjectInputStream ois = null;
try{
FileInputStream fis = new FileInputStream("C:\\work\\Java\\arry.txt");
ois = new ObjectInputStream(fis);
// 反序列化
Student stu = (Student)ois.readObject();
System.out.println(stu.name);
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
e.printStackTrace();
} finally{
try{
if(ois != null){
ois.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}
// 实现序列化接口
class Student implements Serializable{
String name;
}
File 提供了大量的文件操作:
删除文件,修改文件,得到文件修改日期,建立目录、列表文件等
/*
java.io.File;
1. File类与流无关,不能通过该类完成文件的读和写
2. File是文件和目录路径名的抽象的表现形式
File代表的是硬盘上的Directory 和 file
*/
import java.io.*;
public class FileTest01{
public static void main(String[] args){
// path 相对路径
File f1 = new File("PrintStreamTest02.java");
File f2 = new File("C:\\work\\Java\\course\\vip\\JavaSE-Course-Arry\\chapter26\\PrintStreamTest02.java");
File f3 = new File("C:\\work\\Java");
System.out.println(f1.exists());//输出true
System.out.println(f2.exists());//true
System.out.println(f3.exists());//true
File f4 = new File("c:\\yyy");
System.out.println(f4.exists());
// 如果不存在在创建
if(!f4.exists()){
// 创建目录
f4.mkdir();
try{
// 创建文件
f4.createNewFile();
}catch(IOException e){
e.printStackTrace();
}
}
File f5 = new File("c:\\a\\b\\c\\d");
if(!f5.exists()){
f5.mkdirs(); // C:\a\b\c\d
}
}
}
/////////////////////////////////////////////////////////////////////////
/*
File类中的部分方法
*/
import java.io.*;
import java.util.*;
import java.text.*;
public class FileTest02{
public static void main(String[] args){
// 获取绝对路径
File f1 = new File("FileTest01.java");
String absolutePath = f1.getAbsolutePath();
System.out.println("绝对路径:" + absolutePath);
// 获取文件名
System.out.println("文件名:"+f1.getName());
// 获取父路径
File f2 = new File("C:\\work\\Java\\course\\vip\\JavaSE-Course-Arry\\chapter26");
String parentPath = f2.getParent();
System.out.println(parentPath);
// 判断该File 是文件File还是目录Directory
System.out.println(f1.isDirectory());//false
System.out.println(f1.isFile());//true
// 获取文件的最后一次修改时间
Date d = new Date(f1.lastModified());
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(d));
// 获取文件的长度(字节数)
System.out.println("文件的长度:" + f1.length());
File f3 = new File("C:\\work\\Java\\course\\vip\\JavaSE-Course-Arry\\chapter26");
File[] fs = f3.listFiles();
//遍历
for(File f : fs){
if(f.getAbsolutePath().endsWith(".java")){
System.out.println("绝对路径 : " + f.getAbsolutePath());
}
}
}
}