- ベストアンサー
JAVAの学習で行き詰ってしまいました
- 現在JAVAの学習を行っています。課題で行き詰ったので質問をさせていただきます。
- 私が作成しようとしているプログラムは、JAVA言語を使って指定したディレクトリ内に存在するファイルやディレクトリを全てCSVファイルに出力するといったプログラムです。
- 現在ここまでは出来ているのですが、if文でディレクトリかファイルか判定する所まで出来上がりましたが、ディレクトリだった場合、そのディレクトリの中を見ることが出来ません。CSVファイルに出力結果を書き込む方法もわかりません。教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
質問の要点は (1)CSVファイルへの書き込み法 (2)フォルダー(ディレクトリ)のたどり方 でしょうか? CSVファイルにどのような内容を書き込めばよいかが質問からは不明ですが, 両方を知る参考にプログラム例を載せます. import java.io.*; //指定したディレクトリ内に存在するファイルを表示するプログラム public class fileIn { static PrintWriter pw; static void walkFolder(String path) { File files=new File(path); //これから調べるフォルダー File filelist[] = files.listFiles(); System.out.println("path="+path+" filelist.length="+filelist.length); for(int i =0; i<filelist.length;i++) { if(filelist[i].isDirectory()){ System.out.println("[ディレクトリ]" + filelist[i].getName()); pw.printf("\"%s\",\"ディレクトリ\"\n",filelist[i].getName()); walkFolder(path+"\\"+filelist[i].getName()); }else if(filelist[i].isFile()){ System.out.println("[ファイル]" + filelist[i].getName()); pw.printf("\"%s\",\"ファイル\"\n",filelist[i].getName()); }else{ System.out.println("不明ファイル" + filelist[i].getName()); pw.printf("\"%s\",\"不明ファイル\"\n",filelist[i].getName()); } // System.out.println(filelist[i]); } } public static void main(String args[]) throws IOException { // InputStreamReader isr = new InputStreamReader(System.in); // BufferedReader kbd = new BufferedReader(isr); // String path; // path = kbd.readLine(); if(args.length < 2) { //引数が足りなければエラーメッセージを表示 System.err.println("Usage :java fileIn look-folder csv-file"); System.exit(1); } pw=new PrintWriter(args[1]); //CSV出力ファイル pw.println("\"名前\",\"属性\""); //csvのヘッダー walkFolder(args[0]); //ディレクトリかファイルはを判定し、 //ディレクトリの場合、そのディレクトリの中身を確認 //ファイルの場合、ファイル名を表示 pw.close(); } }
その他の回答 (2)
- rabbit_bit
- ベストアンサー率0% (0/1)
具体例を挙げます。 java Sample ディレクトリ名 で実行する例です。 -------------------------------------------- import java.io.*; class Sample { public static void main(String[] args){ File f= new File(args[0]); String[] cont = f.list(); for(String s:cont){ File f2 = new File(f,s); if(f2.isFile()) System.out.println(s); } } }
お礼
ありがとうございました。 参考にさせていただきます
ディレクトリ内をどんどん潜っていく処理は 『再起処理』 という方法で作るのが一般的です。google 等で "JAVA 再起 ディレクトリ" あたりのワードで検索すれば、いくらでもサンプルが見つかりますので、そちらを参考にしてください。 また、CSV 出力についてもまずは google 検索しましょう。"JAVA CSV" あたりで調べればサンプルが見つかると思いますよ。 私見ですが、プログラムの勉強の中で最も重要なのは "解決能力" だと思います。一般的な問題は、ネット上で本気で探せば、だいたい解決策が見つかるものです。google 等でどのような検索ワードで探せばサンプルや解決策が見つかるのか、どんどん試してください。そのうち、感覚的にわかってくるようになりますから。
お礼
回答ありがとうございます!! がんばって検索して解決してみます。
お礼
ありがとうございます!! 参考にさせていただきます。このプログラムを 一旦自分なりに理解してみようと思います とても参考になるプログラムをありがとうございました