Java笔记二十.深入解析I/O编程之文件访问类

开始学习字节流类之前,我们来先看下与文件有关的类-File类。File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的方法来操作文件,通过调用File类提供的各种方法,我们能够创建、删除文件、重命名文件以及判断文件的读写权限及其是否存在,设置和查询文件的最近修改时间等。在Java中,目录也被当作File使用,只是多了一些目录特有的功能—可以用list方法列出目标中的文件名。

一、File类

(1)功能

File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的方法来操作文件。但File类不能访问文件的内容,即不能够从文件中读取数据或向文件里写数据,它只能对文件本身的属性进行操作。

(2)构造方法

>File(String pathname) :创建一个File对象,其内容为字符串路径所对应的文件;

>File(URI uri) :创建一个File对象,其内容为URI所包含的文件;

举例:File f=new File("C:\\test.txt");创建一个File类实例f,该实例的内容直接对应C盘目录下test.txt文件,File类的所有方法则都是针对于该文件。

(3)常用方法

boolean createNewFile():当文件不存在时,,新建一个空的文件(文件名为pathname(包含路径));

boolean delete():删除该抽象路径名所表示的文件或者目录;

boolean exists():判定该抽象路径名所表示的文件或者目录是否存在;

String getAbsolutePath():以字符串的形式返回该文件的绝对路径;

String getCanonicalPath():以字符串的形式返回该文件的相对路径;

String getName():获取该文件/目录的文件(目录)名;

long lastModified():返回该文件最后依次修改时间;

long length() :返回该文件的长度(大小);

boolean setReadable(boolean readable):设置文件的可读权限;

boolean setWritable(boolean writable):设置文件的可写权限;

boolean isDirectory() :判定是否为目录;

boolean isFile():判断是否为文件;

boolean canRead() :判定该文件或目录是否可读;

boolean canWrite() :判定该文件或目录是否可写;

注意:上述方法操作的是由File对象的路径所表示的磁盘文件或目录。

二、RandomAccessFile类

1.功能

RandomAccessFile类是Java语言中最为丰富的文件访问类,其提供了大量的访问文件的方法。RandomAccessFile类支持"随机访问"方式,即使用该类实现跳转到文件的任意位置处读写数据。另外,RandomAccessFile对象类有个位置指示器,指向当前读写处的位置,当读写n个字节后,文件指示器将指向这n个字节后的下一个字节处。需要注意的是,该类仅限于操作文件,不能访问其他的IO设备(如网络、内存映像)。

2.构造方法

RandomAccessFile(File file, String mode)

RandomAccessFile(String name, String mode)

举例:

new RandomAccessFile(f,"rw"); //以读写方式实例化一个RandomAccessFile对象

new RandomAccessFile(f,"r"); //以只读方式实例化一个RandomAccessFile对象

当以读写的方式打开一个文件(引用变量f对应的文件)时,如果该文件不存在,程序将自动创建。

3.常用方法

void close():关闭该随机存取文件流并释放与该文件流有关的系统资源;

long getFilePointer():返回位置指示器指向文件当前读写处的位置;

long length():返回该文件的长度;

int read():从该文件读取一个字节的数据;

int read(byte[] b) :从该文件读取最多b.length()个字节数据到字节数组(byte[]);

int read(byte[] b, int off, int len):从该文件的off位置读取len个字节数据到字节数组(byte[]);

byte readByte():从该文件读取一字节数据;

char readXxx():从该文件读取一个字符/double型/float型数据;

String readLine():读取文件的下一行数据;

void seek(long pos):设置位置指示器偏移位置(相对于文件开头);

int skipBytes(int n):跳过n个字节;

void write(byte[] b) :将指定字节数组中的b.length个字节数据写入到该文件中;

void write(byte[] b, int off, int len) :将从指定字节数组的off位置后面的len个字节数据写入到该文件中

void write(int b) :写一个字节数据到该文件中;

4.源码实战

1.使用RandomAccessFile创建并读取一个文本文件

(1)Employee.java

流过泪的眼睛更明亮,滴过血的心灵更坚强!

Java笔记二十.深入解析I/O编程之文件访问类

相关文章:

你感兴趣的文章:

标签云: