2017-08-23 17 views
0

私は1つのpdfと1つのxmlの2つのファイルを持つフォルダを持っています。リストビューから特定のファイルを取得する方法

私がフォルダをクリックすると、XMLファイルのパスを取得したいだけです。

私のコードでは、私は両方のファイルのパスを取得します。私を助けることができる

? 感謝!

private ArrayList<String> GetFiles2(File f) { 
     ArrayList<String> MyFiles = new ArrayList<String>(); 
     //File f = new File(DirectoryPath); 

     f.mkdirs(); 
     File[] files = f.listFiles(); 
     if (files.length == 0) 
      return null; 
     else { 
      for (int i=0; i<files.length; i++) 
       MyFiles.add(files[i].getPath()); 
     } 

     System.out.println("MYFILE:"+MyFiles); 
     return MyFiles; 

    } 

私の結果:MYFILE:

`[/storage/emulated/0/ordinazioni/2/23_Agosto_2017_09_44_51_AM.xml,` /storage/emulated/0/ordinazioni/2/23_Agosto_2017_09_44_51_AM.pdf] 
+0

( "MYFILE:" + MyFilesフォルダ[0])のSystem.out.printlnを試みます。 –

+0

[フィルタファイルのjava]の可能な複製(https://stackoverflow.com/questions/14097901/filter-file-in-java) – crgarridos

答えて

1

あなたがディレクトリから特定のファイルを取得するためにFile#listFiles(FileFilter)のオーバーライドバージョンを使用することができます。

File[] files = f.listFiles(new FileFilter() { 
     @Override 
     public boolean accept(File pathname) { 
      return pathname.getName().endsWith(".xml"); 
     } 
    }); 

完全な実装:

private ArrayList<String> getXmlFiles(File directory) { 
    ArrayList<String> names = new ArrayList<>(); 
    directory.mkdirs(); 
    File[] files = directory.listFiles(new FileFilter() { 
     @Override 
     public boolean accept(File pathname) { 
      return pathname.getName().endsWith(".xml"); 
     } 
    }); 
    for(File f : files) 
     names.add(f.getPath()); 

    System.out.println("MYFILE:" + names); 
    return files.length > 0 ? names : null; 
} 

とにかく私はあなたがあなたのfor -loopを変更することができます

+0

私はarraylistに挿入する必要があります xmlファイルのパスは真または偽ではありません – androidiano

0

(ジャストreturn names)あなたはNPEの問題を回避するためにnullの空のリストinsteandを返すことをお勧めしますたとえば、次のようになります。

for (int i=0; i<files.length; i++) { 
    if(files[i].getPath().endsWith(".xml")) { 
     MyFiles.add(files[i].getPath()); 
    } 
} 

これは、このコードを使用して特定のファイルの場所を取得するためのMyFilesにリストに

File dir = Environment.getExternalStorageDirectory(); 
File yourFile = new File(dir, "path/to/the/file/inside/the/sdcard.ext"); 

などをpraticularフォルダ

0

でxmlファイルのパスのみを追加します。

"/AAlist/"+serialno.get(position).trim()+".jpg"

関連する問題