2

私は初めてです。以前の投稿リンクJavaに取り組んでいます。

.txtディレクトリの下にある特定の拡張子 ( など) のファイル名を返したい。

このために、2 つの引数を持つ次のメソッドを作成しました。

  public void ListOfFileNames(String directoryPath,String fileType)
  {
    //Creating Object for File class
File fileObject=new File(directoryPath);
//Fetching all the FileNames under given Path
File[] listOfFiles=fileObject.listFiles();
//Creating another Array for saving fileNames, which are satisfying as far our requirments
String[] fileNames;
for (int fileIndex = 0; fileIndex < listOfFiles.length; fileIndex++) 
{
    if (listOfFiles[fileIndex].isFile())
    {
        //True condition,Array Index value is File
        if (listOfFiles[fileIndex].getName().endsWith(fileType)) 
        {
            //System.out.println(listOfFiles[fileIndex].getName());
        }
    }
}

}

ここで私は2つの問題に直面しています。

  1. 関数の戻り値の型。

  2. FileName をfileNames配列に追加します。

どうすればこれを修正できますか。

ありがとう。

4

8 に答える 8

1

戻り値の型は である必要があります。String[]またはList<String>、基準を満たすすべてのファイル名をリストまたは配列に入れて、最後に同じものを返す必要があります。

コードのこの部分で

配列を使用している場合

String[] fileNames;
int count = 0;

if (listOfFiles[fileIndex].getName().endsWith(fileType)) 
{
     fileNames[count] = listOfFiles[fileIndex].getName();
     count++;
}

return fileNames;

コードの残りの部分は同じままです....

やりたい場合リストを使って

List<String> fileNames = new ArrayList<String>();

if (listOfFiles[fileIndex].getName().endsWith(fileType)) 
{
     fileNames.add(listOfFiles[fileIndex].getName());
}

return fileNames;
于 2013-07-23T11:28:23.690 に答える
0

これを試して:

public List<String> getListOfFileNames(String directoryPath, String fileType) {
    List<String> result = new ArrayList<String>();
    // add the code to loop over the director list and add them to the result
    return result;
}

さらに良い解決策は、クラスlist()に組み込まれているメソッドを使用することです。Fileを渡しますFilenameFilter

http://docs.oracle.com/javase/7/docs/api/

最善の方法は、コードを書き直すのではなく、コードを再利用することです。

于 2013-07-23T11:27:30.960 に答える
0

次のようなものを使用できます。

    public List<String> ListOfFileNames1(final String directoryPath,
            final String fileType) {
        List<String> result = new ArrayList<String>();
        // Creating Object for File class
        File root = new File(directoryPath);
        for (File f : root.listFiles()) {
            if (f.isFile() && f.getName().endsWith(fileType)) {
                result.add(f.getName());
            } // if
        } // for
        return result;
    } // ListOfFileNames1

    public List<File> ListOfFileNames2(final String directoryPath,
            final String fileType) {
        // Creating Object for File class
        File root = new File(directoryPath);
        return Arrays.asList(root.listFiles(new FileFilter() {

            @Override
            public boolean accept(File pathname) {
                return pathname.isFile()
                        && pathname.getName().endsWith(fileType);
            }
        }));
    } // ListOfFileNames2
于 2013-07-23T12:08:43.470 に答える