Java:IO流

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.能够实现数据的安全性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值