我正在使用Unix,它使用區分大小寫的文件名,並且需要一種以不區分大小寫的方式訪問它們的方法。Unix上Java中不區分大小寫的目錄訪問
具體來說,程序需要進入項目文件夾下的/ images目錄。但是因爲這個目錄是由用戶手動創建的,所以它有時可能會被命名爲Images,IMAGES,iMa ...等等。
鑑於在任何項目文件夾中只能保證一個圖像目錄,我如何直接訪問它而不需要獲取整個目錄列表並循環播放呢?
我正在使用Unix,它使用區分大小寫的文件名,並且需要一種以不區分大小寫的方式訪問它們的方法。Unix上Java中不區分大小寫的目錄訪問
具體來說,程序需要進入項目文件夾下的/ images目錄。但是因爲這個目錄是由用戶手動創建的,所以它有時可能會被命名爲Images,IMAGES,iMa ...等等。
鑑於在任何項目文件夾中只能保證一個圖像目錄,我如何直接訪問它而不需要獲取整個目錄列表並循環播放呢?
沒有其他方法,然後閱讀目錄名稱的完整列表,並檢查每個人和每個人是否符合你的模式。
可以隱藏它通過使用FilenameFilter
用於篩選不匹配您的模式中的所有文件夾的名稱(IAW,任何文件夾,其小寫的名字等於images
)。這可能是一個更好的辦法,因爲它會返回所有候選人(IAW:./Images
,./imaGes
,./IMAGES
如果你有把更多然後一個圖像文件夾創造性的用戶;))
用於'FilenameFilter'的+1 – dhblah
如果它是用戶創建的文件夾,然後給他們一個文件選擇器UI來選擇文件夾。不管是那個,還是在創建項目時,都會以稍後可預測的方式創建圖像文件夾。
這確實是該程序現在的工作原理,但遺憾的是,我希望支持的遺留項目不會自動創建有保證的圖像文件夾。 – donnyton
有沒有解決辦法,不涉及超過要麼循環目錄或的大寫和小寫字母可能排列的列表項的列表。
Unix 是區分大小寫,並要求/image
當只有/Image
存在將不會得到你的肯定答案。
唯一的例外是使用的文件系統不區分大小寫(例如,FAT變體不區分大小寫),但通常這隻適用於外部介質。
在Java 7有一個叫什麼PathMatcher它允許您使用正則表達式來查找文件。
循環瀏覽目錄列表並進行不區分大小寫的比較有什麼不對?目錄中是否有許多其他文件夾/文件(特別是如果你這樣做了一次,並保存他們在配置文件中稱爲它的東西) – Foon
你有三個'圖像','圖像','iMaGes'在與Unix同時。您可能需要一種方法來確定哪個是首選。 –