遞歸遍歷目錄
首先
先列出當前目錄所包含的內容
File[] files = currentDir.listFiles();if (files == null || files.length == 0) {// 若是空目錄或非法目錄, 則直接返回return;}
然后
遍歷列出的文件, 分情況兩種討論
for (File f: files) {// 加個日志, 方便查看程序執行情況System.out.println(f.getAbsolutePath());if (f.isFile()) {// 如果當前文件是普通文件, 看看文件名是否包含了 word, 來決定是否刪除dealFile(f, word);}else {// 如果當前文件時目錄文件, 就遞歸執行 scanDirscanDir(f, word);}}
最后完整代碼展示
private static Scanner scanner = new Scanner(System.in);public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("請輸入要搜索的根目錄: ");File rootPath = new File(scanner.next()) ;System.out.println("請輸入要刪除的關鍵詞:");String word = scanner.next();if (!rootPath.isDirectory()) {System.out.println("您此時輸入的路徑不是合法目錄!");return;}scanDir(rootPath, word);}public static void scanDir(File currentDir, String word) {File[] files = currentDir.listFiles();if (files == null || files.length == 0) {return;}for (File f: files) {System.out.println(f.getAbsolutePath());if (f.isFile()) {dealFile(f, word);}else {scanDir(f, word);}}}private static void dealFile(File f, String word) {if (!f.getName().contains(word)) {System.out.println("未找到你所輸入的關鍵字文件, 程序將結束!");return;}System.out.println("該文件是: "+ f.getAbsolutePath() + ", 是否要確認刪除? (Y/N)");String choise = scanner.next();if (choise.equals("Y") || choise.equals("y")) {f.delete();}}
普通文件復制
// 把文件 A 復制成 文件 B 的基本步驟就是: 先打開文件 A , 依次讀取文件 A 的每個字節, 然后再寫入文件 B 就可以
// 直接代碼展示一下
public static void main(String[] args) throws IOException {Scanner s = new Scanner(System.in);System.out.println("請輸入要復制的文件路徑: ");String src = s.next();File srcFile = new File(src);if (!srcFile.isFile()) {System.out.println("您輸入的源文件路徑非法!");return;}System.out.println("請輸入要復制的目標路徑: ");String dest = s.next();File destFile = new File(dest);if (!destFile.getParentFile().isDirectory()) {System.out.println("您輸入的目標文件路徑非法! ");return;}try (InputStream inputStream = new FileInputStream(srcFile);OutputStream outputStream = new FileOutputStream(destFile)){while (true) {byte[] buffer = new byte[20480];int n = inputStream.read(buffer);System.out.printf("n = %x ", n);if (n == -1) {System.out.println("讀取到 eof, 循環結束");break;}outputStream.write(buffer,0,n);}}}