A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-4-27 11:14 编辑

IO流第一天学习笔记

Day 09java.io.File类:
  • 文件和目录的路径名的抽象表现形式
  • 构造方法(指向,不会创建文件)


    • File File(String pathname):使用指定路径名创建一个File对象
    • File File(String parent, String child):根据指定的父路径和文件路径创建File对象
    • File File(File parent, String child):根据指定的父路径File对象和文件路径创建File对象



  • 常用成员方法


    • 创建:


      • boolean creatNewFile():创建一个新文件.返回是否创建成功
      • boolean mkdir():创建目录,返回是否创建成功
      • boolean mkdirs():创建多层目录,包括指定路径中缺少的父级目录.返回是否创建成功


        • 注意:创建目录只创建目录,不会创建文件.




    • 删除


      • boolean delete():删除文件或目录,返回删除是否成功,删除不经过回收站



    • 获取


      • String getPath():获取创建File对象时使用的路径
      • String getAbsolutePath():获取File对象的绝对路径字符串
      • File getAbsoluteFile():获取包含绝对路径的File对象
      • String getParent():获取File对象的父路径字符串
      • File getParentFile():获取File对象的父路径File对象
      • String getName():获取File对象的文件名或目录名
      • long length():获取文件大小(只能是文件,如果不存在则返回0L
      • long lastModified():获取文件上次修改时间



    • 判断


      • boolean exists():判断是否存在
      • boolean isAbsolute():判断创建File对象时是否使用的是绝对路径
      • boolean isDirectory():判断是否为目录
      • boolean isFile():判断是否为文件
      • boolean isHidden():判断是否隐藏



    • 重要获取功能


      • String[] list():获取当前路径下所有文件和目录名称
      • File[] listFiles():获取当前路径下所有文件和目录的File对象.File对象必须是目录
      • static File[] listRoots():返回系统所有根路径




  • 字节流


    • InputStream


      • 操作文件的子类: FileInputStream类


        • int read(): 读取一个字节, 读完返回-1


          • 注意返回值是int类型, 而不是byte
          • int read(byte[] b): 读取字节到数组中, 返回读取的长度. 读完返回-1
          • close(): 释放资源




      • OutputStream


        • 操作文件的子类: FileOutputStream类


          • void write(byte b): 写一个字节
          • void write(byte[] b, int offset, int len): 从字节数组的指定索引开始写入指定长度个字节
          • close(): 释放资源




      • 注意: 他们读写的是: byte, byte[]




  • 路径


    • 绝对路径:以盘符开头
    • 相对路径:以文件或者斜杠开头


      • 项目根目录:.





重点练习
  • listFile()相关的三个练习


    • 递归打印所有目录下的.java文件
      /*
      使用递归来完成输出指定目录下所有的java文件名(包含子目录)
      */
      public class Test {

          public static void main(String[] args) {
              File srcDir = new File("src");
              printJavaFile(srcDir);
          }
         
          // 定义方法: 打印某个目录中的Java文件名
          public static void printJavaFile(File dir) {
              // 健壮性判断: 用于确认传入的确实是目录
              if (!dir.isDirectory()) {
                  return;  // 如果传入的不是目录, 则直接结束方法
              }
              
              // 如果能执行到这里, 则传入的肯定是目录, 获取该目录中的所有子文件和子目录
              File[] files = dir.listFiles();
              // 遍历所有file对象, 判断是文件还是目录
              for (File childFile : files) {
                  // 判断是否是文件
                  if (childFile.isFile()) {
                      // 是文件. 获取文件名并判断是否是java文件, 是则打印
                      if (childFile.getName().endsWith(".java")) {
                          System.out.println(childFile.getName());
                      }
                  } else if (childFile.isDirectory()) {
                      // 是目录. 则需要打印该目录中的Java文件名.
                      // 我们当前定义的方法就可以打印指定目录中的Java文件名, 所以直接调用当前方法, 传入该子目录
                      printJavaFile(childFile);
                  }
              }
          }
      }
    • 递归删除目录
    • 递归复制目录




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马