JAVA--IO流

本文详细介绍了Java中的IO流,包括File类的使用、文件过滤器、绝对路径与相对路径的概念。重点讲解了IO流的分类,如OutputStream和FileOutputStream的字节输出流,以及Reader的字符输入流。还提到了文件加密解密、字符输出的技巧,转换流在装饰者设计模式中的应用,以及如何读取properties文件。最后,讨论了异常日志的收集和try-with-resources语法的使用。
摘要由CSDN通过智能技术生成

 

一、java.io.file

File file = new File("C://1.txt"); //创建file对象,用于创建文件
        file.exists();//建议先判断文件是否存在
        file.createNewFile();//用于判断是否创建成功,若文件已存在则返回false,若不存在则创建该文件并返回true
        file.mkdir(); //用于创建单个文件夹
        file.mkdirs();//可以创建多个 比如:c://a/b/c

        File dir = new File("c://test1");
        File a = new File(dir,"test2.txt");//创建子文件
        File b = new File("c://test1","test3.txt");//效果等同上一个
        a.delete();//删除test2.txt文件
        b.length();//获取文件大小,按字节计算
        dir.list();//获取该路径下所有的文件和目录
        dir.listFiles();//获取该路径下所有的文件

        File oldFile = new File("c://a.zip");
        File newFile = new File("d://b.zip");
        oldFile.renameTo(newFile);//把旧的文件放到新的位置去(重命名)

        System.out.println(File.pathSeparator);//获取路径分隔符 打印结果为: ;    用于跨系统编写,进行替换
        System.out.println(File.separator);//获取名称分隔符 打印结果为: \

二、文件过滤器

public static void main(String[] args) throws IOException {
        File e = new File("d://");
        listFiles(e);
    }

    public static void listFiles(File file){
        //创建一个过滤器,过滤avi文件
        FileFilter filter = new AVIFileFilter();
        //通过文件获取子文件夹
        File[] files = file.listFiles(filter);
        if(files != null && files.length>0) {
            for (File f : files) {
                if (f.isDirectory()) {
                    listFiles(f);
                } else {
                    System.out.println("发现一个avi文件" + f.getAbsolutePath());
                }
            }
        }
    }

    static class AVIFileFilter implements FileFilter{
        @Override
        public boolean accept(File pathname) {
            if(pathname.getName().endsWith(".avi") || pathname.isDirectory()){
                return true;
            }
            return false;
        }
    }

三、相对于与绝对路径

绝对路径:从盘符开始,是一个完整的路径 比如:c://a.txt

相对路径:在java中是相对于项目目录路径,这是一个不完整的便捷路径,在java开发中很常用,例如:a.txt

四、IO流

概述:可以将这种数据传输操作,看做一种数据的流动,按照流动的方向分为输入Input和输出Output。

IO流的分类:

    按照流的方向来分,可以分为输入流和输出流

    按照流动的数据类型来分,可以分为字节流和字符流

        字节流:一切皆字节

        输入流: 顶级父类InputStream

        输出流:顶级父类OutputStream

 

        字符流:

          输入流:Reader

          输出流:Writer

后续学习的任何流,在传输时底层都是二进制

OutputStream(抽象类)

close​()

 

关闭此输出流并释放与此流相关联的任何系统资源。 

flush​()

 

刷新此输出流并强制任何缓冲的输出字节被写出。 

write​(byte[] b)

 

将 b.length字节从指定的字节数组写入此输出流。 

write​(byte[] b, int off, int len)

 

从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值