API-4

File

对文件的操作

获取某个目录下所有的子项目

  • listFiles()
    返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
    
  • listFiles(FileFilter filter)
    返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
    
  • listFiles(FilenameFilter filter)
    返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
    
  • listFiles(FileFilter filter):File[]
    • 获取指定目录下所有满足条件的File对象
    • FileFilter:是个接口,其中有抽象方法accept,此方法用于实现过滤,将过滤条件写在本方法体中。

      递归:

      在一个方法体内部调用方法本身

      文件操作 - RandomAccessFile

  • File的实例可以对文件进行以上3种访问操作,但是不可以访问文件中的数据。
  • RandomAccessFile实例可以实现对文件数据的访问(读写操作)
  • 构造方法:
    • RandomAccessFile(File/String dest,String mode)
      mode:访问模式
      常用的2个访问模式:
      "r" :只读
      "rw":读写
      
  • 方法:
    • 写数据:
      • write(int n):向文件中写入一个字节
- 作为了解:
    - 计算机底层存储的是二进制数据,即保存的是0和1,一个二进制数占用的内存大小即为1位,一个字节占用8位
        - byte  1字节 8位的
        - int   4字节  32位
        - long  8字节  64位 
处理器:32位的:处理一个数据时一次占用32位
    byte占用低8位
    00000000 00000000 00000000 01100000
                                低八位
    处理器处理int值和处理byte值效率是一样的,
    因为都是占用32位处理的
- 读数据
    - read():int
        - 读取一个字节数据,以int形式返回
        - 若读取到文件末尾,返回-1

按照单字节方式复制效率低,为了提高效率,我们可以采取每次复制一个字节数组的字节量,从而减少复制的次数,提高效率
  • 按照字节数组读取数据
    • read(byte[] bys):int
      • 将从文件中读取到的字节数据存入此数组中,int表示实际读取到的字节长度
    • write(byte[]):
      • 向文件中写入一个字节数组
    • write(byte[] bys,int index,int len)
      • 向目标文件中写入bys中从index开始的连续len个字节
    • close()方法
      • RandomAccessFile对文件访问的操作全部结束后,调用close()方法
        来释放与其关联的所有系统资源

        文件指针操作

        RandomAccessFile的读写操作都是基于指针的,也就是说总是在指针当前所指向的位置进行读写操作
  • getFilePointer()
    • 该方法用于获取当前RandomAccessFile指针位置
  • seek()
    • 该方法用于移动当前RandomAccessFlie的指针位置
  • skipBytes()
    • 尝试跳过输入的 n 个字节以丢弃跳过的字节。
    • 此方法可能跳过一些较少数量的字节(可能包括零)。这可能由任意数量的条件引起;在跳过 n 个字节之前已到达文件的末尾只是其中的一种可能。
    • 此方法从不抛出 EOFException。返回跳过的实际字节数。如果 n 为负数,则不跳过任何字节。