1. File类的使用
1 package cn.itcast_01; 2 3 import java.io.File; 4 5 /* 6 * 我们要想实现IO的操作,就必须知道硬盘上文件的表现形式。 7 * 而Java就提供了一个类File供我们使用。 8 * 9 * File:文件和目录(文件夹)路径名的抽象表示形式 10 * 构造方法: 11 * File(String pathname):根据一个路径得到File对象 12 * File(String parent, String child):根据一个目录和一个子文件/目录得到File对象 13 * File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象 14 */ 15 public class FileDemo { 16 public static void main(String[] args) { 17 // File(String pathname):根据一个路径得到File对象 18 // 把e:\demo\a.txt封装成一个File对象 19 File file = new File("E:\demo\a.txt"); 20 21 // File(String parent, String child):根据一个目录和一个子文件/目录得到File对象 22 File file2 = new File("E:\demo", "a.txt"); 23 24 // File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象 25 File file3 = new File("e:\demo"); 26 File file4 = new File(file3, "a.txt"); 27 28 // 以上三种方式其实效果一样 29 } 30 }
上面提到的文件是不存在的,
E:\demo\a.txt" 接下来我们就是学习调用类方法来创建:
1 package cn.itcast_02; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 /* 7 *创建功能: 8 *public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了 9 *public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了 10 *public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来 11 * 12 *骑白马的不一定是王子,可能是班长。 13 *注意:你到底要创建文件还是文件夹,你最清楚,方法不要调错了。 14 */ 15 public class FileDemo { 16 public static void main(String[] args) throws IOException { 17 // 需求:我要在e盘目录下创建一个文件夹demo 18 File file = new File("e:\demo"); 19 System.out.println("mkdir:" + file.mkdir()); 20 21 // 需求:我要在e盘目录demo下创建一个文件a.txt 22 File file2 = new File("e:\demo\a.txt"); 23 System.out.println("createNewFile:" + file2.createNewFile()); 24 25 // 需求:我要在e盘目录test下创建一个文件b.txt 26 // Exception in thread "main" java.io.IOException: 系统找不到指定的路径。 27 // 注意:要想在某个目录下创建内容,该目录首先必须存在。 28 // File file3 = new File("e:\test\b.txt"); 29 // System.out.println("createNewFile:" + file3.createNewFile()); 30 31 // 需求:我要在e盘目录test下创建aaa目录 32 // File file4 = new File("e:\test\aaa"); 33 // System.out.println("mkdir:" + file4.mkdir()); 34 35 // File file5 = new File("e:\test"); 36 // File file6 = new File("e:\test\aaa"); 37 // System.out.println("mkdir:" + file5.mkdir()); 38 // System.out.println("mkdir:" + file6.mkdir()); 39 40 // 其实我们有更简单的方法 41 File file7 = new File("e:\aaa\bbb\ccc\ddd"); 42 System.out.println("mkdirs:" + file7.mkdirs()); 43 44 // 看下面的这个东西: 45 File file8 = new File("e:\liuyi\a.txt"); 46 System.out.println("mkdirs:" + file8.mkdirs()); 47 } 48 }
下面说明一下删除功能:
1 package cn.itcast_03; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 /* 7 * 删除功能:public boolean delete() 8 * 9 * 注意: 10 * A:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。 11 * B:Java中的删除不走回收站。 12 * C:要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹 13 */ 14 public class FileDemo { 15 public static void main(String[] args) throws IOException { 16 // 创建文件 17 // File file = new File("e:\a.txt"); 18 // System.out.println("createNewFile:" + file.createNewFile()); 19 20 // 我不小心写成这个样子了 21 File file = new File("a.txt"); 22 System.out.println("createNewFile:" + file.createNewFile()); 23 24 // 继续玩几个 25 File file2 = new File("aaa\bbb\ccc"); 26 System.out.println("mkdirs:" + file2.mkdirs()); 27 28 // 删除功能:我要删除a.txt这个文件 29 File file3 = new File("a.txt"); 30 System.out.println("delete:" + file3.delete()); 31 32 // 删除功能:我要删除ccc这个文件夹 33 File file4 = new File("aaa\bbb\ccc"); 34 System.out.println("delete:" + file4.delete()); 35 36 // 删除功能:我要删除aaa文件夹 37 // File file5 = new File("aaa"); 38 // System.out.println("delete:" + file5.delete()); 39 40 File file6 = new File("aaa\bbb"); 41 File file7 = new File("aaa"); 42 System.out.println("delete:" + file6.delete()); 43 System.out.println("delete:" + file7.delete()); 44 } 45 }
下面再来介绍重命名的功能:
1 package cn.itcast_04; 2 3 import java.io.File; 4 5 /* 6 * 重命名功能:public boolean renameTo(File dest) 7 * 如果路径名相同,就是改名。 8 * 如果路径名不同,就是改名并剪切。 9 * 10 * 路径以盘符开始:绝对路径 c:\a.txt 11 * 路径不以盘符开始:相对路径 a.txt 12 */ 13 public class FileDemo { 14 public static void main(String[] args) { 15 // 创建一个文件对象 16 // File file = new File("林青霞.jpg"); 17 // // 需求:我要修改这个文件的名称为"东方不败.jpg" 18 // File newFile = new File("东方不败.jpg"); 19 // System.out.println("renameTo:" + file.renameTo(newFile)); 20 21 File file2 = new File("东方不败.jpg"); 22 File newFile2 = new File("e:\林青霞.jpg"); 23 System.out.println("renameTo:" + file2.renameTo(newFile2)); 24 } 25 }
接下来我们说明一下file的判断功能:
1 package cn.itcast_05; 2 3 import java.io.File; 4 5 /* 6 * 判断功能: 7 * public boolean isDirectory():判断是否是目录 8 * public boolean isFile():判断是否是文件 9 * public boolean exists():判断是否存在 10 * public boolean canRead():判断是否可读 11 * public boolean canWrite():判断是否可写 12 * public boolean isHidden():判断是否隐藏 13 */ 14 public class FileDemo { 15 public static void main(String[] args) { 16 // 创建文件对象 17 File file = new File("a.txt"); 18 19 System.out.println("isDirectory:" + file.isDirectory());// false 20 System.out.println("isFile:" + file.isFile());// true 21 System.out.println("exists:" + file.exists());// true 22 System.out.println("canRead:" + file.canRead());// true 23 System.out.println("canWrite:" + file.canWrite());// true 24 System.out.println("isHidden:" + file.isHidden());// false 25 } 26 }
我们来说一下file类的获取功能:
1 package cn.itcast_06; 2 3 import java.io.File; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6 7 /* 8 * 获取功能: 9 * public String getAbsolutePath():获取绝对路径 10 * public String getPath():获取相对路径 11 * public String getName():获取名称 12 * public long length():获取长度。字节数 13 * public long lastModified():获取最后一次的修改时间,毫秒值 14 */ 15 public class FileDemo { 16 public static void main(String[] args) { 17 // 创建文件对象 18 File file = new File("demo\test.txt"); 19 20 System.out.println("getAbsolutePath:" + file.getAbsolutePath()); 21 System.out.println("getPath:" + file.getPath()); 22 System.out.println("getName:" + file.getName()); 23 System.out.println("length:" + file.length()); 24 System.out.println("lastModified:" + file.lastModified()); 25 26 // 1416471971031 27 Date d = new Date(1416471971031L); 28 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 29 String s = sdf.format(d); 30 System.out.println(s); 31 } 32 }
上面的执行结果如下:
file类的高级获取功能:
1 package cn.itcast_07; 2 3 import java.io.File; 4 5 /* 6 * 获取功能: 7 * public String[] list():获取指定目录下的所有文件或者文件夹的名称数组 8 * public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组 9 */ 10 public class FileDemo { 11 public static void main(String[] args) { 12 // 指定一个目录 13 File file = new File("e:\"); 14 15 // public String[] list():获取指定目录下的所有文件或者文件夹的名称数组 16 String[] strArray = file.list(); 17 for (String s : strArray) { 18 System.out.println(s); 19 } 20 System.out.println("------------"); 21 22 // public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组 23 File[] fileArray = file.listFiles(); 24 for (File f : fileArray) { 25 System.out.println(f.getName()); 26 } 27 } 28 }