黑马程序员——第十一篇:File类、方法递归、Io流

本文详细介绍了Java中File类的基本用法及高级应用,包括路径获取、文件操作等,并深入探讨了IO流的概念、分类及具体实现,如字节流与字符流的区别和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a

  href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

1File类获取方法

  通过操作系统中的路径,进行获取

 

  1. String getName()

   获取的是File构造方法中的抽象路径的名字

   new File("XXXXXX")

 

  2. String getPath()

   获取File构造方法中的路径,路径转成字符串

  3. getParent(),getParentFile()

     一组方法,功能完全一样

     获取File构造方法中路径的父路径

     区别:

     getParent() 计算结果数据类型是String类型

     结果只能执行String类方法

     getParentFile()计算结果数据类型是File类型

     结果可以执行File类方法

   4. getAbsolutePath(),getAbsoluteFile()

    一组方法,功能完全一样

    获取File构造方法中的路径的绝对路径

    区别

      getAbsolutePath()计算结果,返回值是String类型

      getAbsoluteFile()计算结果,返回值是File类型

   5. long length()

    获取File构造方法中封装的文件的字节数

   6. long lastModified()

获取File构造方法中封装的文件的最后修改时间毫秒值

2File类高级获取

   1. static File[]  listRoots()

      获取当前操作系统中的根目录

      Window就是盘符

   2. String[] list()

     获取File构造方法中路径的所有子路径和文件

     结果存储字符串数组

     new File ("c:").list()

   3. File[] listFiles()

     获取File构造方法中路径的所有子路径和文件

     结果存储File类型对象的数组

     new File("c:").listFiles()

 

     区别:

       list() 结果只有名字(目录名,文件名)

       listFiles()结果是目录和文件的,全路径名

   4. 文件获取过滤器

     可以获取到需要的文件,不需要的文件直接过滤

     listFiles(FileFilter filter)方法重载形式

     传递过滤器对象

     FileFilter接口,文件过滤器接口,这个接口的实现类对象

     可以传递给listFiles方法

     listFiles(FileFilter实现类对象)

     接口抽象方法

       public boolean accept(File pathname);

     定义接口实现类,重写抽象方法

程序Demo:自定义文件后缀名筛选器

3、方法递归

  1. 递归: 方法自己调用自己, 递归调用

   不是java技术,所有的编码语言,都可以使用

   递归是一种编程技巧

 

  2. 递归注意事项

    A.  递归必须有出口,否则就是死递归

    B.  递归次数不能太多,否则导致内存溢出  10000次基本没有问题

C.  构造方法,不能递归

  3. 程序Demo  删除文件夹


 

4IO流对象概述

    IO流实现设备之间数据传输

    IO Input Output

可以实现上传和下载-互联网事情

5IO流对象分类

    1. 按照流向分类

     输入流和输出流

     Input   Output

     输出流: Java程序向其他设备写数据   write

     输入流: Java程序从其他设备读取数据 read

  2. 按照操作的文件分类

     字节流和字符流

     字节流,每次操作数据中的1个字节, 8个二进制位   byte

     字符流,每次操作数据中的1个字符, 16个二进制位  char

     字节流,可以操作任意文件

     字符流,只能操作文本文件 (记事本,java源代码)

     使用记事本打开后,人类可以看懂

     字节流: JDK1.0, 字符流:JDK1.1 (输出还是输入,必须查询编码表,GBK)

     ASCII,中文GBK(GB2312)  Unicode万国码

  3. 归纳

      字节输出流

         写文件,任意文件

      字节输入流

         读取文件,任意文件

 

      字符输出流

         写文件,文本文件,其他文件不行

      字符输入流

         读取文件,文本文件,其他文件不行

6IO对象继承体系四大抽象基类

    1. 字节输出流抽象基类

      java.io.OutputStream 写文件,类中方法都是写的方法,方法名write

       write(int b) 写单个字节

       write(byte[] b)写字节数组

       write(byte[] b,int off,int length)写字节数组一部分

             参数: off 开始索引  length 写几个

       close() 关闭流,释放资源

    2. 字节输入流抽象基类

      java.io.InputStream 读取文件,类中的方法都是读的方法,方法名read

       int read() 读取单个字节

       int read(byte[] b)读取数据,存储到字节数组

       close() 关闭流,释放资源

    3. 字符输出流抽象基类

      java.io.Writer 写文件,只能写文本文件,方法名字write

       write(int c) 写单个字符

       write(char[] c)字符数组

       write(char[] c,int off,int length)写字符数组一部分

            参数: off开始索引,  length 写几个

       write(String s) 写字符串

       flush() 刷新该流的缓冲区,字符流写数据,必须刷新

       必须刷新,数据才能到达目的地

       close() 关闭此流,要先刷新

    4. 字符输入流抽象基类

      java.io.Reader 读取文件,只能读取文本文件,方法名字read

       int read() 读取单个字符

       int read(char[] c)读取数据,存储字符数组

       close() 关闭此流

       Reader类没有直接读取字符串的方法

       字符串不能界定完整

       write("fghjkl")

       read()

7、字节输出流写文件

    FileOutputStream,写文件的字节输出流

 

    1. 构造方法,写的内容就是这个流的数据目的

      FileOutputStream(File file)传递File对象,包装文件

      FileOutputStream(String filename)传递字符串文件名

      FileOutputStream(File file,boolean)

      FileOutputStream(String filename,boolean)

      boolean表示,文件是不是追加写入

 

  2. 写的方法

      write 用的都是父类OutputStream

      当你用字节流写数据的时候,会出现一个莫名其妙异常

       IOException: 拒绝访问

       两个错误:

          FileOutputStream构造方法中写的是文件夹

           登录Windows权限不足,写文件的位置是c

         程序Demo  FileOutputSream

8、字节输入流读取文件

    FileInputStream 读取文件

 

  1. 构造方法,就是这个流要读取的数据源

      FileInputStream(File file)传递File对象,包装文件

    FileInputStream(String filename)传递字符串文件名

  2. 读取方法 read

   int read() 读单个字节,1个字节,8个二进制

     int返回值说明什么问题

     读取中使用循环

         程序Demo  FileIntputSream


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值