teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

質問が分かりにくいため

2021/10/23 03:13

投稿

tamintya
tamintya

スコア34

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,10 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- ディレクトリの中身を探索するメソッドで実行した結果をファイルに入力したいのですが方法が分かりません。
3
+ ディレクトリの中身を探索するメソッドで実行した結果をファイルに入力したいのですがく作動しませんでした
4
- 画面に出する必要はなくファイルの拡張子は.txtと.csv2通り行いたいです。
4
+ この時入されたファイル(下コードではoutputFile)の拡張子をファイル名でなくコード書き方指定ることは出来るのでしょうか
5
+ 下のコードは入力したい結果を表示するコードです。
6
+ (追記)
7
+ 試したことにうまく作動しなかったコードを載せました。
5
8
 
6
9
  ### 該当のソースコード
7
10
 
@@ -93,7 +96,7 @@
93
96
 
94
97
 
95
98
  ### 試したこと
96
- ファイルへの書き込みの検索を行いfilewriterを調べたのすが""の文字と変数の組み合わせの書き込みらず、Printwriteを調べ、実行したすがこれもうま作動なかった。
99
+ filewriterでは ("Directory: " + file.getName()) ような""と変数の組み合わせを出力することうまく出来なったのでPrintwriteに書き換え実行した結果下はな上に追加されてった。
97
100
 
98
101
  ```
99
102
  import java.io.*;

2

詳しい説明の追加

2021/10/23 03:13

投稿

tamintya
tamintya

スコア34

title CHANGED
File without changes
body CHANGED
@@ -93,4 +93,104 @@
93
93
 
94
94
 
95
95
  ### 試したこと
96
- ファイルへの書き込みの検索を行いfilewriterを調べたのですが""の文字と変数の組み合わせの書き込みが分からず、Printwriteを調べ、実行したのですがこれもうまく作動しなかった。
96
+ ファイルへの書き込みの検索を行いfilewriterを調べたのですが""の文字と変数の組み合わせの書き込みが分からず、Printwriteを調べ、実行したのですがこれもうまく作動しなかった。
97
+
98
+ ```
99
+ import java.io.*;
100
+ import java.util.Scanner;
101
+ import java.io.FileWriter;
102
+ import java.io.File;
103
+ import java.io.PrintWriter;
104
+ import java.io.BufferedWriter;
105
+
106
+ public class Search{
107
+
108
+ static int max = 0;
109
+ static int now = -1;
110
+ static File[] tmp = new File[100];
111
+ public static void main(String[] args){
112
+ Scanner scan = new Scanner(System.in);
113
+ System.out.println("一覧を取得するディレクトリ名を入力してください。");
114
+ String searchFile = scan.nextLine();
115
+
116
+ System.out.println("出力ファイル名を入力してください。");
117
+ String outputFile = scan.nextLine();
118
+
119
+ dumpFile(new File(searchFile),outputFile);
120
+ }
121
+
122
+ //検索し値を表示
123
+ private static void dumpFile(File file, String output){
124
+ File outFile = new File(output);
125
+
126
+ try{
127
+ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(outFile,true)));
128
+
129
+
130
+ // ファイル一覧取得
131
+ File[] files = file.listFiles();
132
+
133
+ pw.println("Directory: " + file.getName());
134
+
135
+ //ディレクトリが空か判定
136
+ if(files.length == 0){
137
+ pw.println("空です");
138
+ }
139
+
140
+ //ディレクトリだった場合tmpに保存
141
+ for (File tmpFile : files) {
142
+ // ディレクトリの場合
143
+ if(tmpFile.isDirectory()){
144
+ tmp[max] = tmpFile;
145
+ //入手出来てるかの確認
146
+ pw.println(tmpFile.getName() + "はディレクトリです。");
147
+ max++;
148
+
149
+ // ファイルの場合
150
+ }else{
151
+ pw.println(tmpFile.getName() + "はファイルです。");
152
+ }
153
+ }
154
+
155
+ //見やすさのため
156
+ pw.println("");
157
+
158
+ //再帰
159
+ while(now != max-1){
160
+ now++;
161
+ dumpFile(tmp[now],output);
162
+ }
163
+ pw.close();
164
+ }catch(IOException e){
165
+ System.out.println(e);
166
+ }
167
+ }
168
+ }
169
+
170
+
171
+
172
+
173
+ ```
174
+
175
+ ###結果
176
+ ```
177
+ Directory: D4
178
+ F3.txtはファイルです。
179
+
180
+ Directory: D3
181
+ 空です
182
+
183
+ Directory: D2
184
+ D4はディレクトリです。
185
+ F2.txtはファイルです。
186
+
187
+ Directory: D1
188
+ D3はディレクトリです。
189
+
190
+ Directory: test
191
+ D1はディレクトリです。
192
+ D2はディレクトリです。
193
+ F1.txtはファイルです。
194
+
195
+
196
+ ```

1

指摘の改善

2021/10/23 02:49

投稿

tamintya
tamintya

スコア34

title CHANGED
File without changes
body CHANGED
@@ -93,4 +93,4 @@
93
93
 
94
94
 
95
95
  ### 試したこと
96
- ファイルへの書き込みの検索
96
+ ファイルへの書き込みの検索を行いfilewriterを調べたのですが""の文字と変数の組み合わせの書き込みが分からず、Printwriteを調べ、実行したのですがこれもうまく作動しなかった。