Java中File类方法详解以及实践
介绍
Java中的File类用于描述操作系统文件和目录的抽象。File类无法实现文件内容的操作,但是可以获取或修改文件的属性信息和路径信息。File类提供了很多方法,涵盖了文件和目录常见的操作,本文将对Java中File类常用的方法做一个详细讲解,并提供几个实例演示。
构造函数
File类的构造函数有多个重载形式,提供不同的参数类型,以支持不同的文件路径形式和容错处理。
public File(String pathname);
public File(String parent, String child);
public File(File parent, String child);
参数解释:
- pathname:文件路径。
- parent:父目录。
- child:自文件或目录。
示例:
// 以字符串形式指定文件路径
File file1 = new File("D:\\test\\test.txt");
// 以父目录和文件名的字符串形式指定文件路径
File file2 = new File("D:\\test", "test.txt");
// 以父目录和文件名的File对象形式指定文件路径
File file3Parent = new File("D:\\test");
File file3 = new File(file3Parent, "test.txt");
常用方法
File类提供了很多方法用于操作文件和目录,以下是常用的几个。
获取文件路径
public String getAbsolutePath();
public String getPath();
public String getParent();
public File getAbsoluteFile();
public File getParentFile();
参数解释:
- getAbsolutePath:返回文件的绝对路径字符串。
- getPath:返回文件的路径字符串。
- getParent:返回文件的父目录路径字符串。
- getAbsoluteFile:返回文件的绝对路径File对象。
- getParentFile:返回文件的父目录File对象。
示例:
File file = new File("D:\\test\\test.txt");
System.out.println("getAbsolutePath:" + file.getAbsolutePath());
System.out.println("getPath:" + file.getPath());
System.out.println("getParent:" + file.getParent());
System.out.println("getAbsoluteFile:" + file.getAbsoluteFile());
System.out.println("getParentFile:" + file.getParentFile());
输出结果:
getAbsolutePath:D:\test\test.txt
getPath:D:\test\test.txt
getParent:D:\test
getAbsoluteFile:D:\test\test.txt
getParentFile:D:\test
检查文件状态
public boolean exists();
public boolean isFile();
public boolean isDirectory();
public boolean canRead();
public boolean canWrite();
public boolean canExecute();
参数解释:
- exists:文件或目录是否存在。
- isFile:是否是文件。
- isDirectory:是否是目录。
- canRead:是否可读。
- canWrite:是否可写。
- canExecute:是否可执行。
示例:
File file = new File("D:\\test\\jmeter.png");
System.out.println("exists:" + file.exists());
System.out.println("isFile:" + file.isFile());
System.out.println("isDirectory:" + file.isDirectory());
System.out.println("canRead:" + file.canRead());
System.out.println("canWrite:" + file.canWrite());
System.out.println("canExecute:" + file.canExecute());
输出结果:
exists:true
isFile:true
isDirectory:false
canRead:true
canWrite:true
canExecute:false
文件操作
public boolean createNewFile();
public boolean delete();
public boolean renameTo(File dest);
public long length();
public boolean setLastModified(long time);
public boolean setReadOnly();
参数解释:
- createNewFile:创建新文件,如果文件已存在会返回false。
- delete:删除文件或目录。
- renameTo:重命名文件或目录。
- length:获取文件长度。
- setLastModified:设置文件最后修改时间,参数是时间戳。
- setReadOnly:设置文件只读。
示例:
// 创建文件
File file = new File("D:\\test\\test.txt");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
// 重命名文件
File newFile = new File("D:\\test\\new_test.txt");
file.renameTo(newFile);
// 获取文件长度
System.out.println(file.length());
// 设置只读
newFile.setReadOnly();
目录操作
public boolean mkdir();
public boolean mkdirs();
public String[] list();
public File[] listFiles();
参数解释:
- mkdir:创建目录,只能创建单个目录,如果父目录不存在,会抛出异常。
- mkdirs:创建目录,能够创建多级目录。
- list:列出目录中的文件和子目录名称数组。
- listFiles:列出目录中的文件和子目录File对象数组。
示例:
// 创建目录
File dir = new File("D:\\test\\dir");
dir.mkdir();
// 创建多级目录
File multiDir = new File("D:\\test\\multi\\dir");
multiDir.mkdirs();
// 列出文件和子目录名称
File[] files = dir.listFiles();
for (File f : files) {
System.out.println(f.getName());
}
示例
以下是两个示例,一个是利用File类保存数据,另一个是利用File类读取数据。
保存数据
import java.io.*;
public class SaveToFile {
public static void main(String[] args) throws IOException {
File file = new File("D:\\test\\data.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter writer = new FileWriter(file);
BufferedWriter bWriter = new BufferedWriter(writer);
bWriter.write("hello world!");
bWriter.close();
writer.close();
}
}
执行后会在D:\test目录下生成一个data.txt文件,文件内容为hello world!。
读取数据
import java.io.*;
public class ReadFromFile {
public static void main(String[] args) throws IOException {
File file = new File("D:\\test\\data.txt");
if (!file.exists()) {
return;
}
FileReader reader = new FileReader(file);
BufferedReader bReader = new BufferedReader(reader);
String line = bReader.readLine();
System.out.println(line);
bReader.close();
reader.close();
}
}
执行后会从D:\test\data.txt文件中读取并输出hello world!。
总结
本文介绍了Java中File类的常用方法,包括构造函数、获取文件路径、检查文件状态、文件操作、目录操作等。并提供了两个示例演示如何利用File类实现数据保存和读取操作。使用File类可以轻松对文件和目录进行管理和操作,是Java IO编程不可或缺的一部分。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中File类方法详解以及实践 - Python技术站