JAVA零基础小白入门上手教程day15-泛型&File(二)https://developer.aliyun.com/article/1433761
获取功能方法
方法名 | 说明 |
public String getAbsolutePath() | 返回此File的绝对路径名字符串。 |
public String getPath() | 将此File转换为路径名字符串 |
public String getName() | 返回由此File表示的文件或目录的名称。 |
public long length() | 返回由此File表示的文件的长度。 |
代码演示
public class FileGet { public static void main(String[] args) { File f = new File("d:/aaa/bbb.java"); System.out.println("文件绝对路径:"+f.getAbsolutePath()); System.out.println("文件路径:"+f.getPath()); System.out.println("文件名称:"+f.getName()); System.out.println("文件长度:"+f.length()+"字节"); File f2 = new File("d:/aaa"); System.out.println("目录绝对路径:"+f2.getAbsolutePath()); System.out.println("目录构造路径:"+f2.getPath()); System.out.println("目录名称:"+f2.getName()); System.out.println("目录长度:"+f2.length()); } }
绝对路径和相对路径
- 绝对路径:从盘符开始的路径,这是一个完整的路径。
- 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
public class FilePath { public static void main(String[] args) { // D盘下的bbb.java文件 File f = new File("D:\\bbb.java"); System.out.println(f.getAbsolutePath()); // 项目下的bbb.java文件 File f2 = new File("day15\\bbb.java"); System.out.println(f2.getAbsolutePath()); } }
判断功能的方法
方法名 | 说明 |
public boolean exists() | 此File表示的文件或目录是否实际存在。 |
public boolean isDirectory() | 此File表示的是否为目录。 |
代码演示
public class FileIs { public static void main(String[] args) { File file1 = new File("a.txt"); System.out.println("是不是一个目录:"+file1.isDirectory()); System.out.println("是不是一个文件:"+file1.isFile()); System.out.println("是否能写:"+file1.canWrite()); System.out.println("是否能读:"+file1.canRead()); System.out.println("是否存在:"+file1.exists()); System.out.println("是隐藏:"+file1.isHidden()); } }
创建&删除功能的方法
方法名 | 说明 |
public boolean createNewFile() | 当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 |
public boolean delete() | 删除由此File表示的文件或目录。 |
public boolean mkdir() | 创建由此File表示的目录。 |
public boolean mkdirs() | 创建由此File表示的目录,包括任何必需但不存在的父目录。 |
代码演示
public class FileCreateDelete { public static void main(String[] args) throws IOException { //项目的根目录下 File file1 = new File("a.txt"); System.out.println(file1.createNewFile()); //删除文件 File file2 = new File("a.txt"); System.out.println(file2.delete()); //创建文件夹 File file3 = new File("aa"); System.out.println( file3.mkdir()); //删除文件夹 File file4 = new File("aa"); System.out.println(file4.delete()); //创建多级文件夹 File file5 = new File("aa\\bb\\cc"); System.out.println( file5.mkdirs()); //删除多级文件夹 //注意:只能删除最里的一级目录 File file6 = new File("aa\\bb\\cc"); System.out.println(file6.delete()); } }
注意事项
delete方法,如果此File表示目录,则目录必须为空才能删除。(如果要删除目录,目录中不能有文件,否则删不了)
重命名功能
/* * 重命名功能:public boolean renameTo(File dest) * 如果路径名相同,就是改名。 * 如果路径名不同,就是改名并剪切。 * * 路径以盘符开始:绝对路径 c:\\a.txt * 路径不以盘符开始:相对路径 a.txt */ public static void main(String[] args) throws IOException { //数据数据源,前提得这个数据存在 File srcFile = new File("D:\\江一燕.jpg"); //数据数据的目的地 File newFile = new File("D:\\我和江一燕.jpg");//相同路径是改名 // File newFile2 = new File("e:\\我和江一燕.jpg");//不同路径是剪切并改名 //实现改名 System.out.println(srcFile.renameTo(newFile)); } }
目录的获取
方法名 | 说明 |
public String[] list() | 返回一个String数组,表示该File目录中的所有子文件或目录。 |
public File[] listFiles() | 返回一个File数组,表示该File目录中的所有的子文件或目录。 |
public class FileFor { public static void main(String[] args) { //创建file File file = new File("d:\\"); //获取e盘下所有的文件及目录 String[] list = file.list(); for(String s : list){ System.out.println(s); } System.out.println("------------------"); //创建file File file2 = new File("d:\\"); //获取e盘下的所有file文件 File[] files = file2.listFiles(); for(File f : files){ System.out.println(f); } } }
注意事项
调用listFiles方法的File对象,表示的必须是实际存在的目录,否则返回null,无法进行遍历。
作业:判断d盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
思路:获取d盘下所有目录,判断目录下是文件还是目录,如果文件,判断哪个文件后缀.jpg,如果是,把文件名输出。
综合案例
打印多级目录
- 分析
多级目录的打印,就是当目录的嵌套。遍历之前,无从知道到底有多少级目录,所以我们还是要使用递归实现。
- 代码实现
public class DiGuiDemo2 { public static void main(String[] args) { // 创建File对象 File dir = new File("E:\workspase\507\day13"); // 调用打印目录方法 printDir(dir); } public static void printDir(File dir) { // 获取子文件和目录 File[] files = dir.listFiles(); // 循环打印 /* 判断: 当是文件时,打印绝对路径. 当是目录时,继续调用打印目录的方法,形成递归调用. */ for (File file : files) { // 判断 if (file.isFile()) { // 是文件,输出文件绝对路径 System.out.println("文件名:"+ file.getAbsolutePath()); } else { // 是目录,输出目录绝对路径 System.out.println("目录:"+file.getAbsolutePath()); // 继续遍历,调用printDir,形成递归 printDir(file); } } } }
文件搜索
- 需求
搜索
D:\aaa
目录中的.java
文件。
- 需求分析
目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录。
遍历目录时,获取的子文件,通过文件名称的后缀,判断是否符合条件。
- 代码实现
public class DiGuiDemo3 { public static void main(String[] args) { // 创建File对象 File dir = new File("D:\\aaa"); // 调用打印目录方法 printDir(dir); } public static void printDir(File dir) { // 获取子文件和目录 File[] files = dir.listFiles(); // 循环打印 for (File file : files) { if (file.isFile()) { // 是文件,判断文件名并输出文件绝对路径 if (file.getName().endsWith(".java")) { System.out.println("文件名:" + file.getAbsolutePath()); } } else { // 是目录,继续遍历,形成递归 printDir(file); } } } }