IO流
流:供数据传输的通道,流有方向,根据参照物的不同方向也不同
流的传输内容
在java语言中,按照传输的内容分,分为:
字节流 ·····>传输二进制字节数据
字符流 ······>传输字符数据
对象流 ·······>传输对象数据
无论传输的是什么数据,在底层都是以字节方式传输。所以真正的流只有一种就是字节流
io包
流操作相关的类都在java.io包中存放。
字节流有两个抽象父类:InputStream和OutputStream
字符流有两个抽象父类:Reader和Writer
流的子类
不同的数据源读写数据的方式会有所不同,所以在字节流和字符流的父类中,预留了读写数据的抽象方法,不同的子类根据自己数据源的特点分别去实现。
字节流比较常用的子类
BufferedInputStream ··········>数据源是缓冲区
FileInputStream ··········>数据源是文件
ObjectInputStream ········>数据源是对象
字节输入流InputStream共有的方法
read() ·······>从流中读取下一个字节
read(byte[ ] b) ········>从输入流中读取一些字节,并存入数组b
read(byte[ ]b,int off,int len) ········>从输入流中读取前len个字节,并存入数组b
close() ········>关闭输入流
对象流
对象序列化
在传输对象是,由于对象的数据庞大,无法直接传输。所以,在传输之前,先将对象打散成字节序列,以利于传输。这个过程,称为序列化过程。
在字节序列到达目的地以后,又需要将字节序列还原成对象。这个过程,称为反序列化。
public class FileUtil {
/**
* 序列化对象
*
* @param path 保存序列化对象路径
* @param obj 序列化对象
*/
public static void writeObject(String path, Object obj) {
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream(path);
oos = new ObjectOutputStream(fos);
oos.writeObject(obj);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 反序列化对象
*
* @param path 反序列化对象的文件路径
* @return
*/
public static Object readObject(String path) {
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream(path);
ois = new ObjectInputStream(fis);
Object obj = ois.readObject();
return obj;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}
File类
File类提供了定位本地文件系统、描述文件和目录的功能。是java.io包中引用实际磁盘文件的对象。
File类构造方法:
public File(String pathname)
File类常用方法
String getAbsolutePath() 得到当前文件对象的物理路径
boolean existe() 判断文件或目录是否存在
boolean isFile() 判断文件对象是否是文件
boolean isDirectory() 判断文件对象是否是目录
boolean delete() 删除当前文件对象表示的文件或目录,如果删除目录,那么目录必须为空
boolean mkdir() 创建一个目录
File[] listFiles() 得到目录里所有的文件对象
Properties集合
Properties和其他Map集合的不同:
1.Properties提供专门对字符串进行存取的方法
2.Properties可以利用输入输出流实现键值对的输入和输出
数据库
数据库即数据的仓库。在数据库中提供了专门的管理系统,对数据库中的数据进行集中的控制和管理。能高效的对数据进行存储、检索。
优势:
1.降低存储数据的冗余度
2.更高的数据的一致性
3.存储数据可以共享
4.建立数据库所遵循的标准
5.便于维护数据的完整性
6.能够实现数据的安全性