计算机程序运行时,数据保存在系统的内存中,由于关机时内存中的数据全部丢失,所以必须把那些需要长期保存的数据存放在磁盘文件里,需要时再从文件里读出。因此,文件输人输出操作是程序必备的功能。
一、Java语言对文件与文件夹的管理
文件夹是管理文件的特殊机制,同类文件保存在同一个文件夹下不仅可以简化文件管理而且还可以提高工作效率。Java语言不仅支持文件管理,还支持文件夹管理。在java.io包中定义了一个 File类专门用来管理磁盘文件和文件夹,而不负责数据的输人输出。每个 File 类对象表示一个磁盘文件或文件夹,其对象属性中包含了文件或文件夹的相关信息,如文件名、长度、所含文件个数等,调用它的方法可以完成对文件或文件夹的管理操作,如创建、删除等。
1. 创建 File 类的对象
因为每个File类对象对应系统的一个磁盘文件或文件夹,所以创建File类对象需要出它所对应的文件名或文件夹名。
File 类的构造方法
构造方法 | 功能说明 |
---|---|
public File(String path) | 用path参数创建File对象所对应的磁盘文件名或文件夹名及其路径 |
public File(String path, String name) | 以path为路径,以name为文件或文件夹名创建File对象 |
public File(File dir, String name) | 用一个已经存在代表某磁盘文件夹的File对象dir作为文件夹,以name作为文件或文件夹名来创建File对象 |
2. 获取文件或文件夹属性
一个File对象一经创建,就可以通过调用它的方法来获得其所对应的文件或文件夹的属性。
File类中获取文件或文件夹属性的常用方法
方法 | 功能说明 |
---|---|
public boolean exists() | 判断文件或文件夹是否存在 |
public boolean isFile() | 判断对象是否代表有效文件 |
public boolean isDirectory() | 判断对象是否代表有效文件夹 |
public String getName() | 返回文件名或文件夹名 |
public String getPath() | 返回文件或文件夹的路径 |
public long length() | 返回文件的字节数 |
public boolean canRead() | 判断文件是否可读 |
public boolean canWrite() | 判断文件是否可写 |
public String[ ] list() | 将文件夹中所有文件名保存在字符串数组中返回 |
public boolean equals(File f) | 比较两个文件或文件夹是否相同 |
3. 文件或文件夹操作
File类中对文件或文件夹操作的常用方法
方法 | 功能说明 |
---|---|
public boolean renameTo(File newFile) | 将文件重命名成newFile对应的文件名 |
public boolean delete( ) | 将当前文件删除,若删除成功返回true,否则返回false |
public boolean mkdir() | 创建当前文件夹的子文件夹。成功返回true,否则返回false |
代码示例:创建File类对象,输出指定文件夹下的内容
import java.io.File;
public class ListFiles {
public static void main(String[] args) {
// 指定文件夹路径
String directoryPath = "path/to/your/directory";
// 创建File对象
File folder = new File(directoryPath);
// 检查该路径是否是一个文件夹
if (folder.isDirectory()) {
// 获取文件夹下的所有文件和子文件夹
File[] listOfFiles = folder.listFiles();
// 判断文件夹是否为空
if (listOfFiles != null) {
// 遍历文件和文件夹
for (File file : listOfFiles) {
if (file.isFile()) {
System.out.println("File: " + file.getName());
} else if (file.isDirectory()) {
System.out.println("Directory: " + file.getName());
}
}
} else {
System.out.println("The folder is empty.");
}
} else {
System.out.println("The specified path is not a directory.");
}
}
}
二、对文件夹的随机访问
Java还定义了一个功能更强大,使用更方便的随机访问文件类 RandomAccessFile 它可以实现对文件的随机读写。
随机访问文件类 RandomAccessFile 也是在 java.io包中定义的。RandomAccessFile 是有关文件处理中功能齐全、文件访问方法众多的类。RandomAccessFile类用于进行随意位置、任意类型的文件访问,并且在文件的读取方式中支持文件的任意读取而不只是顺序读取。
RandomAccessFile类的构造方法
构造方法 | 功能说明 |
---|---|
public RandomAccessFile( String name,String mode) | 以name来指定随机文件流对象所对应的文件名,以mode表示对文件的访问模式 |
public RandomAccessFile( File file, String mode) | 以file来指定随机文件流对象所对应的文件名,以mode表示对文件的访问模式 |
说明:
访问模式 mode 表示所创建的随机读写文件的操作状态,mode 的取值如下:
r 表示以只读方式打开文件。
rw 表示以读写方式打开文件,使用该模式只用一个对象就可以同时实现读和写两种操作。
代码示例:
import java.io.File;
import java.util.Random;
public class RandomAccessToFolder {
public static void main(String[] args) {
// 指定文件夹路径
String folderPath = "C:/example_folder";
File folder = new File(folderPath);
// 获取文件夹中的所有文件
File[] files = folder.listFiles();
// 创建一个Random对象
Random random = new Random();
// 生成一个随机索引
int randomIndex = random.nextInt(files.length);
// 通过索引访问文件夹中的文件
File randomFile = files[randomIndex];
System.out.println("随机访问的文件: " + randomFile.getName());
}
}
这段代码首先指定了一个文件夹路径,然后使用File
类获取文件夹中的所有文件。接着,创建一个Random
对象,并生成一个随机索引。最后,通过索引访问文件夹中的文件,并输出文件名。