如何在 Java 中检查文件是否可读、可写或可执行?
通常,每当您创建文件时,您都可以限制/允许某些用户读取/写入/执行文件。
在 Java 中,文件(其抽象路径)由 java.io 包的 File 类表示。此类提供各种方法来对文件执行各种操作,例如读取、写入、删除、重命名等。
此外,此类还提供以下方法 −
setExecutble() − 发出此方法以设置当前(File)对象所表示的文件的执行权限。
setWritable() −此方法用于设置当前(File)对象所代表的文件的写入权限。
setReadable() − 此方法用于设置当前(File)对象所代表的文件的读取权限。
示例
以下 Java 程序创建一个文件,向其中写入一些数据,并为其设置读取、写入和执行权限。
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class FilePermissions {
public static void main(String args[]) throws IOException {
String filePath = "D:\sample.txt";
//创建文件
File file = new File(filePath);
System.out.println("File created.........");
//将数据写入文件
FileWriter writer = new FileWriter(file);
String data = "Hello welcome to Tutorialspoint";
writer.write(data);
System.out.println("Data entered.........");
//设置文件权限
file.setReadable(true); //读取
file.setWritable(true); //写入
file.setExecutable(true); //执行
System.out.println("Permissions granted.........");
}
}
输出
Directory created......... File created......... Data entered......... Permissions granted.........
可读、可写、可执行
除了 java.io 包中的 File 类之外,自 Java 7 开始,还引入了 Files 类,其中包含对文件、目录或其他类型文件进行操作的(静态)方法。
您可以验证特定文件是否具有读取、写入、执行权限,可以使用此类的 isReadable()、isWritable() 和 isExecutable() 方法。
isReadable() 方法 − 此方法接受 Path 类的对象,并验证给定路径所表示的文件是否存在于系统中,并且 JVM 是否具有读取它的权限。如果是,则返回 true,否则返回 false。
isWritable() 方法 −此方法接受 Path 类的对象,并验证给定路径所表示的文件是否存在于系统中,并且 JVM 是否具有写入权限。如果是,则返回 true,否则返回 false。
isExecutable() 方法 − 此方法接受 Path 类的对象,并验证给定路径所表示的文件是否存在于系统中,并且 JVM 是否具有执行权限。如果是,则返回 true,否则返回 false。
Files 类
该类提供一个名为 exists() 的方法,如果当前对象所表示的文件存在于系统中,则返回 true,否则返回 false。
示例
以下 Java 程序验证系统中是否存在指定文件。它使用 Files 类的方法。
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FilesExample {
public static void main(String args[]) {
//创建 Path 对象
Path path = Paths.get("D:\sample.txt");
//验证文件是否可读
boolean bool = Files.isReadable(path);
if(bool) {
System.out.println("readable");
} else {
System.out.println("not readable");
}
bool = Files.isWritable(path);
if(bool) {
System.out.println("writable");
} else {
System.out.println("not writable");
}
bool = Files.isExecutable(path);
if(bool) {
System.out.println("executable");
} else {
System.out.println("not executable");
}
}
}
输出
readable writable executable

