S2/JAVA/10-File I/O

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了S2/JAVA/10-File I/O相关的知识,希望对你有一定的参考价值。

java.io包提供了一些接口和类,对文件进行基本的操作,包括对文件和目录属性的操作、对文件读写的操作等。

 

File对象即可表示文件,也可表示目录。

 

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

File file=new File(String pathName);

其中,pathName表示所指向的文件路径名。

例如,“File file=new File("C:\\test.txt");”创建了一个指向C盘根目录下test.txt文本文件的对象。

需要注意的是,在windows操作系统中,文件路径名中的分隔符可以使用正斜杠“/”,如“C:/test.txt”也可以使用反斜杠“\”,但必须写成“\\”,其中第一个表示转义符,例如“C:\\test.txt”

 

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()

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

 

读文件,是指把文件中的数据读取到内存中。反之,写文件时把内存中的数据写到文件中。通过流去读写文件,流,是指一连串流动的字符,是以先进先出的方式发送和接收数据的通道。

 

当向一个流写入数据时,这个流被称为输出流,输出流可以将信息送往程序的外部。可以从一个输出流读取数据。

 

java.io包中,封装了许多输入/输出流的API。在程序中,这些输入/输出流的类的对象称为流对象。可以通过这些流对象将内存中的数据以流的方式写入文件,也可通过流对象将文件中的数据以流的方式读取到内存。

流对象构造的时候往往会和数据源(如文件)联系起来。数据源分为源数据源和目标数据源。输入流联系的是源数据源,输出流联系的是目标数据源。

 

1)按照不同的分类方式,可以将流分为不同的类型。

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

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

例如,数据从内存到硬盘,通常我们称为输出流。也就是说,这里的输入和输出,我们都是从程序运行所在的内存角度来划分的。

Java的输出流主要由OutputStreamWriter作为基类,而输入流则主要由InputStreamReader作为基类。

2)按照所操作的数据单元的不同,流又可划分为字节流和字符流。

字节流操作的最小数据单元为8位的字节,而字符流操作的最小数据单元是16位的字符。

字节流和字符流的区分非常简单、字节流建议用于二进制数据(如图片),而字符流用于文本,它们的用法几乎是完全一样的。

按照流的流向,我们还可以对字节流和字符流继续进行划分,分出字节输入流、字节输出流,字符输入流、字符输出流。

 

  • 字节输入流InputStream

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

读取数据的常用方法

方法名称

说明

int read()

读取一个字节数据

int read(byte[] b)

将数据读取到字节数组中

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

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

void close()

关闭输入流

int available

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

 

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

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

 

  • 直接输入流FileInputStream

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

1FileInputStream(File file)

其中,file指定文件数据源。使用此构造方法创建文件输入流对象如下。

File file=new File("C:\\test.txt");

InputStream fileObject=new FileInputStream(file);

此时的文件输入流对象fileObject就和源数据源(C:\\test.txt文件)联系起来了。

2FileInputStream(String name)

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

(File)InputStream in=new FileInputStream("C:\\test.txt");

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

1)引入相关的类。

import java.io.IOException;

import java.io.InputStream;

import java.io.FileInputStream;

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

InputStream fileObject=new FileInputStream("C:\\test.txt");

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

fileObejct.available();                           //可读取的字节数

fileObject.read();                                  //读取文件的数据

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

fileObject.close()

以上是关于S2/JAVA/10-File I/O的主要内容,如果未能解决你的问题,请参考以下文章

I/OFile常见用法总结