• 締切済み

フォルダ検索

初めまして宜しくお願い致します。 当方、C言語しか経験がなく、Javaは全くの初心ですが Javaで以下のことを行いたく、プログラムを組んだのですが うまく動作しません。 <処理内容> 特定のフォルダ配下を検索して、フォルダ名(List型)とファイル名(String)を返却する。 SerchFolder |-------- FolderAAA | |----- FolderBBB | |-----FileCCC | |-------- FolderXXX | |----- FolderYYY | |-----FileZZZ <検索対象フォルダ:SerchFolder> 検索結果格納クラス(ContentsConst クラス配列型) メンバ変数 ArrayList型 key; メンバ変数 String型 num; 上記フォルダの検索結果は以下の通りになるようにしたい。 ContentsConst[0] keyに、{FolderAAA, FolderBBB} numに、"FileCCC" ContentsConst[1] keyに、{FolderXXX, FolderYYY} numに、"FileZZZ" <コード例> // 検索結果格納クラス public class ContentsConst { public ArrayList key; public String num; } public class ContentsManagement { // フォルダ検索メソッド public ContentsConst[] read(String filepath){ // 検索結果格納配列型クラス ContentsConst[] ContentsKey = new ContentsConst[10001]; File idir = new File(filepath); // 検索対象ディレクトリ(SerchFolder)以下の一覧を取得 File[] filelist = idir.listFiles(); // 検索対象ディレクトリ(SerchFolder)以下分ループする for (int i = 0 ; i < filelist.length ; i++){ // フォルダ名一時格納用 ArrayList ContentsWork = new ArrayList(); // 処理省略 //検索し、Dirならば Dir名(FolderAAA) 格納 ContentsWork.add(filelist[i].getName()); // 処理省略 //検索し、Dirならば Dir名(FolderBBB) 格納 ContentsWork.add(filelist2[i].getName()); // 処理省略 //検索し、fileならば file名(FileCCC) 格納 if (filelist3[k].isFile()){ // Dir を順番に格納するためのループ for(int l =0; l<ContentsWork.size(); l++){ // "注意" 一時格納用のList⇒ // 配列型クラスに値をコピーしようとするが、 // エラーとなり、コピーできない // "ecllips のエラー "ソースが見つかりませんでした。"" ContentsKey[i].key.add(ContentsWork); } // "注意" 一時ワークとして、String型の変数に格納して、 // コピーしようとするものの上記同様のエラーが出力される String str = filelist3[k].getName(); ContentsKey[i].num = str ; }else if (filelist3[k].isDirectory()){ // ディレクトリだった時は対象外 break; } かなりCライクなプログラミングで、Javaっぽくないのは重々承知しております。 そのへんについても、ご意見が頂ければ、幸いです。

みんなの回答

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

まず、提示された図ですが、SerchFolder内にFolderAAAとFolderXXXがあり、FolderAAA内にFolderBBBとFileCCCがあると考えてよろしいのでしょうか。 また、、検索対象が以下のような場合の結果はどうなるのが望ましいとお考えでしょうか。 (1) SerchFolder |-------- FolderAAA | |----- FolderBBB | | |----- FolderCCC | | |-----FileDDD (2) SerchFolder |-------- FolderAAA | |----- FolderBBB | |-----FileCCC | |-----FileDDD

javastarter
質問者

お礼

自己解決できました ありがとうございました

javastarter
質問者

補足

ご返答ありがとうございます。 >>SerchFolder内にFolderAAAとFolderXXXがあり、FolderAAA内にFolderBBBとFileCCCがあると考えてよろしいのでしょうか。 ご認識通りです。 >>また、、検索対象が以下のような場合の結果はどうなるのが望ましいとお考えでしょうか。 検索対象フォルダ\フォルダAAA\フォルダBBB\ファイルCCC 上記形式以外のフォーマット以外は無視する、もしくはフォーマットエラーにするため、検索結果には格納しないものと考えております。 (1) key={FolderAAA, FolderBBB} num="FileCCC" ※同階層に別ファイルもあった場合は、一番最初に見つかったファイル名を一つだけ格納する (2) 上記理由から、検索結果には格納しない。 ご不明点等があれば、お尋ね下さい。 よろしくお願い致します。

関連するQ&A