簡體   English   中英

如何通過在java中傳遞相對路徑來獲取文件?

[英]How to get to a file by passing relative path in java?

我試圖理解“如何通過傳遞文件或文件夾的相對路徑來獲取文件?” 這是一個例子:

碼:

  public class somex {
    public static void main {
       String fileName = System.getProperty("user.dir");   <---This gives me path for the current working directory.
       File file = new File(fileName + "../../xml_tutorial/sample.xlsx" );
       System.out.println(file.getCanonicalPath());         <---This gives me path for the file that is residing in folder called "xml_tutorial".
     }
  }

    >>>> 

在這里,我知道文件位置,所以我能夠傳遞正確的相對路徑。 並且,設法打印文件路徑。 我刪除了“sample.xlsx”並執行了上面的代碼; 沒有失敗它給我路徑名稱,它與文件存在時(即刪除前)相同。 怎么可能? 我在這里期待EXCEPTION。 為什么不拋異常?

二,我想使用正則表達式作為文件名,例如:“../../ xml_tutorial/samp.*”。 但是這不能完成這項工作,它給了我IOException。 為什么它無法識別文件sample.xlsx? (注意:這是文件存在的時候,一百個precent確定只有一個名為“sample.xlsx”的文件)

我刪除了“sample.xlsx”並執行了上面的代碼; 沒有失敗它給我路徑名稱,它與文件存在時(即刪除前)相同。 怎么可能? 我在這里期待EXCEPTION。 為什么不拋異常?

File不關心文件是否確實存在。 它只是解決了這條道路 為了獲取路徑,不需要存在該文件

/home/tjc/a/b/c/../../file.txt

...並將其轉換為規范形式

/home/tjc/a/file.txt

如果要知道該路徑上的文件是否確實存在,可以使用exists()方法


關於你的第二個不相關的問題:

二,我想使用正則表達式作為文件名,例如:“../../ xml_tutorial/samp.*”。 但是這不能完成這項工作,它給了我IOException。 為什么它無法識別文件sample.xlsx?

File文檔中沒有任何內容表明它支持通配符。 如果要進行搜索,則需要使用list(FilenameFilter)listFiles(FilenameFilter)FilenameFilter實現,或listFiles(FileFilter)FileFilter實現。

暫無
暫無

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

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