java 之 File类
浅析理论:
注:java中,\是转义字符,如果要表示一个\字符,则必须转义(\\) 一、文件路径的抽象(java.io.File) 三个构造器 File(String pathname) File f = new File("g:/a/b/c.txt");//new File("g:\\a\\b\\c.txt") File f = new File("c.txt");//相对路径(相对类路径) File(String parent, String child);//传入父目录和文件字符串路径 File f = new File("g:/a/b", "c.txt"); File(File parent, String child);//传入父目录File对象和文件字符串路劲 File f = new File("c:/a/b"); File f1 = new File(f, "c.txt"); 二、常用方法 File[] fs = File.listRoots(); //获取系统所有盘符 String path = fs.getPath(); //返回路径(传入路径) String path2 = fs.getAbsolutePath(); //返回绝对路径 String path3 = fs.getCanonicalPath(); //返回规范路径【常用】 String path = f.getParent(); //获取父路径 File parent = f.getParentFile(); //获取父路径 f.exists();//判断对应路径文件是否已存在 boolean f.mkdir(); //仅创建当前层级的目录,用于目录的父目录已存在的情况下 boolean f.mkdirs(); //依次创建所有不存在的层级目录 f.createNewFile(); //新建文件,如果此路径的父目录存在的时候才会创建成功 f.delete(); //删除文件 f.renameTo(File dest); //重命名文件 三、常用属性 boolean canExecute(); //可执行 boolean canRead(); //可读 boolean canWrite(); //可写 boolean isAbsolute(); //是否绝对路径 boolean isDirectory(); //是否是目录 boolean isFile(); //是否是文件 boolean isHidden(); //是否是隐藏文件 lastModified(); //最后一次被修改的时间 long length(); //文件的长度 四、遍历、过滤文件 String[] list(); //指定表示目录中的文件和目录 File[] listFiles(); //指定表示目录中的文件和目录 //只能过滤当前层级的,需要通过递归去判断 String[] list(FileFilter filter); //指定表示满足指定过滤器的文件和目录 File[] listFiles(FileFilter filter); //指定表示满足指定过滤器的文件和目录 File[] listFiles(FilenameFilter filter); //指定表示满足指定过滤器的文件和目录
浅析案例:
package com.gongxy; import java.io.File; import java.io.FileFilter; import java.util.Arrays; /** * @author gongyg * @description File简单案例 */ public class FileTest { public static void main(String[] args) throws Exception { //threeConstructorTest(); //getPathTest(); //createDeleteFile(); //commonAttribute(); iteratorFile(); } /* File 三个构造器测试 */ static void threeConstructorTest() throws Exception{ File f1 = new File("f:/测试/a/b.txt");//构造器1 File f2 = new File("b.txt");//这个是项目根路径 File f3 = new File("f:/测试/a", "b.txt");//构造器2 File f5 = new File("f:/测试/a"); File f6 = new File(f5,"b.txt");//构造器3 System.out.println(f1.getCanonicalPath());//F:\测试\a\b.txt System.out.println(f2.getCanonicalPath());//F:\3Java-Study\my-java-study-0802\b.txt System.out.println(f3.getCanonicalPath());//F:\测试\a\b.txt System.out.println(f5.getCanonicalPath());//F:\测试\a System.out.println(f6.getCanonicalPath());//F:\测试\a\b.txt System.out.println(f1.exists());//false } /* 获取相关路径的API */ static void getPathTest() throws Exception{ File[] fs = File.listRoots(); System.out.println(Arrays.toString(fs));//[C:\, D:\, E:\, F:\] File f = new File("../c.txt"); System.out.println(f.getPath());//..\c.txt(传入路径) System.out.println(f.getAbsolutePath());//F:\3Java-Study\my-java-study-0802\..\c.txt System.out.println(f.getCanonicalPath());//F:\3Java-Study\c.txt System.out.println(f.getParent());//.. System.out.println(f.getParentFile());//.. } static void createDeleteFile() throws Exception{ File f = new File("g:/测试/测试a"); boolean result; if(!f.exists()){ f.mkdir();//false f.mkdirs();//true } File f1 = new File("测试B/b.txt"); if(!f1.exists()){ File f2 = f1.getParentFile(); if(!f2.exists()){ f2.mkdirs(); } f1.createNewFile();//true } if(f1.exists()){ //f1.delete();//只删除了b.txt文件 } File f3 = new File("测试B/c.txt"); f1.renameTo(f3);//只能在同一个目录下更改,且如果已有文件,则改名失败 } static void commonAttribute() throws Exception{ File f1 = new File("c.txt"); f1.createNewFile(); boolean result = f1.canExecute();//true result = f1.canRead();//true result = f1.canWrite();//true result = f1.isAbsolute();//false result = f1.isDirectory();//false result = f1.isHidden();//false result = f1.isFile();//true f1.lastModified();//1598943309757 f1.length();//0 } static void iteratorFile() throws Exception{ File f = new File("2-App"); String[] sArray = f.list(); System.out.println(Arrays.toString(sArray)); //printPath(f); File[] fArray = f.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { return pathname.getName().endsWith(".java"); } }); } static void printPath(File f) throws Exception{ File[] fArray = f.listFiles(); if(fArray.length == 0){ System.out.println(f); return; } for (File f1: fArray) { if(f1.isDirectory()){ printPath(f1); } System.out.println(f1.getCanonicalPath()); } } }