2012-03-13 81 views
-1

我不知道如果我問的問題100%正確的,但這裏有雲: 我得到這個代碼:獲取文件名

File root = Environment.getExternalStorageDirectory(); 
File saveFolder= new File(Root, "Save"); 

     String[] files=saveFolder.list(
      new FilenameFilter() { 
       public boolean accept(File dir, String name) { 
       //define here you filter condition for every single file 
        return name.startsWith("1_"); 

       } 
      }); 

     if(files.length>0) { 
      System.out.println("FOUND!"); 
      System.out.println("Files length = "+files.length); 
     } else { 
      System.out.println("NOT FOUND!"); 
     } 

我有2個文件,與"1_"開始,該println還顯示我有2個文件。 但是,如何在布爾值之後打印或查看這兩個文件的文件名?

因此,像(之間的其他System.out.println):

System.out.println("File names = "+files.names);

+1

可以請你不要再以大寫字母開始的變量的名稱? – njzk2 2012-03-13 09:58:13

+0

我爲你做了 - 下次:**永遠不要**使用在SO中發佈的代碼中以大寫字母開頭的變量名稱。 (..如果你想讓人們看你的代碼;)) – 2012-03-13 10:00:40

+0

好的,下次我會更加關注。 感謝您的所有答案 – Bigflow 2012-03-13 10:10:48

回答

5

循環陣列上:

String[] files=SaveFolder.list(...); 
for (String name : files) { 
    System.out.println("File name: " + name); 
} 

注意變量的命名約定是與較低的情況下啓動它們。

+0

謝謝,從來不知道你可以做這樣的循環?這只是我認爲的java(從未在C++中看到/使用過) – Bigflow 2012-03-13 10:11:50

+0

這是for-each循環:http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html您可以用普通的循環來做。 – MByD 2012-03-13 10:13:26

0

您可以使用

file.getName(); // for the name of the file 
file.getAbsolutePath(); for the full path of the file 
1

更換

public boolean accept(File dir, String Name) { 
      //define here you filter condition for every single file 
       return Name.startsWith("1_"); 

      } 

與此:

public boolean accept(File dir, String Name) { 
      //define here you filter condition for every single file 
       boolean b = Name.startsWith("1_"); 
       if (b) 
        System.out.println(Name); 
       return b; 

      } 
1

使用Arrays.asList()如果你想快速打印出一個基本數組

System.out.println(Arrays.asList(files)); 
+0

亞當,非常感謝。 – pudaykiran 2014-08-01 05:21:10

1

添加一些代碼,if塊:

if(files.length>0) { 
    System.out.println("FOUND!"); 
    System.out.println("Files length = "+files.length); 
    // next lines print the filenames 
    for (String fileName:files) 
     System.out.println(fileName); 
} 
0

這是我個人使用的,如果我需要在文件名加載函數來加載。

public void getFiles(String path){ 
     //Store the filesnames to ArryList<String> 
     File dir = new File(path); 
      ArrayList<String> savefiles = new ArrayList<String>(); 
     for(File file : dir.listFiles()){ 
      savefiles.add(file.getName()); 
     } 
     //Check if the filenames or so to say read them 
     for (int i = 0; i < savefiles.size(); i++){ 
      String s = savefiles.get(i); 
      System.out.println("File "+i+" : "+s); 
     } 
     System.out.println("\n"); 
    } 

我希望這有助於C: