Java FIle类和IO流

**File类**

- java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

```java
构造方法:
public File(String pathname):通过将给定的路径名字符串转化为抽象路径名来创建新的File实例。
参数:
String pathname:字符串的路径名称
路径是可以是以文件结尾,也可以是以文件夹结尾。
路径可以是相对路径,也可以是绝对路径
路径可以是存在,也可以是不存在
创建File对象,只是把字符串路径封装为File对象,不考虑路径的真假情况。
public File(String parent,String child):从父路径名字符串和子路径名字符串创建新的File实例。
参数:把路径分成了两部分
String parent:父路径
String child:子路径
好处:
父路径和子路径,可以单独书写,使用起来比较灵活;父路径和子路径都可以变化。
public File(File parent,String child):从父抽象路径名和子路径名字符串创建新的File实例
参数:把路径分成了两部分
File parent:父路径
String child:子路径
好处:
父路径和子路径,可以单独书写,使用起来比较灵活;父路径和子路径都可以变化。
父路径是File类型,可以使用File的方法对路径进行一些操作,再使用路径创建对象。
java把电脑中的文件或文件夹(目录)封装为一个File类,我们可以使用File类对文件和文件夹进行操作。
我们可以使用File类的方法
创建一个文件/文件夹
删除文件/文件夹
获取文件/文件夹
判断文件/文件夹是否存在
对文件夹进行遍历
获取文件的大小
File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法
分隔符
static String pathSeparator 与系统有关的路径分隔符,为了方便,他被表示成为一个字符串。
static char pathSeparatorChar 与系统有关的路径分隔符。
static String separator 与系统有关的默认名称分割符,为了方便,它被表示为一个字符串。
static char separatorChar 与系统有关的默认名称分隔符
常用方法
获取功能的方法:
public String getAbsoluPath():返回File的绝对路径名字符串。
public String getPath():将此File转换为路径名字符串
public String getName():返回此File表示的文件或目录名称。
pubilc long length():返回此File表示的文件的长度。
注意
文件夹是没有大小概念的,不能获取文件夹的大小
如果构造方法中给出的路径不存在,那么length返回0
判断功能的方法:
public boolean exists():此File表示的文件或目录是否实际存在。
public boolean isDirectory():此File表示的是否为目录。
public boolean isFile():此File表示的是否为文件。
注意:
电脑的硬盘中只有文件/文件夹。两个方法是互斥的
这两个方法的使用前提,路径必须是存在的,否则都返回false
创建删除功能的方法
public boolean creatNewFile():当且仅当具有该名称的文件尚不存在时,创建一个新的空的文件。
创建文件的路径和名称在构造方法中给出(构造方法的参数)
返回值:布尔值
true:文件不存在,创建文件,返回true
false:文件存在,不会创建,返回false
注意:
1.此方法只能创建文件,不能创建文件夹
2.创建文件的路径必须存在,否则抛出异常。
public boolean delete():删除此File表示的文件和目录。
返回值:布尔值
true:文件/文件夹成功删除
false:文件夹中有内容,不会删除返回false;构造方法中路径不存在返回false
注意:
delete方法时直接在硬盘删除文件/文件夹,不走回收站。
public boolean mkdir():创建此File表示的目录
public boolean mkdirs():创建此File表示的目录,包括任何必须但不存在的父目录。(既可以创建单级文件夹,也可以创建多级文件夹)
创建文件的路径和名称在构造方法中给出(构造方法的参数)
返回值:布尔值
true:文件夹不存在,创建文件夹
false:文件夹存在,不会创建;当构造方法中的路径不存在时,也返回false
注意:
此方法只能创建文件夹,不能创建文件
路径
绝对路径:是一个完整的路径,以盘符开始的路径
相对路径:是一个简化路径,相对于当前项目的根目录。
注意:
1.路径不区分大小写。
2.路径中的文件名称分隔符windows使用反斜杠\ 反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠。

File类遍历(文件夹)目录功能:
public String[] list():返回一个String数组,表示该File目录中的子文件或目录。
public File[] listfiles():返回一个File数组,表示该File目录中的所有子文件和目录。
注意:
两个方法遍历的都是构造方法中给出的目录。
如果构造方法中给出的目录的路径不存在,会抛出空指针异常
如果构造方法中给出的路径不是一个目录,也会抛出空指针异常

```

```java
IO
java.io.OutputStream:字节输出流
此抽象类是表示输出字节流的所有类的超类
定义了一些子类共性的成员方法:
public void close():关闭此输出流并释放与此流相关变量的任何系统资源
public void flush():刷新此输出流并强制任何缓冲的输出字节被写出。
public void write(byte[] b):将 b.length 字节从指定的字节数组写入此输出流
一次写多个字节:
如果写的第一个字节是正数(0-127),那么显示的时候会查询ASCII表
如果写的第一个字节是负数,那么第一个字节会和第二个字节,两个字节组成一个中文显示,查询系统默认码表(GBK)
public void write(byte[] b,int off,int len):从指定的字节数组写入len字节,从偏移量off开始输出到此输出流。
参数:
int off:数组的开始索引
int len:写几个字节
public abstract void write(byte[ b):将指定的字节输出流
java.io.FileOutputStream extends OutputStream
FileOutputStream:文件字节输出流
作用:将内存中的数据写入到硬盘的文件中。
构造方法:
FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的文件输出流
FileOutputStream(File file):创建一个向指定file对象表示的文件中写入数据的文件输出流
参数:写入数据的目的地
String name:目的地是一个文件的路径
File file:目的地是一个文件
构造方法的作用:
1.会创建一个FileOutputStream对象
2.会根据构造方法中传递的文件/文件路径,创建一个空的文件
3.会把FileOutputStream对象指向创建好的文件。
写入数据的原理(内存-->硬盘)
java程序-->JVM(Java虚拟机)-->os(操作系统)-->os调用写数据的方法-->把数据写入到文件中
字节输出流的使用步骤:
1.创建一个FileOutputStream对象,构造方法中传递写入数据的目的地
2.调用FileOutputStream对象中的方法writem,把数据写入到文件中。
3.释放资源(流使用会占有一定的内存,使用完毕要把内存清空,提供程序的效率)
追加写/续写:使用两个参数的构造方法
FileOutputStream(String name,boolean append):创建一个向具有指定的name的文件中写入数据的文件输出流
FileOutputStream(File file,boolean append)创建一个向指定file对象表示的文件中写入数据的文件输出流
参数:
String name,File file 写入数据的目的地
boolean append 追加写开关
true:创建对象不会覆盖源文件,继续在文件的末尾追加写数据
false:创建一个新的文件,覆盖原文件
写换行:
windows:\r \n
linux: /n
mac: /r

```

```java
IO
java.io.InputStream:字节输入流
此抽象类是表示字节输入流的所有类的超类

定义了所有子类共性的方法:
int read():从输入流中读取数据的下一个字节
int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中
void close():关闭此输入流并释放与该流关联的所有系统资源。

java.io.FileInputStream extends InputStream
FileInputStream:文件字节输入流
作用:把硬盘文件中的数据,读到内存中使用。

构造方法:
FileInputStream(String name)
FileInputStream(File file)
参数:读取文件的数据源
String name:文件的路径
File file:文件
构造方法的作用
1.会创建一个FileInputStream对象
2.会把FileInputStream对象指定到构造方法中要读取的文件

读取原理:
java程序-->JVM-->OS-->OS读取数据的方法-->读取文件

字节输入流的使用步骤:
1.创建FileInputStream对象,构造方法中绑定要读取的数据源
2.使用FileInputStream对象中的方法read,读取文件
3.释放资源

字节流一次读取多个字节的方法:
int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中
方法中参数byte[] b的作用:
1.起到缓冲作用,存储每次读取到的多个字节
2.数组的长度一般定义为1024(1kb)或者1024的整数倍
方法返回值int作用:
返回的是每次读取的有效字节个数

```

```java
java.io.Reader:字符输入流,是字符输入流的最顶层父类,定义了一些共性的成员方法,是一个抽象类。

共性方法:
int read():读取单个字符并返回
int read(char[] cbuf):一次读取多个字符,将字符读入数组。
void close():关闭该流并释放与之相关联的所有资源

java.io.FileReader extends InputStreamReader extends Reader
FileReader:文件字符输入流
作用:把硬件文件中的数据以字符的方式读取到内存中

构造方法:
FileReader(String filename):
FileReader(File file)
参数:读取文件的数据源
String fileName:文件路径
File file;一个文件
FileReader构造方法的作用:
1.创建一个FileReader对象
2.会把FileReader对象指向要读取的文件

字符输入流的使用步骤:
1.创建FileReader对象,构造方法中绑定要读取的数据源
2.使用FileReader对象中的方法read读取文件
3.释放资源
```

```java
java.io.writer:字符输出流,是所有字符输出流的最顶层父类,是一个抽象类

共性方法:
void write(int c):写入单字符
void write(char[] cbuf):写入字符数组
abstract void write(char[] cbuf,int off,int len):写入字符数组的某一部分,off数组的开始索引,len写的字符个数
void write(String str):写入字符串
void write(String str,int off,int len):写入字符串的某一部分,off字符串的开始索引,len写的字符个数
void flush():刷新该流的缓冲
void close():关闭此流,但要先刷新它。

java.io.FileWriter extends OutputStreamWriter extends Writer
FileWriter:文件字符输出流
作用:把内存中的数据写入到硬盘文件中

构造方法:
FileWriter(File file):根据给定的File对象构造一个FileWriter对象
FileWriter(String fileName):根据给定的文件名构造一个FileWriter对象。
参数:写入数据的目的地
String fileName:文件的路径
File file:是一个文件
构造方法的作用:
1.会创建一个FileWriter对象
2.会根据构造方法中传递的文件/文件的路径,创建文件
3.会把FileWriter对象指向创建好的文件

续写/换行
续写,追加写:使用两个参数的构造方法
FileWriter(String fileName,boolean append)
FileWriter(File file,boolean append)
参数:
String fileName,File file:写入数据的目的地
boolean append:续写开关
true:不会创建新的文件覆盖源文件,可以续写;
false:创建新的文件覆盖源文件。
换行:换行符号
windows:\r \n
linux: /n
mac: /r
```

**以上是关于File类和IO流的笔记分享**

 

猜你喜欢

转载自www.cnblogs.com/haoshaoqian/p/12891734.html