日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

杨老师课堂_Java核心技术下之控制台模拟文件管理器案例

發布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 杨老师课堂_Java核心技术下之控制台模拟文件管理器案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景需求介紹:

編寫一個模擬文件管理器的程序,實現控制臺對文件和文件夾的管理操作。

要求在此程序中:
當用戶輸入指令 1 時,代表“指定關鍵字檢索文件”,此時需要用戶輸入檢索的目錄和關鍵
    字,系統在用戶指定的目錄下檢索出文件名中包含關鍵字的文件,并將其絕對路徑展現出來;


指定 2 時,代表“指定后綴名檢索文件”,此時需要用戶輸入檢索的目錄和后綴名,系統在用

    戶指定的目錄下檢索出指定后綴名的文件,并將其絕對路徑展現出來。

指令 3 代表“復制文件/目錄”,此時需要用戶輸入源目錄和目標目錄,程序執行后,或將與原

    目錄下的內容復制到目標目錄下,

指令 4 代表“退出”即退出該系統。

預覽效果圖:?

思路解析:

案例分析:

(1)、根據任務介紹和運行結果分析可知,首先需要創建一個文件管理器內,可以在類中使
用 while 循環實現控制臺中的操作之間的多次輸入,并使用 switch 語句,根據控制臺輸入的
指令來判斷執行什么操作。


(2)、執行指令 1 時,代表指定關鍵字檢索文件,即在目錄下查找包含關鍵字的文件,執行
時,先要從控制臺獲取目錄和關鍵字,然后將其傳到后臺的方法中,后臺可將傳入關鍵字利
用過濾器制定成“規則”,通過遞歸的方式遍歷文件夾,在每個子文件下調用過濾器來獲取
符合規則的文件路徑的集合,并將集合返回,最后打印出來。


(3)、執行指令 2 時,代表指定后綴名檢索文件系在目錄下查找名稱結尾是指定后綴的文件,
執行時可以先從控制臺獲取目錄和后綴名,然后將后綴名拆分成數組,并將數組和目錄傳到
后臺方法中,后臺可用過濾器,將后綴名數組循環遍歷,制定成“規則”,通過遞歸的方式,
遍歷文件夾,在每個子文件夾下調用過濾器來獲取符合規則的文件路徑的集合,并將集合返
回,最后打印出來。


(4)、執行指令 3 時,代表將原目錄的內容復制到目標目錄中。執行時可以先從控制臺獲取
源目錄和目標目錄,然后將其傳入后臺,后臺主要是通過遞歸的方法,執行文件和文件夾復
制的,每次調用此方法時,首先會獲取當前目錄下的文件和文件夾列表,然后循環列表,并
判斷當前元素是文件還是文件夾,如果是文件夾就利用 File 類中的 mkdirs()方法在目標目錄
中創建此文件夾,在調用自身;如果是文件,由于不一定是純文本文件,所以可以采用字節
流將文件寫入目標目錄。


(5)、執行指令 4,執行退出該程序操作,該操作可以使用 System.exit(0)完成實現;

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

示例代碼:

package cn.javabs.iocase;import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;/*** * @author Mryang* */
public class DocumentManager {public static void main(String[] args) throws Exception {Scanner scan = new Scanner(System.in);System.out.println("---1:指定關鍵字檢索文件 2:指定后綴名檢索文件 3:賦值文件/目錄 4:退出----");while (true) {System.out.println("請輸入命令:");int command = scan.nextInt();switch (command) {case 1:searchByKeyWorld();break;case 2:searchBySuffix();break;case 3:copyDirectory();case 4:exit();break;default:System.out.println("您輸入的指令錯誤!");break;}}}/*** 指定后綴名檢索文件*/private static void searchBySuffix() {Scanner scan = new Scanner(System.in);System.out.print("請輸入您要檢索的目錄的位置");String path = scan.next();File file = new File(path);if (!file.exists() || !file.isDirectory()) {System.out.println(path + "(不是有效目錄)");return;}System.out.println("您輸入搜索后綴:");String suffix = scan.next();String[] suffixArray = suffix.split(",");ArrayList<String> list = FileUtils.listFiles(file, suffixArray);for (Object obj : list) {System.out.println(obj);}}/*** 退出*/private static void exit() {System.out.println("您已退出系統,謝謝使用");System.exit(0);}/*** 復制文件/目錄* * @throws Exception*/private static void copyDirectory() throws Exception {Scanner scan = new Scanner(System.in);System.out.print("請輸入源目錄");String srcDirectory = scan.next();File srcFile = new File(srcDirectory);if (!srcFile.exists() || !srcFile.isDirectory()) {System.out.println("無效目錄!");return;}System.out.print("請輸入目標位置:");String destDirectory = scan.next();File destFile = new File(destDirectory);if (!destFile.exists() || !destFile.isDirectory()) {System.out.println("無效位置!");return;}FileUtils.copySrcPathToDestPath(srcFile, destFile);}/*** 指定關鍵字檢索文件*/private static void searchByKeyWorld() {Scanner scan = new Scanner(System.in);System.out.print("請輸入您要檢索的目錄的位置");String path = scan.next();File file = new File(path);if (!file.exists() || !file.isDirectory()) {System.out.println(path + "(不是有效目錄)");return;}System.out.println("您輸入搜索關鍵字:");String key = scan.next();ArrayList<String> list = FileUtils.listFiles(file, key);for (Object obj : list) {System.out.println(obj);}}
}

?

工具類:

package cn.javabs.iocase;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.util.ArrayList;public class FileUtils {public static ArrayList<String> listFiles(File file,final String[] suffixArray) {FilenameFilter filter = new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {File currFile = new File(dir, name);if (currFile.isFile()) {for (String suffix : suffixArray) {if (name.endsWith("." + suffix)) {return true;}}}return false;}};ArrayList<String> arraylist = fileDir(file, filter);return arraylist;}/*** 復制文件/目錄* * @param srcFile* @param desFile* @throws Exception*/public static void copySrcPathToDestPath(File srcFile, File destFile)throws Exception {File[] files = srcFile.listFiles();for (int i = 0; i < files.length; i++) {File copiedFile = new File(destFile, files[i].getName());if (files[i].isDirectory()) {if (!copiedFile.mkdirs()) {System.out.println("無法創建 + copiedFile");return;}copySrcPathToDestPath(files[i], copiedFile);} else {FileInputStream input = new FileInputStream(files[i]);FileOutputStream output = new FileOutputStream(copiedFile);byte[] buffer = new byte[1024];int len = 0;while ((len = input.read(buffer)) != -1) {output.write(buffer, 0, len);}input.close();output.close();}}}/*** 指定關鍵字檢索文件* * @param file* @param key* @return*/public static ArrayList<String> listFiles(File file, final String key) {FilenameFilter filter = new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {File currFile = new File(dir, name);if (currFile.isFile() && name.contains(key)) {return true;}return false;}};// 遞歸當時獲取規定的路徑ArrayList<String> arraylist = fileDir(file, filter);return arraylist;}/*** * @param dir* @param filter* @return*/private static ArrayList<String> fileDir(File dir, FilenameFilter filter) {ArrayList<String> arraylist = new ArrayList<String>();File[] lists = dir.listFiles(filter);for (File list : lists) {arraylist.add(list.getAbsolutePath());}File[] files = dir.listFiles();for (File file : files) {if (file.isDirectory()) {ArrayList<String> every = fileDir(file, filter);arraylist.addAll(every);}}return arraylist;}
}

?

?
作者: 楊校

出處:?https://www.cnblogs.com/xiaoxiao5016/

分享是快樂的,也見證了個人成長歷程,文章大多都是工作經驗總結以及平時學習積累,基于自身認知不足之處在所難免,也請大家指正,共同進步。

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出, 如有問題, 可郵件(397583050@qq.com)咨詢。

轉載于:https://www.cnblogs.com/xiaoxiao5016/p/9052764.html

總結

以上是生活随笔為你收集整理的杨老师课堂_Java核心技术下之控制台模拟文件管理器案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。