JAVA之File操作
目录
File 教程
一、file 基本操作
-
创建File 类对象
/**
* 创建File 类对象
* 路径分为:
* 1.绝对路径:是一个完整的路径 /home/alex/IdeaProjects/learn-java/base/base/src/main/resources/data/file.txt
* 2.相对路径:是一个简化的路径,相对指的是相对于当前项目的根目录(base/src/main/resources/data/file.txt),一般使用相对路径
* 可以用.表示当前目录,..表示上级目录。
* File类中获取路径的方法:
* 1. public String getPath() :将此File转换为路径名字符串。
* 2. public String getAbsolutePath() :返回此File的绝对路径名字符串。
* 3. public String getParent() :返回此File的父路径名字符串。
* 4. public File getParentFile(): 返回此File的父路径对象
* 4. public String getName():返回由此File表示的文件或目录的名称。
*/
public static void createFileObject() throws IOException {
// File类传入的路径 ,既可以是相对路径,也可以是绝对路径,绝对路径是以根目录开始的完整路径 demo: 'D:\\test\\test.txt'
// 相对路径是以当前项目的根目录开始的路径,demo: 'test\\test.txt',这里使用的是相对路径
// 注意分隔符,windows下使用的是反斜杠,linux下使用的是正斜杠
// 这个就是绝对路径
// File file = new File("/home/alex/IdeaProjects/learn-java/base/base/src/main/resources/data/file.txt");
// 这个就是相对路径
File file = new File("./base/src/main/resources/data/file.txt");
System.out.println("file.getName() = " + file.getName());
System.out.println("file = " + file);
// 因为Windows和Linux的路径分隔符不同,File对象有一个静态变量用于表示当前平台的系统分隔符: File.separatorChar这个变量表示分隔符
System.out.println("File 分隔符为: " + File.separator);
//获取父路径路径
String parent = file.getParent();
System.out.println("获取父目录路径为:" + parent);
File parentFile = file.getParentFile();
System.out.println("获取父路径文件对象:" + parentFile);
File dir = new File(".");
System.out.println("当前目录为: " + dir);
File dir2 = new File("..");
System.out.println("上一级目录为:" + dir2);
System.out.println("抽象路径名转换为路径名字符串(默认调用) = " + dir.getPath());
System.out.println("抽象路径名的绝对路径名字符串 = " + dir.getAbsolutePath());
System.out.println("抽象路径名的规范路径名字符串: " + dir.getCanonicalPath());
}
2. File类中判断功能的方法
/**
* File类判断功能的方法
* 1. public boolean exists() :此File表示的文件或目录是否实际存在。
* 2. public boolean isDirectory() :此File表示的是否为目录。
* 3. public boolean isFile() :此File表示的是否为文件。
* 注意:
* 电脑的硬盘中只有文件/文件夹,两个方法是互斥的
* 两个方法使用前提,路径必须是存在的,否则都返回false
*/
public static void isJudgement() {
File file = new File("./base/src/main/resources/data/file.txt");
System.out.println("file.exists() = " + file.exists());
System.out.println("file.isFile() = " + file.isFile());
System.out.println("file.isDirectory() = " + file.isDirectory());
}
3. file类的创建功能的方法
/**
* file类的创建功能的方法
* 1. public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
* 2. public boolean mkdir() :创建由此File表示的目录。
* 3. public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
*/
public static void create() throws IOException {
File file = new File("./base/src/main/resources/data/file.txt");
boolean newFile = file.createNewFile(); // 创建永久文件
System.out.println("是否创建成功: " + newFile);
File dir = new File("tmp");
boolean mkdir = dir.mkdir();// 创建一个文件夹
System.out.println("文件夹创建:" + mkdir);
File moreDir = new File("tmp/moreDir");
boolean mkdirs = moreDir.mkdirs();// 创建多级永久文件夹
System.out.println("多级文件夹创建: " + mkdirs);
File temp = File.createTempFile("temp", ".txt", new File("tmp")); // 创建临时文件
System.out.println("临时文件创建:" + temp);
// 删除操作
file.delete(); // 删除文件
temp.deleteOnExit(); // 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
moreDir.delete(); // 只能删除一个文件夹
dir.delete(); // delete 方法只能删除一个空文件夹,如果是多个空文件夹,需要一个一个删除,后面演示
}
4. File类中的遍历功能
/**
* File类的遍历功能
* 1. public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
* 2. public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
*/
public static void listFile() {
File file = new File(".");
String[] list = file.list();
System.out.println("list = " + Arrays.toString(list));
File[] files = file.listFiles(); // 不进行过滤
System.out.println("files = " + Arrays.toString(files));
// 使用过滤器,仅仅显示,md文件
File[] files1 = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File file, String s) {
return s.endsWith(".md");
}
});
System.out.println("files1 = " + Arrays.toString(files1));
}
5. file类中常用的方法
/**
* file中常用的方法
* 1. public boolean exists():文件是否存在
* 2. public boolean delete() :删除此抽象路径名表示的文件或目录。
* 3.public void deleteOnExit(): 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
* 4. renameTo(File dest) :把文件重命名为指定的文件路径
* 5. public long length() :返回由此File表示的文件的长度。
* 6. public long lastModified() :返回此抽象路径名表示的文件上次修改的时间。
* 7. public boolean setLastModified(long time) :设置文件最后修改时间。
*
*/
public static void fileMethods() throws IOException {
File oldFile = new File("./tmp.text");
oldFile.createNewFile();
File newFile = new File("./tmp2.text");
boolean b = oldFile.renameTo(newFile);
System.out.println("重命名是否成功: " + b);
long length = oldFile.length();
System.out.println("length = " + length);
newFile.delete();
}
6. file 中文件权限操作的方法
/**
* File 中文件权限操作的方法
* @throws IOException
*/
public static void filePermissions() throws IOException {
File file = new File("./tmp.text");
System.out.println("file.canExecute() = " + file.canExecute());
System.out.println("file.canRead() = " + file.canRead());
System.out.println("file.canWrite() = " + file.canWrite());
//方式一:
//设置可执行权限
file.setExecutable(true,false);
//设置可读权限
file.setReadable(true,false);
//设置可写权限
file.setWritable(true,false);
System.out.println("file.canExecute() = " + file.canExecute());
System.out.println("file.canRead() = " + file.canRead());
System.out.println("file.canWrite() = " + file.canWrite());
// 方式二:
Runtime runtime = Runtime.getRuntime();
try {
Process exec = runtime.exec("chmod 777 ./tmp.text");
exec.waitFor();
int exitValue = exec.exitValue();
//执行shell命令,一般返回为0 就是正常执行,如果返回值非0,说明执行出错了
if(exitValue!=0){
throw new RuntimeException(String.format("运行异常,错误码为:%d",exitValue));
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
本文来自博客园,作者:快乐小王子帅气哥哥,转载请注明原文链接:https://www.cnblogs.com/alex-oos/p/18303733