前提・実現したいこと
ディレクトリの中身を探索するメソッドで実行した結果をファイルに入力したいのですがうまく作動しませんでした。
この時入力されたファイル(下のコードではoutputFile)の拡張子をファイル名ではなくコードの書き方で指定することは出来るのでしょうか。
下のコードは入力したい結果を表示するコードです。
(追記)
試したことにうまく作動しなかったコードを載せました。
該当のソースコード
java
1import java.io.*; 2import java.util.Scanner; 3 4public class Search{ 5 6 static int max = 0; 7 static int now = -1; 8 static File[] tmp = new File[100]; 9 public static void main(String[] args){ 10 Scanner scan = new Scanner(System.in); 11 System.out.println("一覧を取得するディレクトリ名を入力してください。"); 12 String searchFile = scan.nextLine(); 13 14 /* System.out.println("出力ファイル名を入力してください。"); 15 String outputFile = scan.nextLine(); */ 16 17 dumpFile(new File(searchFile)); 18 } 19 20 //検索し結果を表示 21 private static void dumpFile(File file){ 22 23 // ファイル一覧取得 24 File[] files = file.listFiles(); 25 26 System.out.println("Directory: " + file.getName()); 27 28 //ディレクトリが空か判定 29 if(files.length == 0){ 30 System.out.println("空です"); 31 } 32 33 //ディレクトリだった場合tmpに保存 34 for (File tmpFile : files) { 35 // ディレクトリの場合 36 if(tmpFile.isDirectory()){ 37 tmp[max] = tmpFile; 38 //入手出来てるかの確認 39 System.out.println(tmpFile.getName() + "はディレクトリです。"); 40 max++; 41 42 // ファイルの場合 43 }else{ 44 System.out.println(tmpFile.getName() + "はファイルです。"); 45 } 46 } 47 48 //見やすさのため 49 System.out.println(""); 50 51 //再帰 52 while(now != max-1){ 53 now++; 54 dumpFile(tmp[now]); 55 56 } 57 } 58} 59
###書き込みたい実行した結果
一覧を取得するディレクトリ名を入力してください test Directory: test D1はディレクトリです。 D2はディレクトリです。 F1.txtはファイルです。 Directory: D1 D3はディレクトリです。 Directory: D2 D4はディレクトリです。 F2.txtはファイルです。 Directory: D3 空です Directory: D4 F3.txtはファイルです。
試したこと
filewriterでは ("Directory: " + file.getName()) ような""と変数の組み合わせを出力することがうまく出来なかったのでPrintwriteに書き換え実行した結果下ではなく上に追加されてしまった。
import java.io.*; import java.util.Scanner; import java.io.FileWriter; import java.io.File; import java.io.PrintWriter; import java.io.BufferedWriter; public class Search{ static int max = 0; static int now = -1; static File[] tmp = new File[100]; public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("一覧を取得するディレクトリ名を入力してください。"); String searchFile = scan.nextLine(); System.out.println("出力ファイル名を入力してください。"); String outputFile = scan.nextLine(); dumpFile(new File(searchFile),outputFile); } //検索し値を表示 private static void dumpFile(File file, String output){ File outFile = new File(output); try{ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(outFile,true))); // ファイル一覧取得 File[] files = file.listFiles(); pw.println("Directory: " + file.getName()); //ディレクトリが空か判定 if(files.length == 0){ pw.println("空です"); } //ディレクトリだった場合tmpに保存 for (File tmpFile : files) { // ディレクトリの場合 if(tmpFile.isDirectory()){ tmp[max] = tmpFile; //入手出来てるかの確認 pw.println(tmpFile.getName() + "はディレクトリです。"); max++; // ファイルの場合 }else{ pw.println(tmpFile.getName() + "はファイルです。"); } } //見やすさのため pw.println(""); //再帰 while(now != max-1){ now++; dumpFile(tmp[now],output); } pw.close(); }catch(IOException e){ System.out.println(e); } } }
###結果
Directory: D4 F3.txtはファイルです。 Directory: D3 空です Directory: D2 D4はディレクトリです。 F2.txtはファイルです。 Directory: D1 D3はディレクトリです。 Directory: test D1はディレクトリです。 D2はディレクトリです。 F1.txtはファイルです。
回答1件
あなたの回答
tips
プレビュー