JAVA程序员笔记 第18篇——IO流、序列化、装饰模式简述

声明:本笔记大部分来自观看该文章的心得:
原文链接
博主:宜春
本人文章仅用于查阅和本人记录知识点,如有侵权本人会自行删除。

IO文件流

IO流的含义:

Java的IO流是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。在java中把不同的输入/输出源(键盘,文件,网络连接等)抽象表述为“流”(stream)。

流的分类

  • 按照 流的文件类型:字节流(InputStream、OutputStream)和字符流(Reader,Writer)
  • 按照 流的流向:输入流和输出流
  • 按照 功能 :节点流 和 过滤流
    在这里插入图片描述
    所有文件数据(文本、图片、视频等)在存储时,都是二进制数字的形式,也就是一个一个的字节,传输时一样如此。所以,字节流可以传输任意文件数据。
    绝对路径:一个完整的路径,以盘符开头,例如F://123.txt

相对路径:一个简化的路径,不以盘符开头,例如//123.txt//b.txt。

常用API

字符流

输入流创建

// 使用File对象创建流对象
        File file = new File("xxx.txt");
        FileReader reader= new FileReader(file);
      
        // 使用文件名称创建流对象
        FileReader reader = new FileReader("a.txt");

读取字符数据

// 使用文件名称创建流对象
       	FileReader reader = new FileReader("xxx.txt");
      	// 定义变量,保存数据
        int len = -1;
        // 循环读取
        while ((len = reader .read())!=-1) {
   
            System.out.println((char)len);
        }
		// 记得关闭资源
        reader .close();

输出流类比一下

获取功能

getAbsolutePath() :返回此File的绝对路径名字符串。
getPath() :将此File转换为路径名字符串。
getName() :返回由此File表示的文件或目录的名称。
length() :返回由此File表示的文件的长度(字节)

如果File是目录,则返回值未指定。

判断功能

exists() :此File表示的文件或目录是否存在。
isDirectory() :此File表示的是否为 目录。
isFile() :此File表示的是否为 文件。

创建、删除功能

createNewFile() :文件不存在,创建一个新的空文件并返回true,文件存在,不创建文件并返回false。
delete() :删除由此File表示的文件或目录。
mkdir() :创建由此File表示的目录。如果父类不存在,则创建失败
mkdirs():创建由此File表示的目录,同时创建不存在的父级目录。
所以一般选用 mkdirs()

遍历目录
public static List<File> searchFiles(File directory, Predicate<File> predicate) {
   
        //返回存储文件的容器
        List<File> files = searchFiles(directory);
File dir = new File("G:\光标");
		//造存放file的容器
		File[] files = dir.listFiles();
        //获取当前目录下的文件以及文件夹对象
        for (File file : files) {
   
            System.out.println(file);
        }
    }

listFiles指定目录必须存在,且必须指定目录,指定文件会发生空指针异常

  File file=new File("D:\\XXX");
List<File> list = Arrays.asList(file.listFiles());
		//判空
        if (file != null) {
   
            //遍历list
            for (File f : list) {
   
                if (f.isDirectory()) searchFiles(f);
                else list.add(f);

            }
        }

那么什么时候用字节流什么时用字符流呢
在遍历文件时候,一般选择字符流
而对文件的内容进行读写操作时一般用字节流
无论使用什么样的流对象,底层传输的始终为二进制数据。但在用字符流读写文件内容时,规定的字符容器可能会大于需要读写的的内容(字节)

字节流

字节输、出流(OutputStream)
构造方法
public FileOutputStream(File file):以File对象为参数创建对象。
public FileOutputStream(String name): 以名称字符串为参数创建对象。

开发常用第二种,指定路径字符串

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值