跳转到手机网站,手机购买网站源码,东莞网络做推广公司,免费seo快速排名系统前言#xff1a;
java.io包中的File类是唯一一个可以代表磁盘文件的对象#xff0c;它定义了一些用于操作文件的方法。通过调用File类提供的各种方法#xff0c;可以创建、删除或者重命名文件#xff0c;判断硬盘上某个文件是否存在#xff0c;查询文件最后修改时间… 前言
java.io包中的File类是唯一一个可以代表磁盘文件的对象它定义了一些用于操作文件的方法。通过调用File类提供的各种方法可以创建、删除或者重命名文件判断硬盘上某个文件是否存在查询文件最后修改时间等等。本节将针对File类进行详细讲解。 10.1.1 创建File对象
我的笔记
File类的构造方法
java.io.File 类提供了几个构造方法常用的有
方法声明功能描述File(String pathname) 通过指定的一个字符串类型的文件路径创建一个File对象File(String parent, String child) 根据指定的一个字符串类型的父路径和一个字符串类型的子路径包括文件名称创建一个File对象File(File parent, String child)根据指定的一个File类的父路径和一个字符串类型的子路径包括文件名称创建一个File对象
这些构造方法允许您使用字符串路径或者 File 对象和子路径字符串来创建 File 对象。在这些方法中您需要传入文件路径。
例子
以下是一个简单的示例代码演示如何使用 File 类的构造方法创建 File 对象。
import java.io.File;public class Example01 {public static void main(String[] args) {File f new File(D:\\file\\a.txt); //使用绝对路径创建File对象File f1 new File(src\\Hello.java); //使用相对路径创建File对象System.out.println(f);System.out.println(f1);}
}
在这个例子中f 是通过绝对路径创建的 File 对象而 f1 是通过相对路径创建的。
注意事项
在Windows中目录的路径分隔符是反斜线 \但在Java字符串中\ 是一个转义字符所以要写成 \\。也可以使用正斜线 / 作为路径分隔符例如 D:/file/a.txt。
总结
在这一节中我们学习了如何使用 java.io.File 类的构造方法创建 File 对象。这些构造方法允许我们使用不同的方式绝对路径、相对路径、父路径子路径来创建 File 对象非常灵活。同时我们也注意到了在路径字符串中要正确使用路径分隔符。 10.1.2 File类常用的方法
java.io.File 类具有一系列的方法可以用来操作文件和目录。以下是一些常用方法的概览和描述。
#### 常用方法
1. **exists()** - 返回类型boolean - 描述判断File对象指向的文件或目录是否存在。若存在则返回true否则返回false。
2. **delete()** - 返回类型boolean - 描述删除File对象指向的文件或目录。若删除成功则返回true否则返回false。
3. **createNewFile()** - 返回类型boolean - 描述当File对象指向的文件不存在时该方法将尝试创建一个新文件。若创建成功则返回true否则返回false。
4. **getName()** - 返回类型String - 描述返回File对象指向的文件或目录的名称。
5. **getPath() 和 getAbsolutePath()** - 返回类型String - 描述getPath() 返回File对象指向的路径而 getAbsolutePath() 返回File对象指向的绝对路径。
6. **getParentFile()** - 返回类型String - 描述返回File对象指向的文件或目录的父目录。
7. **canRead() 和 canWrite()** - 返回类型boolean - 描述判断File对象指向的文件或目录是否可读/可写。若是则返回true否则返回false。
8. **isFile() 和 isDirectory()** - 返回类型boolean - 描述判断File对象指向的是否是文件或目录。若是则返回true否则返回false。
9. **isAbsolute()** - 返回类型boolean - 描述判断File对象指向的文件或目录的路径是否是绝对路径。
10. **lastModified()** - 返回类型long - 描述返回文件最后修改时间的毫秒值从1970年1月1日0时0分0秒算起。
11. **length()** - 返回类型long - 描述返回文件的长度单位是字节。
12. **list() 和 listFiles()** - 返回类型String[] 和 File[] - 描述list() 递归列出指定目录的全部内容包括子目录与文件的名称listFiles() 返回一个包含File对象所有子文件和子目录的File数组。
#### 例子
import java.io.File;public class Example02 {public static void main(String[] args) {File file new File(src/test.txt);System.out.println(文件是否存在 file.exists());System.out.println(文件名 file.getName());System.out.println(文件大小 file.length() bytes);System.out.println(文件相对路径 file.getPath());System.out.println(文件绝对路径 file.getAbsolutePath());System.out.println(文件的父级对象是否为文件 file.isFile());System.out.println(文件删除是否成功 file.delete());}
}
#### 特别的方法
1. **createTempFile() 和 deleteOnExit()** - 描述createTempFile() 用于创建一个临时文件。deleteOnExit() 方法在Java虚拟机退出时自动删除临时文件。
import java.io.File;
import java.io.IOException;public class Example03 {public static void main(String[] args) throws IOException {File f File.createTempFile(itcast-, .txt);f.deleteOnExit(); // Java虚拟机退出时自动删除文件System.out.println(f是否为文件 f.isFile());System.out.println(f的相对路径 f.getPath());}
}
#### 注意事项和小技巧
- 在使用 delete() 方法删除文件或目录前务必先使用 exists() 方法检查其是否存在。 - 使用 createNewFile() 创建新文件时要处理可能抛出的 IOException 异常。 - 利用 createTempFile() 和 deleteOnExit() 可以方便地管理临时文件无需手动删除。 10.1.3 遍历目录下的文件
我的笔记
遍历目录
java.io.File 类提供了 list() 方法该方法可以返回一个目录下所有文件和目录的名称字符串数组。结合这些名称你可以遍历指定目录下的所有文件。
1. 遍历指定目录下的所有文件
这是最基础的遍历方式以下是一个简单的实例演示
import java.io.File;public class Example04 {public static void main(String[] args) {File file new File(D:\\javase03);if(file.isDirectory()) {String[] names file.list();for (String name : names) {System.out.println(name);}}}
}
在这个示例中我们创建了一个指向 D:\\javase03 目录的 File 对象。我们通过调用 isDirectory() 方法判断这个路径是否指向一个存在的目录。如果是我们就调用 list() 方法来获取该目录下所有文件和子目录的名称并依次打印它们。
注意事项
- **检查目录存在性** 在调用 list() 方法之前通过 isDirectory() 方法检查指定路径是否是一个存在的目录是很重要的因为 list() 方法在路径不是一个目录或者目录不存在时会返回 null。
- **遍历子目录** 如果需要遍历包括子目录中的文件在内的所有文件需要递归地处理每个子目录。
笔记总结
- java.io.File 类中的 list() 方法可以用于获取一个目录下所有文件和目录的名称。 - 在调用 list() 方法之前应该使用 isDirectory() 方法检查路径是否指向一个存在的目录。 - 可以使用三种不同的方式进行遍历遍历指定目录下的所有文件遍历指定目录下具有指定扩展名的文件以及遍历包括子目录中的文件在内的所有文件。 - 对于需要深度遍历子目录的场景需要递归地处理每个子目录。 10.1.4 删除文件及目录
#### 目标
- 学习如何使用Java中的File类的delete()方法来删除文件或目录。 - 理解如何递归地删除非空目录。
#### 关键概念
1. **File类的delete()方法** - **作用** 用于删除由File对象表示的文件或目录。 - **返回值** 如果成功删除则返回true否则返回false。
2. **非空目录的删除** - **概述** File类的delete()方法无法直接删除包含文件或子目录的目录。 - **解决方法** 需要递归地删除目录中的所有子目录和文件。
#### 示例代码
##### 删除文件或空目录
import java.io.*;
public class Example07 {public static void main(String[] args) {File file new File(D:\\hello);if (file.exists()) {System.out.println(file.delete()); // 如果hello目录是空的将会被删除并返回true。}}
}
##### 递归删除非空目录
import java.io.*;
public class Example08 {public static void main(String[] args) {File file new File(D:\\hello);deleteDir(file);System.out.println(删除成功!);}public static void deleteDir(File dir) {if (dir.exists()) {File[] files dir.listFiles();for (File file : files) {if (file.isDirectory()) {deleteDir(file);} else {file.delete();}}}dir.delete(); // 最后删除原始目录}
}
笔记总结
1. **基础操作** - 使用delete()方法可以删除文件或空目录。 - 如果尝试删除非空目录delete()方法将返回false表示删除失败。
2. **递归删除** - 要删除非空目录需要递归地遍历并删除所有子目录和文件。 - 示例代码Example08演示了如何实现这一操作首先检查目录是否存在然后获取目录中的所有文件和子目录并对每一个进行检查。如果是目录就递归调用deleteDir方法如果是文件就直接删除。最后删除原始目录。