• 关于IO流---笔记1


    今日内容介绍
    1、File
    2、递归
    =================================================================================
    1 IO技术概述
    1.1: Output
    把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作
    1.2: Input
    把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作
    1.3c: IO操作
    把上面的这种输入和输出动作称为IO操作
    2 File类的概念和作用
    概念:File类是文件和目录路径名的抽象表示形式
    Java中把文件或者目录(文件夹)都封装成File对象
    我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可

    3 File类静态的成员变量
    3.1: pathSeparator
    与系统有关的路径分隔符,为了方便,它被表示为一个字符串
    3.2: separator
    与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串
    4 File类构造方法
    4.1 File(String pathname)
    通过将给定路径名字符串转换为一个File对象,之后可以使用File中的方法
    windows中的路径或文件名不区分大小写
    4.2 File(String parent, String child)
    根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 对象
    File(File parent, String child)
    5 File类创建文件功能
    public boolean createNewFile()
    * 创建文件 如果存在这样的文件,就不创建了
    6 File类创建目录功能
    * public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了

    7 File类删除功能
    * public boolean delete():删除文件或者文件夹
    * 删除的文件或者是文件夹,在File构造方法中给出
    * 删除成功返回true,删除失败返回false
    * 删除方法,不走回收站,直接从硬盘中删除
    * 删除有风险,运行需谨慎

    8 File类获取功能
    * String getName(): 返回路径中表示的文件或者文件夹名
    * 获取路径中的最后部分的名字
    * long length(): 返回路径中表示的文件的字节数
    * String getAbsolutePath(): 获取绝对路径,返回String对象
    * File getAbsoluteFile() : 获取绝对路径,返回File对象
    * eclipse环境中,写一个相对路径,绝对位置工程根目录
    * String getParent(): 获取父路径,返回String对象
    * File getParentFile(): 获取父路径,返回File对象

    9 File类判断功能
    * boolean exists(): 判断File构造方法中封装路径是否存在
    * 存在返回true,不存在返回false
    * boolean isDirectory(): 判断File构造方法中封装的路径是不是文件夹
    * 如果是文件夹,返回true,不是文件返回false
    * boolean isFile(): 判断File构造方法中封装的路径是不是文件
    * 如果是文件,返回true,不是文件返回false

    10 File类list获取功能
    * String[] list():获取到File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)
    * 返回只有名字
    * File[] listFiles():获取到,File构造方法中封装的路径中的文件和文件夹名 (遍历一个目录)
    * 返回的是目录或者文件的全路径
    * static File[] listRoots(): 列出可用的文件系统根
    11 文件过滤器
    11.1: 作用
    过滤一个目录下的指定扩展名的文件,或者包含某些关键字的文件夹
    11.2 方法介绍
    * public String[] list(FilenameFilter filter)
    * public File[] listFiles(FileFilter filter)



    12 文件过滤器_原理分析
    * A:文件过滤器_原理分析
    * listFiles()遍历目录的同时,获取到了文件名全路径,调用过滤器的方法accept,将获取到的路径传递给accept方法的参数pathname
    * accept方法接收了参数pathname,参数是listFiles传递来的
    * 在accept方法中,进行判断,如果这个路径是Java文件,返回true,走着返回false
    * 一旦方法返回了true
    * listFiles将路径保存到File数组中

    13 递归概念和注意事项
    13.1: 递归概念
    * 递归,指在当前方法内调用自己的这种现象
    * 递归分为两种,直接递归和间接递归
    * 直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法
    13.2 b: 注意事项
    * 递归一定要有出口, 必须可以让程序停下
    * 递归次数不能过多
    * 构造方法,禁止递归

    14 递归的几个例子
    15 输入和输出
    15.1: 参照物
    到底是输入还是输出,都是以Java程序为参照
    Output
    * 把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作
    * 程序到文件称为输出
    Input
    * 把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作
    * 文件到程序称为输入
    IO操作
    把上面的这种输入和输出动作称为IO操作

    16 字节输出流OutputStream
    16.1概念
    * IO流用来处理设备之间的数据传输
    * Java对数据的操作是通过流的方式
    * Java用于操作流的类都在IO包中
    * 流按流向分为两种:输入流,输出流。
    * 流按操作类型分为两种:
    * 字节流 : 字节流可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的
    * 字符流 : 字符流只能操作纯字符数据,比较方便。
    16.2IO流常用父类
    * 字节流的抽象父类:
    * InputStream
    * OutputStream
    * 字符流的抽象父类:
    * Reader
    * Writer
    16.3 如何用IO程序书写
    * 使用前,导入IO包中的类
    * 使用时,进行IO异常处理
    * 使用后,释放资源
    16.4: 相关方法介绍
    * void close(): 关闭此输出流并释放与此流有关的所有系统资源。
    * void write(byte[] b): 将 b.length 个字节从指定的 byte 数组写 入此输出流
    * void write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
    * abstract void write(int b) : 将指定的字节写入此输出流。
    17 字节输出流FileOutputStream写字节
    17.1: FileOutputStream
    * 写入数据文件,学习父类方法,使用子类对象
    17.2: FileOutputStream构造方法
    * 作用:绑定输出的输出目的
    * FileOutputStream(File file)
    * 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
    * FileOutputStream(File file, boolean append)
    * 创建一个向指定 File 对象表示的文件中写入数据的文件输出流,以追加的方式写入。
    * FileOutputStream(String name)
    * 创建一个向具有指定名称的文件中写入数据的输出文件流。
    * FileOutputStream(String name, boolean append)
    * 创建一个向具有指定 name 的文件中写入数据的输出文件流,以追加的方式写入。
    17.3: 流对象使用步骤
    * 1. 创建流子类的对象,绑定数据目的
    * 2. 调用流对象的方法write写
    * 3. close释放资源
    17.4: 注意事项
    * 流对象的构造方法,可以创建文件,如果文件存在,直接覆盖
    18字节输出流FileOutputStream写字节数组
    18.1: 方法介绍
    * void write(byte[] b): 将 b.length 个字节从指定的 byte 数组写入此输出流
    * void write(byte[] b, int off, int len) :将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。
    19 文件的续写和换行符号
    19.1: 文件的续写
    * FileOutputStream构造方法, 的第二个参数中,加入true
    19.2: 换行符号
    * 在文件中,写入换行,符号换行
    * 可以写在上一行的末尾, 也可以写在下一行的开头

    20 IO中的异常处理
    20.1:IO流的异常处理
    * try catch finally
    21 字节输入流InputStream
    20.1: 方法介绍
    * abstract int read() :
    * 从输入流中读取数据的下一个字节。
    * int read(byte[] b)
    * 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
    * int read(byte[] b, int off, int len)
    * 将输入流中最多 len 个数据字节读入 byte 数组。
    * void close()
    * 关闭此输入流并释放与该流关联的所有系统资源。

    22 字节输入流FileInputStream读取字节
    22.1 方法介绍
    * abstract int read() :
    * 从输入流中读取数据的下一个字节,返回-1表示文件结束
    * int read(byte[] b)
    * 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
    * 读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
    * int read(byte[] b, int off, int len)
    * 将输入流中最多 len 个数据字节读入 byte 数组。
    * void close()
    * 关闭此输入流并释放与该流关联的所有系统资源。

    23 字节输入流FileInputStream读取字节数组
    23.1方法介绍
    * int read(byte[] b)
    * 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
    * 读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回 -1。
    * int read(byte[] b, int off, int len)

    24 字节流复制文件读取单个字节

    例如:
    /*
    * 将数据源 d:\lijun.txt
    * 复制到 c:\lijun.txt 数据目的
    * 字节输入流,绑定数据源
    * 字节输出流,绑定数据目的
    *
    * 输入,读取1个字节
    * 输出,写1个字节
    */

    24 字节流复制文件读取字节数组

    25字符输出流写文本FileWriter类
    25.1: 方法介绍
    * void write(int c)
    * 写入单个字符
    * void write(String str)
    * 写入字符串
    * void write(String str, int off, int len)
    * 写入字符串的某一部分
    * void write(char[] cbuf)
    * 写入字符数组
    * abstract void write(char[] cbuf, int off, int len)
    * 写入字符数组的某一部分

    26 字符输入流读取文本FileReader类
    26.1: 方法介绍
    * int read()
    * 读取单个字符
    * int read(char[] cbuf)
    * 将字符读入数组
    * abstract int read(char[] cbuf, int off, int len)
    * 将字符读入数组的某一部分。
    26.2: 例子
    /*
    * 字符输入流读取文本文件,所有字符输入流的超类
    * java.io.Reader
    * 专门读取文本文件
    *
    * 读取的方法 : read()
    * int read() 读取1个字符
    * int read(char[] c) 读取字符数组
    *
    * Reader类是抽象类,找到子类对象 FileReader
    *
    * 构造方法: 绑定数据源
    * 参数:
    * File 类型对象
    * String文件名
    */

    27flush方法和close方法区别
    * A: flush方法和close方法区别
    *a: flush()方法
    * 用来刷新缓冲区的,刷新后可以再次写出,只有字符流才需要刷新
    *b: close()方法
    * 用来关闭流释放资源的的,如果是带缓冲区的流对象的close()方法,不但会关闭流,还会再关闭流之前刷新缓冲区,关闭后不能再写出

    28字符流复制文本文件

  • 相关阅读:
    J2SE API & J2EE API & SSH API
    JSP转发和重定向的区别
    Tomcat详解
    面试题:通过问题排查,考察测试链路熟练程度
    c语言中求数组的长度
    CGContextBeginPath
    CGContextAddAr绘制一个圆弧
    将当前的手机屏幕上的视图控件的view拍照 并保存到手的album中
    CGContextFillPath(ctx)
    CGContextSetRGBFillColor
  • 原文地址:https://www.cnblogs.com/lijun6/p/10393086.html
Copyright © 2020-2023  润新知