1、File类的概述和构造方法
* A:File类的概述
* File更应该叫做一个路径
* 文件路径或者文件夹路径
* 路径分为绝对路径和相对路径
* 绝对路径是一个固定的路径,从盘符开始
* 相对路径相对于某个位置,在eclipse下是指当前项目下。
* B:构造方法
* File(String pathname):根据一个路径得到File对象
* File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
* File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
2、File类的创建功能
* A:创建功能
* public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了
* public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了
* public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来
* 注意事项:
* 如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
1 public class Demo { 2 3 public static void main(String[] args) throws IOException { 4 //demo1(); 5 File dir1 = new File("aaa"); 6 System.out.println(dir1.mkdir()); 7 8 File dir2 = new File("bbb.txt"); //这样写是可以的,文件夹也是可以有后缀的 9 System.out.println(dir2.mkdir()); 10 11 File dir3 = new File("ccc\ddd"); 12 System.out.println(dir3.mkdirs()); //创建多级目录 13 } 14 15 public static void demo1() throws IOException { 16 File file = new File("yyy.txt"); 17 System.out.println(file.createNewFile()); //如果没有就创建,返回true 18 19 File file2 = new File("zzz"); 20 System.out.println(file2.createNewFile()); 21 } 22 23 }
3、File类的重命名和删除功能
* A:重命名和删除功能
* public boolean renameTo(File dest):把文件重命名为指定的文件路径
* public boolean delete():删除文件或者文件夹
* B:重命名注意事项
* 如果路径名相同,就是改名。
* 如果路径名不同,就是改名并剪切。
* C:删除注意事项:
* Java中的删除不走回收站。
* 要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹
1 public class Demo { 2 3 public static void main(String[] args) { 4 //demo1(); 5 File file1 = new File("yyy.txt"); 6 System.out.println(file1.delete()); 7 8 File file2 = new File("aaa"); 9 System.out.println(file2.delete()); 10 11 File file3 = new File("ccc"); //如果删除一个文件夹,那么文件夹必须是空的 12 System.out.println(file3.delete()); 13 } 14 15 public static void demo1() { 16 File file1 = new File("ooo.txt"); 17 File file2 = new File("D:\xxx.txt"); 18 System.out.println(file1.renameTo(file2)); 19 } 20 21 }
4、File类的判断功能
* A:判断功能
* public boolean isDirectory():判断是否是目录
* public boolean isFile():判断是否是文件
* public boolean exists():判断是否存在
* public boolean canRead():判断是否可读
* public boolean canWrite():判断是否可写
* public boolean isHidden():判断是否隐藏
1 public class Demo { 2 3 public static void main(String[] args) { 4 //demo1(); 5 File file = new File("zzz"); 6 file.setReadable(false); 7 System.out.println(file.canRead()); //windows系统认为所有的文件都是可读的 8 file.setWritable(true); 9 System.out.println(file.canWrite()); //windows系统可以设置为不可写 10 11 File file2 = new File("aaa.txt"); 12 System.out.println(file2.isHidden()); //判断是否是隐藏文件 13 System.out.println(file.isHidden()); 14 } 15 16 public static void demo1() { 17 File dir1 = new File("ccc"); 18 System.out.println(dir1.isDirectory()); //判断是否是文件夹 19 20 File dir2 = new File("zzz"); 21 System.out.println(dir2.isDirectory()); 22 23 System.out.println(dir1.isFile()); //判断是否是文件 24 System.out.println(dir2.isFile()); 25 } 26 27 }
5、File类的获取功能
* A:获取功能
* public String getAbsolutePath():获取绝对路径
* public String getPath():获取路径
* public String getName():获取名称
* public long length():获取长度。字节数
* public long lastModified():获取最后一次的修改时间,毫秒值
* public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
* public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
1 public class Demo { 2 3 public static void main(String[] args) { 4 //demo1(); 5 File dir = new File("F:/双元课堂/day19/video"); 6 String[] arr = dir.list(); //仅为了获取文件名 7 8 for (String string : arr) { 9 System.out.println(string); 10 } 11 12 File[] subFiles = dir.listFiles(); 13 14 for (File file : subFiles) { //获取文件对象 15 System.out.println(file); 16 } 17 } 18 19 public static void demo1() { 20 File file1 = new File("ccc.txt"); 21 File file2 = new File("D:\双元课堂\day19\ccc.txt"); 22 //System.out.println(file1.getAbsolutePath()); //获取绝对路径 23 //System.out.println(file2.getAbsolutePath()); 24 25 //System.out.println(file1.getPath()); //获取构造方法中传入路径 26 //System.out.println(file2.getPath()); 27 28 // System.out.println(file1.getName()); //获取文件或者文件的名字 29 // System.out.println(file2.getName()); 30 // 31 // System.out.println(file1.length()); 32 33 Date d = new Date(file1.lastModified()); //文件的最后修改时间 34 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); 35 System.out.println(sdf.format(d)); 36 } 37 38 }
6、文件名称过滤器的概述及使用
* A:文件名称过滤器的概述
* public String[] list(FilenameFilter filter)
* public File[] listFiles(FileFilter filter)
* B:文件名称过滤器的使用
* 需求:判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
1 public class Test { 2 3 public static void main(String[] args) { 4 File dir = new File("E:\"); 5 6 // String[] arr = dir.list(); //获取e盘下所有的文件或文件夹 7 // for (String string : arr) { 8 // if(string.endsWith(".jpg")) { 9 // System.out.println(string); 10 // } 11 // } 12 13 /*File[] subFiles = dir.listFiles(); //获取e盘下所有的文件或文件夹对象 14 15 for (File subFile : subFiles) { 16 if(subFile.isFile() && subFile.getName().endsWith(".jpg")) { 17 System.out.println(subFile); 18 } 19 }*/ 20 21 String[] arr = dir.list(new FilenameFilter() { 22 23 @Override 24 public boolean accept(File dir, String name) { 25 //System.out.println(dir); 26 //System.out.println(name); 27 File file = new File(dir, name); 28 return file.isFile() && file.getName().endsWith(".jpg"); 29 } 30 }); 31 32 for (String string : arr) { 33 System.out.println(string); 34 } 35 } 36 37 }