我们要想实现IO的操作,就必须知道硬盘上文件的表现形式。而Java就提供了一个类File供我们使用。

File对象

File:用于表示文件和目录的信息,但是它不表示文件的内容。构造方法:

  1. File(String pathname) //根据一个路径得到File对象
  2. File(String parent, String child) //根据一个目录和一个子文件/目录得到File对象
  3. File(File parent, String child) //根据一个父File对象和一个子文件/目录得到File对象
  1. public class FileDemo {
  2. public static void main(String[] args) {
  3. //这三种方式创建的文件对象都相同
  4. //File(String pathname):根据一个路径得到File对象
  5. File file=new File("demo\\a.txt");
  6. //File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
  7. File file2=new File("demo","a.txt");
  8. //File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象
  9. File file3=new File(new File("demo"),"a.txt");
  10. }
  11. }

创建功能

  1. public boolean createNewFile() //创建文件 如果存在这样的文件,就不创建了
  2. public boolean mkdir() //创建文件夹 如果存在这样的文件夹,就不创建了
  3. public boolean mkdirs() //创建文件夹,如果父文件夹不存在,会帮你创建出来
  1. public class FileDemo2 {
  2. public static void main(String[] args) throws IOException {
  3. // 需求:在当前目录下创建一个文件夹demo
  4. File file = new File("demo");
  5. System.out.println("mkdir:" + file.mkdir());
  6. // 需求:我要在当前目录demo下创建一个文件a.txt
  7. File file2 = new File("demo\\a.txt");
  8. System.out.println("createNewFile:" + file2.createNewFile());
  9. // 需求:我要在目录test下创建一个文件b.txt
  10. // Exception in thread "main" java.io.IOException: 系统找不到指定的路径。
  11. // 注意:要想在某个目录下创建内容,该目录首先必须存在。
  12. // File file3 = new File("test\\b.txt");
  13. // System.out.println("createNewFile:" + file3.createNewFile());
  14. // 需求:我要在目录test下创建aaa目录
  15. // File file4 = new File("test\\aaa");
  16. // System.out.println("mkdir:" + file4.mkdir());
  17. //先创建test目录,然后再在test目录下创建aaa
  18. // File file5 = new File("test");
  19. // File file6 = new File("test\\aaa");
  20. // System.out.println("mkdir:" + file5.mkdir());
  21. // System.out.println("mkdir:" + file6.mkdir());
  22. // 其实我们有更简单的方法
  23. File file7 = new File("test\\aaa");
  24. System.out.println("mkdirs:" + file7.mkdirs());
  25. // 看下面的这个东西:
  26. File file8 = new File("aaa\\a.txt");
  27. System.out.println("mkdirs:" + file8.mkdirs());
  28. //骑白马的不一定是王子,可能是唐僧。
  29. // 注意:创建文件还是文件夹,方法不要调错了。
  30. }
  31. }

删除功能

  1. public boolean delete()

注意:

  • 如果的创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
  • Java中的删除不走回收站。
  • 要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹
  1. public class FileDemo3 {
  2. public static void main(String[] args) throws IOException {
  3. // 删除功能:我要删除demo\\a.txt这个文件
  4. File file = new File("demo\\a.txt");
  5. System.out.println("delete:" + file.delete());
  6. System.out.println("delere:" + new File("demo").delete());
  7. // 删除功能:我要删除test\\aaa这个文件夹
  8. File file2 = new File("test\\aaa");
  9. System.out.println("delete:" + file2.delete());
  10. // 删除功能:我要删除aaa文件夹
  11. //File file3 = new File("aaa");
  12. // System.out.println("delete:" + file5.delete());
  13. //要删除aaa文件夹,要注意aaa文件夹内不能包含文件或者文件夹
  14. //先删除aaa文件下得我文件或者文件夹
  15. File file4 = new File("aaa\\a.txt");
  16. //再删除该文件
  17. File file5 = new File("aaa");
  18. System.out.println("delete:" + file4.delete());
  19. System.out.println("delete:" + file5.delete());
  20. }
  21. }

重命名功能

  1. public boolean renameTo(File dest)
  2. //如果路径名相同,就是改名。
  3. //如果路径名不同,就是改名并剪切。
  1. public class FileDemo4 {
  2. public static void main(String[] args) {
  3. File file=new File("demo1\\a.txt");
  4. File file2=new File("demo2\\a.txt");
  5. System.out.println("rename:"+ file.renameTo(file2));
  6. }
  7. }

判断功能

  1. public boolean isDirectory() //判断是否是目录
  2. public boolean isFile() //判断是否是文件
  3. public boolean exists() //判断是否存在
  4. public boolean canRead() //判断是否可读
  5. public boolean canWrite() //判断是否可写
  6. public boolean isHidden() //判断是否隐藏
  1. public class FileDemo5 {
  2. public static void main(String[] args) {
  3. // 创建文件对象
  4. File file = new File("demo2\\a.txt");
  5. System.out.println("isDirectory:" + file.isDirectory());// false
  6. System.out.println("isFile:" + file.isFile());// true
  7. System.out.println("exists:" + file.exists());// true
  8. System.out.println("canRead:" + file.canRead());// true
  9. System.out.println("canWrite:" + file.canWrite());// true
  10. System.out.println("isHidden:" + file.isHidden());// false
  11. }
  12. }

获取功能I

  1. public String getAbsolutePath() //获取绝对路径
  2. public String getPath() //获取相对路径
  3. public String getName() //获取名称
  4. public long length() //获取长度。字节数
  5. public long lastModified() //获取最后一次的修改时间,毫秒值
  1. public class FileDemo6 {
  2. public static void main(String[] args) {
  3. // 创建文件对象
  4. File file = new File("demo2\\a.txt");
  5. System.out.println("getAbsolutePath:" + file.getAbsolutePath());
  6. System.out.println("getPath:" + file.getPath());
  7. System.out.println("getName:" + file.getName());
  8. System.out.println("length:" + file.length());
  9. System.out.println("lastModified:" + file.lastModified());
  10. }
  11. }

获取功能II

  1. public String[] list() //获取指定目录下的所有文件或者文件夹的名称数组
  2. public File[] listFiles() //获取指定目录下的所有文件或者文件夹的File数组
  1. public class FileDemo7 {
  2. public static void main(String[] args) {
  3. // 指定一个目录
  4. File file = new File("src\\code_00_disk");
  5. // public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
  6. String[] strArray = file.list();
  7. for (String s : strArray) {
  8. System.out.println(s);
  9. }
  10. System.out.println("------------");
  11. // public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
  12. File[] fileArray = file.listFiles();
  13. if(fileArray!=null){
  14. for (File f : fileArray) {
  15. System.out.println(f.getName());
  16. }
  17. }
  18. System.out.println("--------------");
  19. listAllFiles(file);
  20. }
  21. //递归地列出一个目录下所有文件
  22. public static void listAllFiles(File dir) {
  23. if (dir == null || !dir.exists()) {
  24. return;
  25. }
  26. if (dir.isFile()) {
  27. System.out.println(dir.getName());
  28. return;
  29. }
  30. for (File file : dir.listFiles()) {
  31. listAllFiles(file);
  32. }
  33. }
  34. }
  • 小练习:将demo1中的文件剪切到demo2中
  1. public class FileDemo8 {
  2. public static void main(String[] args) {
  3. //指定源目录
  4. File srcFolder = new File("demo1");
  5. //指定目标目录
  6. File destFolder = new File("demo2");
  7. File[] fileArray = srcFolder.listFiles();
  8. if(fileArray!=null){
  9. for (File file : fileArray) {
  10. File newFile=new File(destFolder,file.getName());
  11. file.renameTo(newFile);
  12. }
  13. }
  14. }
  15. }