1.扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否要删除该文件
package CSDN; import java.io.File; import java.util.LinkedList; import java.util.List; import java.util.Scanner; /** * @Author GoodManS * @Description 扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否要删除该文件 */ public class Demo6 { public static void main(String[] args) { System.out.println("请输入你要扫描的目录:"); Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); File file1 = new File(str); while (!file1.isDirectory()) { System.out.println("不存在该扫描目录,请重新输入:"); str = scanner.nextLine(); file1 = new File(str); } System.out.println("请输入你想要查询内容的关键字:"); String key = scanner.nextLine(); List<File> ret = new LinkedList<>(); scanDir(file1, key, ret); for (File i : ret) { System.out.println(i.getAbsoluteFile()); } } public static void scanDir(File rootDir, String key, List<File> ret) { File[] files = rootDir.listFiles();//这个方法返回的是 这个路径下所有文件和目录 if (files == null || files.length == 0) { return; } for (File file : files) { if (file.isDirectory()) { scanDir(file, key, ret); } else { if (file.getName().contains(key)) { ret.add(file.getAbsoluteFile()); } } } } }
2.文件的复制
package CSDN; import java.io.*; import java.util.Scanner; /** * @Author GoodManS * @Description 进行普通文件的复制 */ public class Demo8 { public static void main(String[] args) throws IOException { System.out.println("请输入你要复制的文件:"); Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); File f1 = new File(str); if (!f1.isFile()) { System.out.println("文件路径输入错误!或者文件不是普通文件!请重新输入:"); str = scanner.nextLine(); f1 = new File(str); } copyFile(f1); } public static File copyFile(File file1) throws IOException { File ret = new File("C:/Users/19396/Desktop/cs.txt"); try (InputStream is = new FileInputStream(file1)) { try (OutputStream os = new FileOutputStream(ret)){ byte[] bytes = new byte[1024]; int len; do { len = is.read(bytes); } while (len != -1); os.write(bytes); os.flush(); } } return ret; } }
3. 文件查找(也查找文件内容)
public class Demo { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); // 接收用户输入的路径 System.out.println("请输入要扫描的路径:"); String rootPath = scanner.next(); // 校验路径合法性 if (rootPath == null || rootPath.equals("")) { System.out.println("路径不能为空。"); return; } // 根据输入的路径实例化文件对象 File rootDir = new File(rootPath); if (rootDir.exists() == false) { System.out.println("指定的目录不存在,请检查。"); return; } if (rootDir.isDirectory() == false) { System.out.println("指定的路径不是一个目录。请检查。"); return; } // 接收要查找的关键字 System.out.println("请输入要查找的关键字:"); String token = scanner.next(); if (token == null || token.equals("")) { System.out.println("查找的关键字不能为空,请检查。"); return; } // 遍历目录查找符合条件的文件 // 保存找到的文件 List<File> fileList = new ArrayList<>(); scanDir(rootDir, token, fileList); // 打印结果 if (fileList.size() > 0) { System.out.println("共找到了 " + fileList.size() + "个文件:"); for (File file: fileList) { System.out.println(file.getAbsoluteFile()); } } else { System.out.println("没有找到相应的文件。"); } } private static void scanDir(File rootDir, String token, List<File> fileList) throws IOException { // 获取目录下的所有文件 File[] files = rootDir.listFiles(); if (files == null || files.length == 0) { return; } // 遍历 for (File file : files) { if (file.isDirectory()) { // 如果是文件就递归 scanDir(file, token, fileList); } else { // 文件名是否包含 if (file.getName().contains(token)) { fileList.add(file); } else { if (isContainContent(file, token)) { fileList.add(file.getAbsoluteFile()); } } } } } private static boolean isContainContent(File file, String token) throws IOException { // 定义一个StringBuffer存储读取到的内容 StringBuffer sb = new StringBuffer(); // 输入流 try (InputStream inputStream = new FileInputStream(file)) { try (Scanner scanner = new Scanner(inputStream, "UTF-8")) { // 读取每一行 while (scanner.hasNext()) { // 一次读一行 sb.append(scanner.nextLine()); // 加入一行的结束符 sb.append("\r\n"); } } } return sb.indexOf(token) != -1; } }