簡體   English   中英

Java-Windows 7讀取文件並將其寫入列表

[英]Java - Windows 7 reading files and write them to a List

基本上,我想做的是從Windows計算機的特定路徑(例如“ C:\\”)讀取所有文件。 將所有文件讀取到文件數組后,我在for循環中檢查文件是否為目錄。 我也在過濾隱藏文件。 之后,我對2個數組列表中的每一個進行排序,如果當前目錄不是根目錄,則會添加“ ../”,並將所有內容寫入最終數組列表。

但是問題是-我認為這個Java程序向我顯示了比目錄更多的目錄。 因為Windows cmd shell的“ C:\\> dir”輸出與我的Java程序輸出不同。

任何想法如何解決?

輸出“ C:\\> dir”:

{ "PerfLogs", "Program Files", "Program Files(x86)", "Users", "Windows" }

該java程序的輸出:

{ "Documents and Settings", "Dokumente und Einstellungen", "PerfLogs", "Program Files(x86)", "Program Files", "Users", "Windows", "pagefile.sys" }

private void getFileBrowser(String dirPATH) {
    ITEM_TEMP = new ArrayList<String>();
    PATH_TEMP = new ArrayList<String>();
    ITEM_TEMP.clear();
    PATH_TEMP.clear();

    currentWorkingDirectory = dirPATH;

    File f = new File(dirPATH);
    File[] files = f.listFiles();

    for(int i=0; i < files.length; i++) {
        File file = files[i];

        if(file.isDirectory()) {
            if(!file.isHidden() & !file.getName().startsWith("$")) {
                PATH_TEMP.add(file.getPath());
                ITEM_TEMP.add(file.getName() + "/");
            }
        }
        else {
            if(!file.isHidden()) {
                PATH_TEMP.add(file.getPath());
                ITEM_TEMP.add(file.getName());
            }
        }
    }

    Collections.sort(ITEM_TEMP);
    Collections.sort(PATH_TEMP);

    ITEM.clear();
    PATH.clear();

    if(!dirPATH.equals(rootDirectory)) {
        ITEM.add("../");
        PATH.add(f.getParent());
    }

    for(int i=0; i < ITEM_TEMP.size(); i++) {
        ITEM.add(ITEM_TEMP.get(i));
    }
    for(int i=0; i < PATH_TEMP.size(); i++) {
        PATH.add(PATH_TEMP.get(i));
    }
}

看來您的Java代碼正在打印出每個文件(默認情況下,應該在系統上將pagefile.sys隱藏)。 您說過要過濾掉隱藏文件。

問題可能出在這一行:

 if(!file.isHidden() & !file.getName().startsWith("$"))

&是按位AND運算符,您應該使用&&-邏輯AND運算符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM