簡體   English   中英

在不知道絕對路徑的情況下訪問文件,只知道文件名

[英]Access file without knowing absolute path, only knowing file name

我試圖在我的代碼中使用一個文件,但我不想指定絕對文件路徑,只指定文件名,例如“fileName.txt”。

我想這樣做,因此我能夠在文件可能存儲在不同文件夾中的不同筆記本電腦上使用此代碼。

下面的代碼是我目前正在使用的,但是當我運行它時我收到了NoSuchFileException

FileSystem fs FileSystems.getDefault();
Path fileIn = Paths.get("fileName.txt");

任何想法如何克服這個問題,以便我可以在不知道其絕對路徑的情況下找到文件?

關於如何在不知道其絕對路徑的情況下查找文件的想法:

  1. 指示應用程序的用戶將文件放在工作目錄中。

  2. 指示應用程序的用戶將文件的路徑作為程序參數提供,然后更改程序以使用該參數。

  3. 讓程序讀取使用選項 1 或 2 找到的配置文件,然后指示應用程序的用戶在配置文件中提供文件的路徑。

  4. 提示用戶輸入文件名。

  5. (不推薦)掃描整個文件系統以查找文件,確保只有一個具有給定名稱的文件。 可選:如果找到多個文件,則提示用戶使用哪個文件。

如果您不向用戶詢問完整路徑,並且您沒有必須在其中的特定文件夾,那么您唯一的選擇就是搜索它。

從最根路徑開始。 學習使用文件 class。 然后搜索所有的孩子。 此實現僅返回找到的第一個具有該名稱的文件。

public File findFile(File folder, String fileName) {
    File fullPath = new File(folder,fileName);
    if (fullPath.exists()) {
        return fullPath;
    }
    for (File child : folder.listFiles()) {
        if (child.isDirectory()) {
            File possible = findFile(child,fileName);
            if (possible!=null) {
                return possible;
            }
        }
    }
    return null;
}

然后通過調用文件系統的根目錄或您要搜索的已配置的最根路徑來啟動它

File userFile = findFile(  new File("/"), fileName );

然而,最好的選擇是讓用戶輸入整個路徑。 大多數環境都有很好的文件系統瀏覽工具可以為用戶執行此操作。

暫無
暫無

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

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