我需要檢查文件是否存在。這可以通過File#exists()
方法來完成。但是這種存在檢查是區分大小寫的。我的意思是如果我在代碼中有一個文件名some_image_file.jpg,但是如果物理文件是some_image_file.JPG,那麼這個方法說這個文件不存在。如何檢查文件是否存在對擴展名不區分大小寫並獲取實際文件名?區分大小寫的文件擴展名和存在檢查
在我的場景中,我有一個excel文件。每行包含文件和文件名的元數據。在某些情況下,我只有文件名或其他情況下可以有完整路徑。我正在表明一行文件。
這些文件被放置在服務器中。我的工作是
- 逐行讀取excel文件並列出所有文件。
- 取出文件名或文件路徑。
- 創建文件的完整路徑。
- 檢查文件是否存在。
- 驗證文檔中提供的其他元數據/信息。
- 上傳文件。
如果文件不存在或某些元數據無效,我的應用程序會拋出異常。
excel文件是由客戶編寫的,他們寫了一些錯誤的文件名,我的意思是如果文件物理上有小寫的擴展名,他們用大寫寫了擴展名,反之亦然。
我在UNIX服務器上運行應用程序。
由於文件擴展名不匹配,所以File#exists()
給出了錯誤,最終我的代碼拋出異常。
放置文件的文件夾可以包含30000或更多文件。
我要的是
- 要採取文件的完整路徑。
- 檢查文件是否存在。
- 如果不存在,則
- 通過轉換擴展的大小寫來檢查文件是否存在。
- 如果大小寫轉換後不存在,則拋出異常。
- 如果存在,則返回實際的文件名或文件路徑。
如果文件名具有文件擴展名類似.JPG,不知道該怎麼辦!我應該通過改變案例來排查它嗎?
只是爲了檢查 - 你在Windows上運行,對不對? (在一個區分大小寫的文件系統上,這個問題沒有多大意義。)我剛剛嘗試過使用'File.exists',故意指定錯誤的文件名大小寫,並且它工作正常... –
@JonSkeet我在UNIX中運行。 –
好的,這對於'File.exists'的行爲來說更有意義 - 但是對於你爲什麼要這麼做的意義不大。你從哪裏得到文件名?你可以依靠哪些信息? –