File类
File类用来操作文件路径或文件夹路径
绝对路径从根目录开始
相对路径在eclipse中代表当前项目根目录下,在dos中指当前路径
-
构造函数
File (String pathname):根据一个路径得到File对象 File(String parent, String child):根据一个目录和子目录得到File对象 File(File parent, String child):根据一个父File对象和一个子目录得到File对象
public class Demo1_File { public static void main(String[] args) { File file = new File("/Users/apple/git/javaeestu/aaa.txt"); // 通过路径查询获取File对象 System.out.println(file.exists()); // 判断File对象指向文件是否存在 File file2 = new File("aaa.txt"); // 通过相对路径获取File对象 System.out.println(file2.exists()); File file3 = new File("/Users/apple/git/javaeestu", "aaa.txt"); // 通过父子路径获取File对象 System.out.println(file3.exists()); File fileParent = new File("/Users/apple/git/javaeestu"); // 父File对象 File file4 = new File(fileParent, "aaa.txt"); System.out.println(file4.exists()); } }
-
创建功能
public class Demo1_File { public static void main(String[] args) throws Exception { // 创建文件 File file = new File("/Users/apple/git/javaeestu/bbb.txt"); // 通过路径查询获取File对象 System.out.println(file.createNewFile()); // 如果文件不存在则创建文件,返回boolean // 创建文件夹 File dir = new File("/Users/apple/git/javaeestu/abc"); // 通过目录获取File对象 System.out.println(dir.mkdir()); // 创建多级文件夹 File dir2 = new File("/Users/apple/git/javaeestu/abc1/abc2"); // 通过多级目录获取File对象 System.out.println(dir2.mkdirs()); // 如果abc2以上存在没有的被创建的文件夹,将自动创建出来 } }
-
重命名和删除功能
- ==重命名注意事项:==
- 如果路径相同就是改名
- 如果路径不同就是改名并移动文件
- ==删除注意事项:==
- Java中的删除不走回收站
- 要删除一个文件夹,则该文件夹内不能存在任何文件夹或文件
public boolean renameto (File dest):把文件重命名为指定文件路径 public boolean delete():删除文件或文件夹
public class Demo1_File { public static void main(String[] args) throws Exception { // 修改文件名 File file = new File("bbb.txt"); File fileTarget = new File("ccc.txt"); System.out.println(file.renameTo(fileTarget)); // 删除文件 System.out.println(fileTarget.delete()); } }
- ==重命名注意事项:==
-
判断功能
public boolean isDirectory():判断是否是一个目录 public boolean isFile():判断是否是一个文件 public boolean exists():判断文件或目录是否存在 public boolean canRead():判断是否可读 public boolean canWrite():判断是否可写 public boolean isHidden():判断是否隐藏
public class Demo1_File { public static void main(String[] args) throws Exception { // 判断是否是一个目录 File file1 = new File("/Users/apple/git/javaeestu"); System.out.println(file1.isDirectory()); // 判断是否是一个文件 File file2 = new File("bbb.txt"); System.out.println(file2.isFile()); // 判断文件或目录是否存在 File file3 = new File("aaa.txt"); System.out.println(file3.exists()); // 判断文件是否可读 System.out.println(file2.canRead()); // 判断文件是否可写 System.out.println(file2.canWrite()); // 判断文件是否隐藏 System.out.println(file3.isHidden()); } }
-
获取功能
public String getAbsolutePath():获取绝对路径 public String getPath():获取路径 public String getName():获取名称 public long length():获取字节长度 public long lastModified():获取最后一次修改时间,毫秒级 public String[] list():获取指定目录下所有文件或文件夹的名称数组 public File[] listFiles():获取指定目录下所有文件或文件夹File对象数组
public class Demo1_File { public static void main(String[] args) throws Exception { // 获取绝对路径 File file1 = new File("bbb.txt"); System.out.println(file1.getAbsolutePath()); // /Users/apple/git/javaeestu/bbb.txt // 获取路径 File file2 = new File("bbb.txt"); System.out.println(file2.getPath()); // bbb.txt // 获取名称 File file3 = new File("/Users/apple/git/javaeestu/bbb.txt"); System.out.println(file3.getName()); // bbb.txt // 获取字节长度 File file4 = new File("README.md"); System.out.println(file4.length()); // 12 // 获取最后一次修改时间 File file5 = new File("README.md"); System.out.println(new DATETIME(file5.lastModified()).get()); // 2017-01-23 13:13:45 // 获取指定目录下所有文件或文件夹的名称数组 File file6 = new File("/Users/apple/git/javaeestu"); String str = ""; for (int i = 0; i < file6.list().length; i++) { str += file6.list()[i]; if (i < file6.list().length - 1) str += ", "; } System.out.println(str); // .classpath, .DS_Store, .git, .idea, // .project, .settings, aaa.txt, abc, abc1, // bbb.txt, bin, ISSUE_TEMPLATE.zh-CN.md, // javaeestu.iml, // PULL_REQUEST_TEMPLATE.zh-CN.md, // README.md, src // 获取指定目录下所有文件或文件夹File对象数组 File file7 = new File("/Users/apple/git/javaeestu"); String str2 = ""; for (int i = 0; i < file7.listFiles().length; i++) { str2 += file7.listFiles()[i].toString(); if (i < file7.listFiles().length - 1) str2 += ", "; } for (File v : file7.listFiles()) { System.out.print(v + ", "); // Users/apple/git/javaeestu/.classpath, // /Users/apple/git/javaeestu/.DS_Store, // /Users/apple/git/javaeestu/.git, // /Users/apple/git/javaeestu/.idea, // /Users/apple/git/javaeestu/.project, // /Users/apple/git/javaeestu/.settings, // /Users/apple/git/javaeestu/aaa.txt, // /Users/apple/git/javaeestu/abc, // /Users/apple/git/javaeestu/abc1, // /Users/apple/git/javaeestu/bbb.txt, // /Users/apple/git/javaeestu/bin, // /Users/apple/git/javaeestu/ISSUE_TEMPLATE.zh-CN.md, // /Users/apple/git/javaeestu/javaeestu.iml, // /Users/apple/git/javaeestu/PULL_REQUEST_TEMPLATE.zh-CN.md, // /Users/apple/git/javaeestu/README.md, // /Users/apple/git/javaeestu/src, } } }
-
递归删除多级目录
/** * 删除多重目录 * * @param filePath * 起始目录 */ public static boolean deletes(String filePath) throws IOException { File file = new File(filePath); File fileList[] = file.listFiles(); for (File fl : fileList) { if (fl.isDirectory()) { // 如果是目录 if (fl.listFiles().length == 0) { // 如果该目录为空则删除目录 fl.delete(); } else { // 如果是目录则递归进入下级目录 deletes(fl.getAbsolutePath()); } } else { // 如果是文件直接删除 fl.delete(); } } // 删除起始目录 if (file.listFiles().length == 0) { file.delete(); return true; } else { return false; } }
-
文件名称过滤器
public class Demo1_File { public static void main(String[] args) { String dir = "/Users/apple/git/javaeestu"; File file = new File(dir); String[] arr = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { File f = new File(dir, name); return f.isFile() && f.getName().endsWith(".txt"); } }); for (String v : arr) { System.out.println(v); } } }
-
复制多级文件夹及文件
public class Demo1_File { public static void main(String[] args) throws Exception { File src = new File("testsrc"); File dest = new File("dest"); copyDir(src, dest); } public static void copyDir(File src, File dest) throws IOException { // 验证父子文件夹 if (src.equals(dest)) { throw new IOException("拷贝目标是拷贝源的子文件夹,不允许拷贝"); } // 递归拷贝 File newDir = new File(dest, src.getName()); newDir.mkdir(); // 创建文件 // 获取递归当前目录下全部内容 File[] subFiles = src.listFiles(); for (File subFile : subFiles) { // 处理文件 if (subFile.isFile()) { new FILE(subFile.getAbsolutePath()).copy(newDir.getAbsolutePath() + "/" + subFile.getName(), true); } else { // 处理文件夹 copyDir(subFile, newDir); } } } }
-
分级打印文件夹
public class Demo { public static void main(String[] args) throws IOException { printLev(new File("test"), 0); } public static void printLev(File Dir, int Lev) { if (Lev == 0) { System.out.println(Dir.getAbsolutePath() + ":"); } File[] files = Dir.listFiles(); for (File file : files) { for (int i = 0; i < Lev; i++) { System.out.print("\t"); } System.out.println("\\" + file.getName()); if (file.isDirectory()) { printLev(file, ++Lev); } } } }