JAVA--文件流、缓冲流、转换流、打印流,File类,序列化流

概念:

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

分类:

按处理数据类型的不同,分为字节流和字符流

按数据流向的不同,分为输入流和输出流。(入和出是相对于内存来讲的) 

按功能不同,分为节点流和处理流

节点流:直接操作数据源

处理流:对其他流进行处理

Input 输入,指向内存中写出数据
O:Output输出,指从内存中写出数据
流是对数据传输的总称,也就是两台设备之间进行数据传输,称为流,根据流传输的特性,抽象为各个类
FileInputStream:字节输入流
文件要读取,必须先找到这个文件,可以使用绝对定位或相对定位
绝对定位:以当前文件系统的根目录为基准
相对定位:以当前文件所在目录为基准,eclipse中,相对目录是当前项目下

read:方法重载,可以传入一个字节数组,把数据放到数组中,返回当前次,读取的字节个数,如果到达文件末尾,返回-1

FileReader:一次读取一个字符,可以解决乱码问题,一般纯文本文件使用FileReader,压缩包,图片,视频等还是会使用字节流,使用字符流会出现问题

FileOutputStream:字节输出流,需要指定输出的文件路径,如果找不到该文件,会自动创建
write():写出
flush():刷缓存
构造方法:
FileOutputStream(String):传入文件地址,默认覆盖写入,就是先把文件中内容清空再写入
FileOutoutStream(String,boolean):boolean类型为true就是追加写入,为false就是覆盖写入

readLine:读取下一行的数据,返回值就是读到的数据,如果到达文件末尾,返回null

得到字节流
FileInputStream fis = new FileInputStream("D://a.java");
转换为字符流
InputStreamReader isr = new InputStreamReader(fis);
使用缓冲流
BufferedReader bfr = new BufferedReader(isr);

Reader和Writer为了解决方便国际化,面对不同的语言的编码,屏蔽了因语言不同产生的乱码问题
 而data数据流为了不同的平台数据读取的一致性,如Unix,Windows,linux等操作系统对数据的不同处理和保存方式
 可以通过data数据流解决
 为了弥补这些差异性,java平台提供了两个轻量化的方法

序列化:对象—>硬盘中 ,进行持久化存储
 反序列化:硬盘中对象—>堆内存对象
 创建对象:
1、new最常见
2、反射机制
3、反序列化
4、clone不用了,被序列化代替
应用场景:
序列化就是将数据转换为二进制流,然后能够进行持久化存储和进行网络传输
数据—>序列化—>加密处理—>网络传输—>解密处理—>反序列化—>数据

创建文件对象
        File f1 = new File("D:\\test\\com\\src");
        获取全路径
        System.out.println(f1.getAbsolutePath());
        获取文件名/文件夹名,包括后缀
        System.out.println(f1.getName());
        判断是否存在
        System.out.println(f1.exists());
        判断是否是文件
        System.out.println(f1.isFile());
        判断是否是目录
        System.out.println(f1.isDirectory());
        上级路径
        System.out.println(f1.getParent());
        上级对象
        System.out.println(f1.getParentFile());
        获取所有子文件对象
        File[] subFiles = f1.listFiles();
        for (File file : subFiles) {
            System.out.println(file.getAbsolutePath());
        }
        File f2 = new File("D:\\test\\com\\aaa\\bbb");
        判断是否存在
        System.out.println(f2.exists());
        新建文件,不能新建文件夹,如果有就不创建,创建返回true,不创建返回false
        System.out.println(f2.createNewFile());
        删除成功返回true,否则返回false
        System.out.println(f2.delete());
        文件夹创建和删除
        File f3 = new File("D:\\test\\com\\bbb\\ccc\\ddd\\eee");
        f3.mkdir();只能创建ccc
        f3.mkdirs();递归创建整个目录
        f3.delete();
        删除只会删除eee文件夹,因为f3是eee的文件夹对象,所以不会删除之前的文件夹

 递归复制
 1、单个文件复制
 2、递归获取所有文件
 3、整合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值