2012-08-22 113 views
0

我正嘗試在java程序中使用模式格式從unix文件系統讀取文件。Java以特定模式讀取文件

文件名模式是這樣的:

"XYZ"+"abcd1234"+MMddyyyyHHmmss 

例如:XYZabc123403222012101329

的「ABCD1234」中間圖案不是固定的而是變化,所以這將是字母數字和的總字符長度7.

我該如何用這種模式讀取文件?該文件可以包含文本或序列化對象。

String path="/tmp/somedir"; 

final File folder = new File("/tmp/somedir"); 
List<String> fileNames = new ArrayList<String>(); 

    try { 
     for (final File fileEntry : folder.listFiles()) { 
      if (fileEntry.isDirectory()) { 
       listFilesForFolder(fileEntry); 
      } else { 
       //System.out.println(fileEntry.getName()); 
       fileNames.add(fileEntry.getName()); 
      } 
     } 

     for(String str: fileNames) { 
      FileInputStream fileIn = new FileInputStream(path+"/"+str); 
     } 

    } catch(FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch(Exception e1) { 
     e1.printStackTrace(); 
    } 

謝謝。

+3

我想你想看看自己的文件過濾器,請參閱:http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#list(java。 io.FilenameFilter) –

+0

您必須在目錄中搜索符合您要求的文件。 –

回答

0

您可以使用正則表達式。我在C#中完成同樣的事情。我有來自客戶端的文件,這些客戶端有一個共同的前綴,中間的日期和一個常見的文件擴展名。

假設abc1234總是7個字符長,您可以使用以下正則表達式模式。

XYZ。{7} \ d {14}

的。{7}意味着任何字符可以在那裏出現多達七個次。 \ d {14}表示最多可以計算14位數字。

+0

感謝您的回答。 – jamesT

+0

歡迎你,謝謝你的感謝。很多人當然不會。祝你的項目好運。 –

0

我推薦this site,你會發現如何從你的目錄中獲取所有文件。

在此之後,在方法中:accept對其參數應用正則表達式:name

對於正則表達式,請看this link

+0

感謝您的回答。 – jamesT