現在JAVAの学習を行っています。
課題で行き詰ったので質問をさせていただきます。
私が作成しようとしているプログラムは
JAVA言語を使って指定したディレクトリ内に存在する
ファイルやディレクトリを全てCSVファイルに出力するといったプログラムです
import java.io.*;
//指定したディレクトリ内に存在するファイルを表示するプログラム
public class fileIn {
public static void main(String args[]) throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader kbd = new BufferedReader(isr);
String path;
path = kbd.readLine();
File cdirectory = new File(path);
//ディレクトリかファイルはを判定し、
//ディレクトリの場合、そのディレクトリの中身を確認
//ファイルの場合、ファイル名を表示
File filelist[] = cdirectory.listFiles();
for(int i =0; i<filelist.length;i++) {
if(filelist[i].isDirectory()){
System.out.println("[ディレクトリ]" + filelist[i].getName());
}else if(filelist[i].isFile()){
System.out.println("[ファイル]" + filelist[i].getName());
}else{
System.out.println("不明ファイル" + filelist[i].getName());
}
System.out.println(filelist[i]);
}
}
}
現在ここまでは出来ているのですがif文でディレクトリかファイルか判定する所まで
出来上がりましたが、ディレクトリだった場合、そのディレクトリの中を見ることが
出来ません。どのようにしたら良いでしょう。CSVファイルに出力結果を書き込む
方法もわかりません。教えてください。
No.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();
}
}
ありがとうございます!!
参考にさせていただきます。このプログラムを
一旦自分なりに理解してみようと思います
とても参考になるプログラムをありがとうございました
No.2
- 回答日時:
具体例を挙げます。
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);
}
}
}
No.1
- 回答日時:
ディレクトリ内をどんどん潜っていく処理は 『再起処理』 という方法で作るのが一般的です。
google 等で "JAVA 再起 ディレクトリ" あたりのワードで検索すれば、いくらでもサンプルが見つかりますので、そちらを参考にしてください。また、CSV 出力についてもまずは google 検索しましょう。"JAVA CSV" あたりで調べればサンプルが見つかると思いますよ。
私見ですが、プログラムの勉強の中で最も重要なのは "解決能力" だと思います。一般的な問題は、ネット上で本気で探せば、だいたい解決策が見つかるものです。google 等でどのような検索ワードで探せばサンプルや解決策が見つかるのか、どんどん試してください。そのうち、感覚的にわかってくるようになりますから。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をfind.shとして、以下の条件をすべて満たすファ 1 2023/02/03 03:50
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- PHP ファイルアップロードに関してのセキュリティについてアドバイスお願い致します 1 2023/08/20 00:25
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
classファイルについて
-
javaクラスファイルをEclipseで...
-
SVFの設定について:クラスパス...
-
Eclipse「リフレッシュ」と「ク...
-
Eclipse・プロジェクトで、フォ...
-
eclipse でclassesフォルダーが...
-
EclipseでHTTP404エラーが出る。
-
【Eclipse】パッケージ・エクス...
-
コンパイルをしようとするとエ...
-
JADで*.jarごとデコンパイルす...
-
「削除するか、クラスパスの正...
-
JARのパスの通し方
-
Warファイルの解凍について質問...
-
macでのファイル場所指定
-
Jarコマンドでマニフェストファ...
-
Tomcatの「\\WEB-INF\\classes...
-
import javax.el.*;について
-
jarファイルの解凍ができない
-
jdbcドライバのjarファイルにク...
-
ディレクトリを操作したいと思...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
javaクラスファイルをEclipseで...
-
Eclipse「リフレッシュ」と「ク...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
eclipse でclassesフォルダーが...
-
EclipseでHTTP404エラーが出る。
-
earファイルを展開する方法
-
【Eclipse】パッケージ・エクス...
-
JADで*.jarごとデコンパイルす...
-
プログラム実行の際に、「ソー...
-
jdbcドライバのjarファイルにク...
-
「削除するか、クラスパスの正...
-
コンパイルをしようとするとエ...
-
java クラスファイルとソースコ...
-
コンパイルした後 java (class...
-
【Eclipse】逆コンパイルでエラ...
-
Javaアプリケーションのアイコ...
-
VisualStudioでC++クラスを追加...
-
「メイン・マニフェスト属性が...
おすすめ情報