Java17-day08【File(创建和删除文件、判断和获取功能、遍历目录)、IO流(字节流写数据、异常处理、字节流读数据、复制文本文件、复制图片)】

   

目   录

01_File类概述和构造方法

1.1、File类概述和构造方法

02_File类创建功能

1.2、File类创建功能

03_File类判断和获取功能

1.4、File类判断和获取功能

04_File类删除功能

1.3、File类删除文件

05_递归

1.5、递归

06_递归求阶乘

案例:递归求阶乘

07_遍历目录

案例:遍历目录

08_IO流概述和分类

2.1、IO流概述和分类

09_字节流写数据

2.2、字节流写数据

10_字节流写输入的三种方式

2.3、字节流写数据的3种方式

11_字节流写数据的两个小问题

2.4、字节流写数据的两个小问题

1、字节流写数据如何实现换行

2、字节流写数据如何实现追加写入

12_字节流写数据加异常处理

2.5、字节流写数据加异常处理

13_字节流读数据(一次读一个字节数据)

2.6、字节流读数据(一次读一个字节数据)

14_字节流复制文本文件

案例:复制文本文件

15_字节流读数据(一次读一个字节数组数据)

2.6、字节流读数据(一次读一个字节数组数据)

16_字节流复制图片

案例:复制图片


01_File类概述和构造方法

1.1、File类概述和构造方法

02_File类创建功能

1.2、File类创建功能

File类创建功能:
    public boolean createNewFile():当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件。
        如果文件不存在,就创建文件,并返回true
        如果文件存在,就不创建文件,并返回false

    public boolean mkdir():创建由此抽象路径名命名的目录。
        如果目录不存在,就创建目录,并返回true
        如果目录存在,就不创建目录,并返回false

    public boolean mkdirs():创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
        如果目录不存在,就创建目录,并返回true
        如果目录存在,就不创建目录,并返回false

 需要处理异常: throws IOException

 文件创建成功

03_File类判断和获取功能

1.4、File类判断和获取功能

File类的判断和获取功能:

  判断功能
    public boolean isDirectory():测试此抽象路径名表示的File是否为目录
    public boolean isFile():测试此抽象路径名表示的File是否为文件
    public boolean exists():测试此抽象路径名表示的File是否存在

  获取功能

    public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
    public String getPath():将此抽象路径名转换为路径名字符串
    public String getName():返回由此抽象路径名表示的文件或目录的名称

    public String[] list():返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
    public File[] listFiles():返回此抽象路径名表示的目录中的文件和目录的File对象数组

04_File类删除功能

1.3、File类删除文件

File类删除功能:
    public boolean delete():删除由此抽象路径名表示的文件或目录

绝对路径和相对路径的区别

  • 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:E:\itcast\java.txt
  • 相对路径:必须使用取自其他路径名的信息进行解释。例如:myFile\java.txt

删除目录的注意事项:

如果一个目录中有内容(目录,文件),不能直接删除。应该先删除目录中的内容,最后才能删除目录。

点击 模块,打开模块所在的目录:

    

   java01.txt文件,在myFile模块目录下。

创建文件前,需要创建目录。 

05_递归

1.5、递归

老和尚给小和尚讲故事,故事是:从前有座山,山里有个庙,庙里有个老和尚,老和尚给小和尚讲故事,故事是...

递归概述:以编程的角度来看,递归指的是方法定义中调用方法本身的现象。

解决递归问题的思路:

把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。

递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算。

递归解决问题要找到两个内容:

  • 递归出口:否则会出现内存溢出。
  • 递归规则:与原问题相似的规椟较小的问题。

06_递归求阶乘

案例:递归求阶乘

07_遍历目录

案例:遍历目录

08_IO流概述和分类

2.1、IO流概述和分类

IO流介绍(概述)

  • IO:输入/输出(Input/Output)
  • 流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为,流的本质是数据传输。
  • IO流就是用来处理设备间数据传输问题的。

      常见的应用:文件复制;文件上传;文件下载

IO流的分类

  • 按照数据的流向

      输入流:读数据

      输出流:写数据

  • 按照数据类型来分

      字节流

           字节输入流;字节输出流

      字符流

           字符输入流;字符输出流

一般来说,我们说IO流的分类是按照数据类型来分的。那么这两种流都在什么情况下使用呢?

  • 如果数据通过Window自带的记事本软件打开,我们还可以读懂里面的内容,就使用字符流,否则使用字节流。如果你不知道该使用哪种类型的流,就使用字节流!

IO流的使用场景

  • 如果操作的是纯文本文件,优先使用字符流
  • 如果操作的是图片、视频、音频等二进制文件。优先使用字节流
  • 如果不确定文件类型,优先使用字节流。字节流是万能的流 

   

09_字节流写数据

2.2、字节流写数据

字节流抽象基类

  • InputStream:这个抽象类是表示字节输入流的所有类的超类。
  • OutputStream:这个抽象类是表示字节输出流的所有类的超类。
  • 子类名特点:子类名称都是以其父类名作为子类名的后缀。

FileOutputStream:文件输出流用于将数据写入File(字节输出流)

  • FileOutputStream(String name):创建文件输出流以指定的名称写入文件。

使用字节输出流写数据的步骤

  1. 创建字节输出流对象(调用系统功能创建了文件,创建字节输出流对象,让字节输出流对象指向文件)
  2. 调用字节输出流对象的写数据方法
  3. 释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)

FileOutputStream​(String name)    创建文件输出流以指定的名称写入文件。

10_字节流写输入的三种方式

2.3、字节流写数据的3种方式

构造方法:
    FileOutputStream​(String name):创建文件输出流以指定的名称写入文件
    FileOutputStream​(File file):创建文件输出流以写入由指定的 File对象表示的文件

11_字节流写数据的两个小问题

2.4、字节流写数据的两个小问题

字节流写数据如何实现换行

  • windows:\r\n
  • linux:\n
  • mac:\r

字节流写数据如何实现追加写入

  • public FileOutputStream(String name,boolean append)
  • 创建文件输出流以指定的名称写入文件。如果第二个参数为true ,则字节将写入文件的末尾而不是开头。

1、字节流写数据如何实现换行

2、字节流写数据如何实现追加写入

12_字节流写数据加异常处理

2.5、字节流写数据加异常处理

finally:在异常处理时提供finally块来执行所有清除操作。比如说IO流中的释放资源。

特点:被finally控制的语句一定会执行,除非JVM退出。

try {
    FileOutputStream fos = new FileOutputStream("myByteStream\\fos.txt");
    fos.write("hello".getBytes());
    fos.close();
} catch (IOException e) {
    e.printStackTrace();
}

13_字节流读数据(一次读一个字节数据)

2.6、字节流读数据(一次读一个字节数据)

需求:

把文件fos.txt中的内容读取出来在控制台输出。

FileInputStream:从文件系统中的文件获取输入字节(字节输入流

FileInputStream(String name):通过打开与实际文件的连接来创建一个FileInputStream,该文件由文件系统中的路径名name命名

字节输入流 读取数据的步骤:

  1. 创建字节输入流对象
  2. 调用字节输入流对象的读数据方法
  3. 释放资源

14_字节流复制文本文件

案例:复制文本文件

15_字节流读数据(一次读一个字节数组数据)

2.6、字节流读数据(一次读一个字节数组数据)

需求:

把文件fos.txt中的内容读取出来在控制台输出。

一次读一个字节数组的方法:

  • public int read(byte[] b):从输入流读取最多b.length个字节的数据
  • 返回的是读入缓冲区的总字节数,也就是实际的读取字节个数

使用字节输入流 读数据的步骤:

  1. 创建字节输入流对象
  2. 调用字节输入流对象的读数据方法
  3. 释放资源

String​(byte[] bytes, int offset, int length):通过使用平台的默认字符集解码指定的字节子阵列来构造新的String。

根据byte数组实际长度,构造字符串。如果byte数组的数组长度非常长,而实际读取到的byte数组很短,会造成空间浪费。

16_字节流复制图片

案例:复制图片

 

猜你喜欢

转载自blog.csdn.net/weixin_44949135/article/details/107918076
今日推荐