使用Java实现面向对象_第八章_File I_O(小结)

8.1 操作文件或目录的属性

8.1.1 使用File类操作文件或目录属性

首先学习如何使用File类操作文件或目录。

File对象即可也表示文件,也可表示目录。在程序中,一个File对象可以代表一个文件或目录。利用它可用来对文件或目录进行基本操作。它可以查出与文件相关的信息,如名称,最后修改日期、文件大小等。

创建一个File对象的语法格式如下:

File file = new File(String pathName);

其中,pathName是指文件的路径。

File对象是Java.io包中引用磁盘文件的唯一对象。File类仅仅是描述File对象的属性,而并未说明数据是如何存储的。File类提供了一些重要的方法来管理文件或目录的属性,常用的方法如表:

File类的常用方法

方法名称

说明

boolean exists()

判断文件或目录是否存在

boolean isFile()

判断是否是文件

boolean isDirectory()

判断是否是目录

String getPath()

返回此对象表示的文件的相对路径名

String getAbsolutePath()

返回此对象表示的文件的绝对路径名

String getName()

返回此对象表示的文件或目录的名称

boolean delete()

删除此对象指定的文件或目录

boolean createNewFile()

创建名称的空文件,不创建文件夹

long length()

返回文件的长度,单位为字节,若文件不存在,则返回OL

8.2 Java

         流,是指一连串的流动字符,是以先进先出的方式发送和接受数据的通道。

         一个流是一个输入设备或输出设备的抽象表示。可以写数据到流中,也可以从流中毒数据。可以把流想象为程序中流进或流出的一个字节序列。

         流具有明确的方向性,当向一个流写入数据时,这个流被称为输出流,输出流可以将信息送往程序的外部,如硬盘上的文件,打印机上的文件等。

(1)      按照流的流向进行划分,可以分为输入流和输出流,如图:

            ↑→→→输出流→→OutputStramWriter作为基类

按流向区分→↑

            ↓→→→输入流→→InputStramReader作为基类

输入流:只能从中读取数据,而不能向其中写入数据。

输出流:只能向其中写入数据,而不能从中读取数据。

(2)      字节流操作的最小数据单元为8为的字节,而字符流操作的最小数据单元是16位的字符。字节流和字符流的区分非常简单,字节流建议用二进制数据,而字符流用于文本,他们的用法几乎完全一样。

8.3 读写文本文件

8.3.1 使用字节流读写文本文件

(1)字节输入流InputStream类

字节输入流InputStream的作用就是将文件中的数据输入到内部存储器(简称内存)中,他提供了一系列和读取数据有关的方法,常用的方法如表:

方法名称

说明

int read()

读取一个字节数据,从输入流中读取一个八位的字节,把它转换为0~255的整数返回

int read(byte[] b)

将数据读取到字节数组中,将数据读取到字数组中,返回实际读取的字节数

int read(byte[]b,int off,int le)

从输入流中读取最多len长度的字节,保存到字节数组b中,保存的位置从off开始。保存位置0开始。

void close()

关闭输入流

int available()

返回输入流读取的估计字节数

无参的read()方法从输入流读取一个八位的字节,把它转换为0~255的整数返回。

         有参的两个read()方法从输入流批量读取若干个字节。在从文件或键盘读数据时,采用read(byte[]b)或read(byte[]b,int off,int len)方法可以减少进行物理读文件或键盘的次数,提高输入/输出操作效率。

(2)字节输入流FileInputStream类

在实际应用中,我们通常用InputStream的子类FileInputStream类来实现文本文件内容的读取,常用的构造方法有一下两个。

1)      FileInputStream(File file)。其中file指定文件数据源。使用此构造方法创建文件输入流对象。

2)      FileInputStream(String name)。其中name指定文件数据源,包含路径信息。使用此构造方法创建文件输入流对象。

(3)      使用FileInputStream读取文件

使用FileInputStream读取文本文件的具体步骤如下。

1)      引入相关类。

2)      创建一个文件输入流对象。

3)      利用文件输入流的方法读取文本文件的数据。

4)      关闭文件输入流对象。

8.3.2  使用字节流写文本文件

(1)字节输出流OutputStream类

         字节输出流OutputStream类的作用是把内存中的数据输出到文件中,他提供了一系列象文件中写数据的有关方法,常用的方法如表。

OutputStream类的常用方法

方法名称

说明

Void write(int c)

写入一个字节数据

Void write(byte[]buf)

写入数组buf的所有字节

Void write(byte[]b,int off,int len)

将字节数组中从off位置开始,长度为len的字节数据输出到输出流中

Void close()

关闭输出流

 

(2)字节输出流FileOutputStream类

在实际应用中,我们通常使用OutputStream的子类FileOutputStream类来实现向文本文件写入数据,常用的构造方法有一下三个。

1)      FileOutputStream(File file)。其中name指定文件目标数据源,包含路径信息。使用此构造方法创建文件输出流对象。

2)      FileOutputStream(String name)。其中name指定文件目标数据源,包含路径信息。使用此构造方法创建文件输出流对象。

3)      FileOutputStream(String name,boolean append)。其中name指定文件目标数据源,包含路径信息。append表示是否在文件末尾添加数据。若设置为true,则在末尾添加数据。使用此构造方法创建文件输出流对象。

(3)使用FileOutputStream写文本文件

使用FileOutputStream向文本文件中写入数据的具体使用步骤如下。

1)      引入相关的类。

2)      构造一个文件输出流对象。

3)      利用文件输出流的方法把数据写入文本文件中。

4)      关闭文件输出流。

8.3.4 使用字符流读取文本文件

         1.字符输入流Reader类

Reader类是读取字符流的抽象类,他提供常用的方法,如表:

方法名称

说明

int read()

从输入流中读取单个字符

int read(byte[] c)

从输入流中读取c.length长度的字符,保存字符数组c中,返回实际读取的字符数

read(char[] c,int off,int len)

从输入流中读取最多的len长度的字符,保存字符数组c中,返回实际读取的字符长度

void close()

关闭流

 

         2.字符输入流FileReadaer类

                   FileReader类是Reader的子类。

         3.使用FileReader读取文件

                   使用字符流类FileReader读取文本文件的具体步骤如下。

1)      引入相关类。

2)      创建一个FileReader对象

3)      利用FileReader类的方法读取文本文件的数据

4)      关闭相关的流对象

4.字符输入流BufferedReader类

         BufferedReader类是Reader类的子类,他与FileReader类的区别在于,BufferedReaderler类带有缓冲区,它可以先把一批数据读到缓冲区,接下来的读操作都是缓冲区获取数据,避免每次都从数据源读取数据进行字符编码转换,从而提高读取操作效率。BufferedReader类常用的构造方法格式。

5.使用FileReader和BufferedReadre读取文本文件

         使用字符流类BufferedReader和FileReader读取文本文件的具体步骤。

1)      引入相关的类

2)      创建一个BufferedReader对象

3)      利用BufferedReader类的方法读取文本文件的数据

4)      关闭相关的流。

8.3.5 使用字符流写文本文件

1.字符输出流Writer类

         Wirite类是向文件写入数据的字符流,它提供了常用的方法,如表:

Writer类常用方法

方法名称

说明

write(String str)

将str字符串里的包含字符输出到指定的输出流中

write(String str,int off,int len)

将str字符里从off位置开始长度为len的字符输出到输出流中

void close()

关闭输出流

void flush()

刷新输出流

 

2.字符输出流FileWrite类

         FileWriter类是Reader饿子类,常用的构造方法格式如下:

                   FileWriter (String fileName)

3.使用FileWrite写文本文件

         使用字符流类FileWriter将数据源写入到文本文件的具体操作步骤如下:

1)      引入相关的类

2)      创建一个FileWriter对象

3)      利用FileWriter类的方法写文本文件

4)      相关流对象的清空和关闭

4.字符输出流BufferedWrite类

         BuffereadWriter是Writer类的子类。BufferedWriter与BufferedReader的流方向正好相反,BufferedWriter是把一批数据写到缓冲区,当缓冲区满的时候,再把缓冲区的数据写到字符输出流中。这可以避免每次都执行物理写操作,从而提高输入/输出操作的效率。

5.使用BufferedWriter和FileWriter写文本文件

         1) 引入相关的类

         2) 构造一个BufferedWriter对象

         3) 利用BufferedWriter类的方法写文本文件

         4) 相关流对下岗的清空和关闭

8.4 二级制文件的读写

8.4.1 使用字节流类DataInputStream读二进制文件

         DataInputStream类是FileInputStream的子类,他是FileInputStream类的扩展,利用DataInputStream类读取二进制文件的实现步骤其实与FileInputStream类读取文本文件的步骤极其相似,而是还要用到FileInputStream类。具体步骤如下:

1)      引入相关的类

2)      构造一个数据输入流对象

3)      利用数据输入流类的方法读取二进制文件的数据

4)      关闭数据输入流

8.4.2 使用字节流类DataOutputStream写二进制文件

DataOutputStream类是FileOutputStream的子类,他是FileOutputStream类的扩展。利用DataOutputStream类写二进制文件的实现步骤其实与FileOutputStream类写文本文件的步骤极其相似。而且还要用到FileOutputStream类。具体步骤如下:

1)      引入相关的类

2)      构造一个数据输出流对象

3)      利用数据输出流类的方法写二进制文件的数据

4)      关闭数据输出流

 

 

本章总结

1.File类用于访问文件或目录的属性。

2.流是指一连串流动的字符,是以先进先出额方式发送信息的通道。程序和数据源之间是通过流联系起来的。

3.流可以分为输入流和输出流,也可以分为字节流和字符流。

4.FileInputStream和FileOutputStream以字节流的方法读写文本文件。

5.BufferedReader和BufferedWriter以字符流的方法是读写文本文件,而且效率更高。

6.DataInputStream和DataOutputStream可用读写二级制文件。

猜你喜欢

转载自blog.csdn.net/mrsupermanl/article/details/80280182