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的输出流主要由OutputStream和Writer作为基类,而输入流则主要由InputStream和Reader作为基类。
(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()方法从输入流读取1个8位的字节,把它转换为0~255之间的整数返回。
有参的两个read()方法从输入流批量读取若干个字节。在从文件或键盘读数据时,采用read(byte[] b)或read(byte[] b,int off,int len)方法可以减少进行物理读文件或键盘的次数,提高输入/输出操作效率。
- 直接输入流FileInputStream类
在实际应用中,我们通常使用InputStream的子类FileInputStream类来实现文本文件内容的读取,常用的构造方法有以下两个。
1、FileInputStream(File file)。
其中,file指定文件数据源。使用此构造方法创建文件输入流对象如下。
File file=new File("C:\\test.txt");
InputStream fileObject=new FileInputStream(file);
此时的文件输入流对象fileObject就和源数据源(C:\\test.txt文件)联系起来了。
2、FileInputStream(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的主要内容,如果未能解决你的问题,请参考以下文章