[Java基础] IO流

​我们目前的编程中,是怎么样存储数据的?弊端是什么?


​数据希望永久存储,怎么办?

 下面让我们进入IO流寻找答案。

活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人

File类概述

File类的对象代表操作系统的文件(文件、文件夹),File类在java.io.File包下。

File类提供了诸如:创建文件对象代表文件,获取文件信息(大小、修改时间)、删除文件、创建文件(文件夹)等功能 

IO流

输入输出流:

常见的输入:键盘输入等;

常见的输出:文件、打印机等。

 关于File、IO流,需要学会什么

File类创建对象

方法名称

说明

public File​(String pathname)

根据文件路径创建文件对象

public File​(String parent, String child)

根据父路径名字符串和子路径名字符串创建文件对象

public File​(File  parent, String child)

根据父路径对应文件对象和子路径名字符串创建文件对象

注意:

File对象可以定位文件和文件夹 File封装的对象仅仅是一个路径名,这个路径可以是存在的,也可以是不存在的。(注意异常处理) 

 绝对路径和相对路径

File类的判断文件类型、获取文件信息功能

方法名称

说明

public boolean isDirectory()

判断此路径名表示的File是否为文件夹

public boolean isFile()

判断此路径名表示的File是否为文件

public boolean exists()

判断此路径名表示的File是否存在

public long length()

返回文件的大小(字节数量)

public String getAbsolutePath()

返回文件的绝对路径

public String getPath()

返回定义文件时使用的路径

public String getName()

返回文件的名称,带后缀

public long lastModified()

返回文件的最后修改时间(时间毫秒值)

 File类创建文件的功能

方法名称

说明

public boolean createNewFile()

创建一个新的空的文件

public boolean mkdir()

只能创建一级文件夹

public boolean mkdirs()

可以创建多级文件夹

 File类删除文件的功能

方法名称

说明

public boolean delete​()

删除由此抽象路径名表示的文件或空文件夹

注意:delete方法默认只能删除文件和空文件夹,delete方法直接删除不走回收站 

File类的遍历功能

方法名称

说明

public String[] list()

获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。

public File[] listFiles()(常用)

获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点)

listFiles方法注意事项

  • 当文件不存在时或者代表文件时,返回null
  • 当文件对象代表一个空文件夹时,返回一个长度为0的数组
  • 当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
  • 当文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
  • 当没有权限访问该文件夹时,返回null 

 IO流概述

I表示intput,把硬盘文件中的数据读入到内存的过程,称之输入,负责读。

O表示output,把内存中的数据写出到硬盘文件的过程,称之输出,负责写。

 IO流的分类

 流的四大类

  • 字节输入流:以内存为基准,来自磁盘文件/网络中的数据以字节的形式读入到内存中去的流称为字节输入流。
  • 字节输出流:以内存为基准,把内存中的数据以字节写出到磁盘文件或者网络中去的流称为字节输出流。
  • 字符输入流:以内存为基准,来自磁盘文件/网络中的数据以字符的形式读入到内存中去的流称为字符输入流。
  • 字符输出流:以内存为基准,把内存中的数据以字符写出到磁盘文件或者网络介质中去的流称为字符输出流。

 

 

常用实现类

 

文件字节输入流:FileInputStream

作用:以内存为基准,把磁盘文件中的数据以字节的形式读取到内存中去。 

构造器

说明

public FileInputStream​(File file)

创建字节输入流管道与源文件对象接通

public FileInputStream​(String pathname)

创建字节输入流管道与源文件路径接通

方法名称

说明

public int read()

每次读取一个字节返回,如果字节已经没有可读的返回-1

public int read(byte[] buffer)

每次读取一个字节数组返回,如果字节已经没有可读的返回-1

 文件字节输入流:FileInputStream

作用:以内存为基准,把磁盘文件中的数据以字节的形式读取到内存中去。

方法名称

说明

public int read()

每次读取一个字节返回,如果字节已经没有可读的返回-1

public int read(byte[] buffer)

每次使用字节数组来读取数据,返回读取的字节个数,如果没有可读返回-1

 1、使用字节流读取中文输出乱码,如何使用字节输入流读取中文输出不乱码呢?

定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。

2、直接把文件数据全部读取到一个字节数组可以避免乱码,是否存在问题?

如果文件过大,字节数组可能引起内存溢出。

 读取文件的全部字节

直接把文件数据全部读取到一个字节数组可以避免乱码,是否存在问题?

如果文件过大,字节数组可能引起内存溢出。

 文件字节输出流:FileOutputStream

作用:以内存为基准,把内存中的数据以字节的形式写出到磁盘文件中去的流。

构造器

说明

public FileOutputStream​(File file)

创建字节输出流管道与源文件对象接通

public FileOutputStream​(File file,boolean append)

创建字节输出流管道与源文件对象接通,可追加数据

public FileOutputStream​(String filepath)

创建字节输出流管道与源文件路径接通

public FileOutputStream​(String filepath,boolean append)

创建字节输出流管道与源文件路径接通,可追加数据

 

文件拷贝

 需求: 把某个视频复制到其他目录下的“b.avi”

思路:

  1. 根据数据源创建字节输入流对象
  2. 根据目的地创建字节输出流对象
  3. 读写数据,复制视频
  4. 释放资源

 资源释放的方式

 

tips:

  • JDK 7 以及 JDK 9的()中只能放置资源对象,否则报错
  • 什么是资源呢?

        资源都是实现了Closeable/AutoCloseable接口的类对象 

 

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸海鹿林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值