1

SD カード内の特定のファイルを検索したい。だから私は完全なファイルをリストしてパターンを検索しようとしています。以下のコードを参照してください

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    String root_sd = Environment.getExternalStorageDirectory().toString();
    file = new File(root_sd);
    listfiles( new File(root_sd));

}

public void listfiles(File file) {

    //file = new File(path);
    // file = new File( root_sd ) ;
    File list[] = file.listFiles();
    Log.i("DIR", "PATH" +file.getPath());
    for (int i = 0; i < list.length; i++) {
        // myList.add( list[i].getName() );
        File temp_file = new File(file.getAbsolutePath(),list[i].getName());
        Log.i("DIR", "PATH" +temp_file.getAbsolutePath());
        if (temp_file.isFile() && temp_file.listFiles() != null) {
            Log.i("inside", "call fn");
            listfiles(temp_file);

        } else {
            if (list[i].getName().toLowerCase().contains("pattern1"))
                Log.i("File", i + list[i].getName());
            if (list[i].getName().toLowerCase().contains("pattern2"))
                Log.i("File", i + list[i].getName());

        }
    }

ここでは、最初のレベルの検索のみが行われます。この条件if (temp_file.isFile() && temp_file.listFiles() != null)

常に false を返すため、再帰呼び出しは発生しません。修正するのを手伝ってください。あなたの答えと時間をありがとう。

4

1 に答える 1

2

が true を返す場合temp_file.isFile()、それはファイルであることを意味するため、temp_file.listFiles()自動的に null になり、ステートメント全体が false になります。したがって、結合されたステートメントは常に false を返します。必要なのは||in の代わりです&&

于 2012-04-17T14:32:23.580 に答える