2012-08-28 66 views
0

我想創建一個程序,返回文件中的所有視頻文件和文件夾的名稱。我已經找到了視頻文件的模式,它工作正常java的正則表達式,閱讀文件夾

String pattern = "(^\\w[ .A-z0-9_-]+(\\.mp4$|\\.avi$|\\.mkv$))"; 

但停留在如何讀取文件夾,一切我已經試過有圖案讀取文件夾,還包括其他文件以及IM。由於文件夾名稱可能在任何地方都有點,因此很難通過擴展名進行隔離。關於如何只讀取文件夾的任何想法?

+0

我不知道這是否是故意的,但你的A-Z有一個大寫字母「A」和小寫字母「Z」 –

+5

你必須調用'File.isDirectory()'方法。 – adatapost

+0

或保留一個已知的擴展名列表,並使用負面匹配(Gross,unmaintainable,and unreadable。) – FrankieTheKneeMan

回答

1

我使用此代碼(在BalusC的幫助下)查找文件名及其擴展名。

如果你有正確的正則表達式,只需在這裏插入並按照你的要求添加其他代碼即可。

public static void main(String[] args){ 
    File[] files = new File("temp").listFiles(); 
    showFiles(files); 
} 

public static void showFiles(File[] files) { 
    for (File file : files) { 
     if (file.isDirectory()) { 
      System.out.println("Directory: " + file.getName()); 
      showFiles(file.listFiles()); 
     } else { 
      System.out.println("File: " + file.getName()); 
      getFileNameAndSuffix(file); 
     } 
    } 
} 
public static void getFileNameAndSuffix(File file) 
{ 
    int index = file.getName().lastIndexOf('.'); 
    System.out.println(file.getName().substring(0, index)); 
    System.out.println(file.getName().substring(index)); 
} 
+0

謝謝,File.isDirectory()是我所需要的 – bella