操作系统——File类和InputStream,OutputStream类详解

文章介绍了Java中用于处理文件的File类,包括其定义、属性、构造方法和常用方法,如获取文件路径、创建和删除文件、创建目录等。同时,文章讲解了InputStream和OutputStream这两个用于二进制数据读写的抽象类,以及它们的子类FileInputStream和FileOutputStream在文件读写中的应用。

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

目录

一、File类

1、定义

2、属性

3、构造方法

4、方法

(1)、获取文件路径 

(2)、文件的创建和删除

(3)、目录的创建

二、InputStream和OutputStream

1、InputStream

(1)、FileInputStream

(2)、利用Scanner 进行字符读取

2、OutputStream

(1)、FileOutputStream 


一、File类

1、定义

Java中通过 java.io.File类来对一个文件(包括目录)进行抽象的描述。但有 File 对象,并不代表真实存在该文件。

2、属性

修饰符及类型属性说明
static StringpathSeparator依赖于系统的路径分隔符,String 类型的表示
static charpathSeparator依赖于系统的路径分隔符,char 类型的表示

3、构造方法

签名说明
File(File parent, String child)根据父目录+孩子文件路径,创建一个新的File实例
File(String pathname)根据文件路径创建一个新的File实例,路径可以是绝对路径或者相对路径
File(String parent, String child)根据父目录+孩子文件路径,创建一个新的File实例,父目录用路径表示

4、方法

File构造的方法能够传入一个路径来指定一个文件,这个路径可以是绝对路径也可以是相对路径对象构造好之后, 我们就可以用下面的方法来进行一些具体功能的实现。

修饰符及返回值类型方法签名说明
StringgetParent()返回 File 对象的父目录文件路径
StringgetName()返回 FIle 对象的纯文件名称
StringgetPath()返回 File 对象的文件路径
StringgetAbsolutePath()返回 File 对象的绝对路径
StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径
booleanexists()判断 File 对象描述的文件是否真实存在
booleanisDirectory()判断 File 对象代表的文件是否是一个目录
booleanisFile()判断 File 对象代表的文件是否是一个普通文件
booleancreateNewFile()根据 File 对象,自动创建一个空文件。成功创建后返回true
booleandelete()根据 File 对象,删除该文件。成功删除后返回 true
voiddeleteOnExit()根据 File 对象,标注文件将被删除,删除动作会到JVM 运行结束时才会进行
String[]list()返回 File 对象代表的目录下的所有文件名
File[]listFiles()返回 File 对象代表的目录下的所有文件,以 File 对象表示
booleanmkdir()创建 File 对象代表的目录
booleanmkdirs()创建 File 对象代表的目录,如果必要,会创建中间目录
booleanrenameTo(File dest)进行文件改名,也可以视为我们平时的剪切、粘贴操作
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

(1)、获取文件路径 

 

注:并不要求该文件真实存在

(2)、文件的创建和删除

(3)、目录的创建

 

注:调用mkdir()方法时如果中间目录不存在则无法创建成功;mkdirs()方法可以解决这个问题。

二、InputStream和OutputStream

  • 二进制文件是以字节来读写的,通过InputStream来读,通过OutputStream来写。
  • 文本文件是以字符单位进行读写的,通过Reader来读,通过Writer来写。

注:上述这些都是抽象类因此实际使用往往都需要他们的子类:FileInputStream、FileOutputStream、FileReader、FileWriter来具体实现文件的读写。

1、InputStream

修饰符及返回值类型方法签名说明
intread()读取一个字节的数据,返回 -1 代表已经完全读完了
intread(byte[] b)最多读取 b.length 字节的数据到 b 中,返回实际读到的数量,-1 代表以及读完了
intread(byte[] b,int off, int len)最多读取 len - off 字节的数据到 b 中,放在从 off 开始,返回实际读到的数量,-1 代表以及读完了
voidclose()关闭字节流

InputStream只是一个抽象类,要使用还需要具体的实现类。关于 InputStream 的实现类有很多,基本可以认为不同的输入设备都可以对应一个InputStream 类,我们现在只关心从文件中读取,所以使用FileInputStream类。

(1)、FileInputStream

构造方法

签名说明
FileInputStream(File file)利用 File 构造文件输入流
FileInputStream(String name)利用文件路径构造文件输入流

(2)、利用Scanner 进行字符读取

上述例子中,我们看到了对字符类型直接使用 InputStream 进行读取是非常麻烦且困难的,所以,我们使用一种我们之前比较熟悉的类来完成该工作,就是 Scanner 类。

构造方法说明
Scanner(InputStream is, String charset)使用 charset 字符集进行 is 的扫描读取

2、OutputStream

修饰符及返回值类型方法签名说明
voidwrite(int b)写入要给字节的数据
voidwrite(byte[]
b)
将 b 这个字符数组中的数据全部写入 os 中
intwrite(byte[] b, int off,int len)将 b 这个字符数组中从 off 开始的数据写入 os 中,一共写 len 个
voidclose()关闭字节流
voidflush()重要:我们知道 I/O 的速度是很慢的,所以,大多的 OutputStream 为了减少设备操作的次数,在写数据的时候都会将数据先暂时写入内存的一个指定区域里,直到该区域满了或者其他指定条件时才真正将数据写入设备中,这个区域一般称为缓冲区。但造成一个结果,就是我们写的数据,很可能会遗留一部分在缓冲区中。需要在最后或者合适的位置,调用 flush(刷新)操作,将数据刷到设备

说明OutputStream 同样只是一个抽象类,要使用还需要具体的实现类。我们现在还是只关心写入文件中,所以使用 FileOutputStream

(1)、FileOutputStream 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值