Java20天速成——进阶课程(3)
Java20天速成——进阶课程(3) 文件操作 File对象 常用方法 public static void main(String[] args) { // 创建File对象,表示文件test.txt的绝对路径 File f1 = new File("D:/JAVA/JavaSeProMax/file-io-app/src/com/showguan/FileDemo/test.txt"); // 创建File对象,表示文件夹JavaSeProMax的绝对路径 File f2 = new File("D:/JAVA"); // 创建File对象,表示不存在的文件路径t.txt File f3 = new File("D:/JAVA/t.txt"); // 输出文件f1的长度(字节数) System.out.println(f1.length()); // 输出文件夹f2的长度,由于f2表示文件夹,而不是文件,因此返回值没有意义 System.out.println(f2.length()); // 输出文件f3的长度,由于文件路径不存在,因此返回0 System.out.println(f3.length()); // 检查文件f3是否存在,返回false,因为文件路径不存在 System.out.println(f3.exists()); // 创建File对象,表示相对路径下的文件test.txt // 相对路径默认从当前工程的根目录开始寻找,因此文件路径不存在 File f4 = new File("file-io-app\\src\\com\\showguan\\FileDemo\\test.txt"); // 检查文件f4是否存在,返回false,因为文件路径不存在 System.out.println(f4.exists()); // 输出文件f4的长度,由于文件路径不存在,因此返回0 System.out.println(f4.length()); } public static void main(String[] args) { // 创建File对象,表示相对路径下的文件test.txt File f1 = new File("file-io-app\\src\\com\\showguan\\FileDemo\\test.txt"); // 创建File对象,表示文件夹file-io-app的路径 File f2 = new File("file-io-app"); // 检查文件f1是否存在,返回true,因为文件路径存在 System.out.println(f1.exists()); // 检查f1是否表示一个文件,返回true System.out.println(f1.isFile()); // 检查f1是否表示一个文件夹,返回false System.out.println(f1.isDirectory()); // 检查f2是否表示一个文件夹,返回true System.out.println(f2.isDirectory()); // 获取文件f1的名称,输出test.txt System.out.println(f1.getName()); // 获取文件f1的长度(字节数) System.out.println(f1.length()); // 获取文件f1最后修改时间 long time = f1.lastModified(); // 格式化最后修改时间并输出 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); System.out.println(sdf.format(time)); // 获取文件f1的路径(创建时使用的路径),输出相对路径file-io-app\src\com\showguan\FileDemo\test.txt System.out.println(f1.getPath()); // 获取文件f1的绝对路径,输出完整的绝对路径 System.out.println(f1.getAbsolutePath()); } 创建文件、目录 import java.io.File; import java.io.IOException; public static void main(String[] args) throws IOException { // 创建File对象,表示新文件test2.txt的路径 File f1 = new File("file-io-app\\src\\com\\showguan\\FileDemo\\test2.txt"); // 创建新文件test2.txt,如果文件不存在则创建并返回true,否则返回false System.out.println(f1.createNewFile()); // 创建File对象,表示新文件夹aaa的路径 File f2 = new File("file-io-app\\src\\com\\showguan\\FileDemo\\aaa"); // 创建新文件夹aaa,如果文件夹不存在则创建并返回true,否则返回false System.out.println(f2.mkdir()); // 创建File对象,表示新文件夹路径a\b\c File f3 = new File("file-io-app\\src\\com\\showguan\\FileDemo\\a\\b\\c"); // 创建新文件夹路径a\b\c,如果路径中的文件夹不存在则递归创建,创建成功返回true,否则返回false System.out.println(f3.mkdirs()); // 删除文件test2.txt,删除成功返回true,否则返回false System.out.println(f1.delete()); // 删除文件夹a,由于文件夹非空,因此删除失败返回false File f4 = new File("file-io-app\\src\\com\\showguan\\FileDemo\\a"); System.out.println(f4.delete()); } public static void main(String[] args) { // 遍历方法,只能遍历一级文件 File f1 = new File("D:\\JAVA"); // 获取D:\JAVA目录下的所有一级文件名 String[] names = f1.list(); // 遍历打印所有一级文件名 for (String name : names) { System.out.println(name); } // 获取D:\JAVA目录下的所有一级文件对象 File f2 = new File("D:\\JAVA"); // 获取D:\JAVA目录下的所有一级文件对象 File[] files = f2.listFiles(); // 遍历打印所有一级文件对象的绝对路径 for (File file : files) { System.out.println(file.getAbsoluteFile()); } // 尝试获取不存在的目录的一级文件对象,返回null File f3 = new File("D:\\JAVA1"); System.out.println(f3.listFiles()); // null // 尝试获取非文件夹的一级文件对象,返回null File f4 = new File("D:\\JAVA\\test1"); // 因为f4代表的路径不是文件夹,因此listFiles()返回null File[] files4 = f4.listFiles(); System.out.println(Arrays.toString(files4)); // null } 递归查找 public static void main(String[] args) throws IOException { searchFile(new File("D:\\文档"), "23暑期青训营笔记"); // 调用搜索文件的方法 } /** * 递归搜索指定目录下的文件,并打印找到的文件的绝对路径,并使用系统默认程序打开该文件。 * @param dir 要搜索的目录 * @param fileName 要搜索的文件名 * @throws IOException 如果发生I/O错误 */ public static void searchFile(File dir, String fileName) throws IOException { // 如果目录为空、不存在或者是文件,则直接返回 if(dir==null || !dir.exists() || dir.isFile()){ return ; } // 获取目录下的所有文件和子目录 File[] files = dir.listFiles(); // 如果目录下存在文件 if(files!=null && files.length>0){ // 遍历目录下的所有文件和子目录 for (File file : files) { // 如果是文件 if(file.isFile()){ // 判断文件名是否包含指定的文件名 if(file.getName().contains(fileName)){ System.out.println("找到了!" + file.getAbsoluteFile()); // 打印找到的文件的绝对路径 Runtime runtime = Runtime.getRuntime(); runtime.exec(file.getAbsolutePath()); // 使用系统默认程序打开该文件 return; // 找到文件后直接返回 } }else{ // 如果是目录,则递归调用搜索文件的方法 searchFile(file, fileName); } } } } 递归删除 public static void main(String[] args) throws IOException { File file = new File("D:\\JAVA\\test1\\test"); // 要删除的目录的路径 deleteDir(file); // 调用删除目录的方法 } /** * 递归删除目录及其所有子目录和文件。 * @param dir 要删除的目录 */ public static void deleteDir(File dir){ // 如果目录为空或者不存在,则直接返回 if(dir==null || !dir.exists()){ return ; } // 如果是文件,则直接删除并返回 if(dir.isFile()){ dir.delete(); return; } // 获取目录下的所有文件和子目录 File[] files = dir.listFiles(); // 如果目录为空,则直接返回 if(files==null){ return; } // 遍历目录下的所有文件和子目录 for (File file : files) { if(file.isFile()){ // 如果是文件,则直接删除 file.delete(); } deleteDir(file); // 递归删除子目录 } dir.delete(); // 删除当前目录 } 字符集 UTF-32 ...