2017-07-24 73 views
0

我想從目錄中讀取文件。在這個目錄中有八個附加文件具有相同的擴展名(.csv)。同樣,文件名不直接知道。 文件的名稱看起來是這樣的:從目錄中讀取未知的文件名

test_file_1_2017_06_24.csv

它,但是可以更改,如果我叫目錄的第二天。然後文件名是:

test_file_2_2017_06_25.csv或test_file_1_2017_06_25。

文件的名稱和日期更改。 有沒有辦法在Java中讀取文件「變量」或讀取文件,但不知道確切的名稱?目錄始終是相同的(「H:/)」(在讀取文件後,文件分別對結果字符串進行進一步處理,使用split()) 感謝您的幫助答案!唯一的CSV文件

File dir = new File("H:/"); 

    File[] fileArray = dir.listFiles(new FilenameFilter() { 

     public boolean accept(File dir, String name) { 
      return name.endsWith(".csv"); 
     } 
    }); 
    for(File f: fileArray){ 
     System.out.println(f.getName()); 
    } 
+0

您可以讀取目錄中所有文件的名稱(請參閱'File :: listFiles'),但是如何知道哪個是正確的?這些附加文件命名完全不同,還是可能與您想要的文件混淆? –

+0

這些文件與內容非常相似,只能通過文件名來區分。溫度值存儲在CSV文件中。這些要從總共8個小組進行分析,每個小組當然會分析他們自己的價值。在你看來,是否有任何方法可以在不知道確切名稱的情況下始終讀出一個文件? – LostInTranslate

+0

我仍然不明白,如果有可能確定你想要的文件。當然,可以精確讀取一個文件,但是如果文件名爲test_file_1_2017_06_25.csv和test_file_2_2017_06_25.csv,您將如何決定使用哪一個文件?如果有某種方式*你會知道哪一個是正確的,那麼你當然可以根據相同的標準對計算機進行編程。 –

回答

0
File directory = new File("H:/"); 

File[] allFilesInDir = directory.listFiles(); 

https://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles()

你也可以提供一個FilenameFilter只得到的.csv文件:

File[] allCsvFiles = directory.listFiles(new FilenameFilter() { 
    public boolean accept(File dir, String name) { 
    if (name.toUpperCase().endsWith(".CSV")) { 
     return new File(dir,name).isFile(); // Make sure we don't accept sub-directories ending in .csv 
    } 
    } 
}); 
+0

它是' toUpperCase()'。另外,'FilenameFilter'是一個函數接口,所以你不需要一個匿名的內部類。你可以寫'directory.listFiles((dir,name) - > name.toUpperCase()。endsWith(「CSV」)&&新文件(dir,name).isFile())' –

+0

謝謝!不知道CSV文件的確切名稱,是否可以從目錄中調用特定的CSV文件? – LostInTranslate

+0

一旦你有了所有.csv文件的列表,你可以隨心所欲地做任何事情。例如遍歷所有這些數據,並檢查每一個數據是否對你感興趣,然後對其進行處理。 – JimmyB

0

您可以使用以下代碼來檢查文件夾,檢查csv文件並使用它。希望能幫助到你。

File folder = new File("H:/"); /*path to your folder*/ 
    String[] filesPresent = folder.list(); 
    if(filesPresent.length==0){ 
     System.out.println("Nothing to delete"); 
    }else{ 
     for(String fileName : filesPresent){ // looping through files in the directory 
      if(fileName.toLowerCase().endsWith(".csv") && (new File(fileName).isFile())){ 
       //this is a csv file. 
       //you can do your operations here 
       File file = new File(fileName); 
       //now you can do any file operations required with the file object 
      } 
     } 
    } 
+0

謝謝!如何從控制檯上的目錄查看CSV文件? System.out.println(file.getName)不起作用。 是否可以在不知道CSV文件的確切名稱的情況下從目錄中調用特定的CSV文件? – LostInTranslate

+0

你想看到目錄中的文件名或來自目錄的csv文件的內容? – JVOneLife

+0

兩者。首先,應該在控制檯上顯示目錄中的所有csv文件。 (System.out.println(file.getName)不起作用。)之後,某個CSV文件的內容將被拆分並顯示爲圖形。 – LostInTranslate