質問編集履歴

3

質問が分かりにくいため

2021/10/23 03:13

投稿

tamintya
tamintya

スコア34

test CHANGED
File without changes
test CHANGED
@@ -2,9 +2,15 @@
2
2
 
3
3
 
4
4
 
5
- ディレクトリの中身を探索するメソッドで実行した結果をファイルに入力したいのですが方法が分かりません。
5
+ ディレクトリの中身を探索するメソッドで実行した結果をファイルに入力したいのですがく作動しませんでした
6
-
6
+
7
- 画面に出する必要はなくファイルの拡張子は.txt.csv2通り行いたいです
7
+ この時入されたファイル(下コードではoutputFile)の拡張子をファイル名でなくコードの書き方で指定するこは出来るのでしょうか
8
+
9
+ 下のコードは入力したい結果を表示するコードです。
10
+
11
+ (追記)
12
+
13
+ 試したことにうまく作動しなかったコードを載せました。
8
14
 
9
15
 
10
16
 
@@ -188,7 +194,7 @@
188
194
 
189
195
  ### 試したこと
190
196
 
191
- ファイルへの書き込みの検索を行いfilewriterを調べたのすが""の文字と変数の組み合わせの書き込みらず、Printwriteを調べ、実行したすがこもうく作動しなかった。
197
+ filewriterでは ("Directory: " + file.getName()) ような""と変数の組み合わせを出力することうまく出来なったのでPrintwriteに書き換え実行した結果下はなく上に追加さてしまった。
192
198
 
193
199
 
194
200
 

2

詳しい説明の追加

2021/10/23 03:13

投稿

tamintya
tamintya

スコア34

test CHANGED
File without changes
test CHANGED
@@ -189,3 +189,203 @@
189
189
  ### 試したこと
190
190
 
191
191
  ファイルへの書き込みの検索を行いfilewriterを調べたのですが""の文字と変数の組み合わせの書き込みが分からず、Printwriteを調べ、実行したのですがこれもうまく作動しなかった。
192
+
193
+
194
+
195
+ ```
196
+
197
+ import java.io.*;
198
+
199
+ import java.util.Scanner;
200
+
201
+ import java.io.FileWriter;
202
+
203
+ import java.io.File;
204
+
205
+ import java.io.PrintWriter;
206
+
207
+ import java.io.BufferedWriter;
208
+
209
+
210
+
211
+ public class Search{
212
+
213
+
214
+
215
+ static int max = 0;
216
+
217
+ static int now = -1;
218
+
219
+ static File[] tmp = new File[100];
220
+
221
+ public static void main(String[] args){
222
+
223
+ Scanner scan = new Scanner(System.in);
224
+
225
+ System.out.println("一覧を取得するディレクトリ名を入力してください。");
226
+
227
+ String searchFile = scan.nextLine();
228
+
229
+
230
+
231
+ System.out.println("出力ファイル名を入力してください。");
232
+
233
+ String outputFile = scan.nextLine();
234
+
235
+
236
+
237
+ dumpFile(new File(searchFile),outputFile);
238
+
239
+ }
240
+
241
+
242
+
243
+ //検索し値を表示
244
+
245
+ private static void dumpFile(File file, String output){
246
+
247
+ File outFile = new File(output);
248
+
249
+
250
+
251
+ try{
252
+
253
+ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(outFile,true)));
254
+
255
+
256
+
257
+
258
+
259
+ // ファイル一覧取得
260
+
261
+ File[] files = file.listFiles();
262
+
263
+
264
+
265
+ pw.println("Directory: " + file.getName());
266
+
267
+
268
+
269
+ //ディレクトリが空か判定
270
+
271
+ if(files.length == 0){
272
+
273
+ pw.println("空です");
274
+
275
+ }
276
+
277
+
278
+
279
+ //ディレクトリだった場合tmpに保存
280
+
281
+ for (File tmpFile : files) {
282
+
283
+ // ディレクトリの場合
284
+
285
+ if(tmpFile.isDirectory()){
286
+
287
+ tmp[max] = tmpFile;
288
+
289
+ //入手出来てるかの確認
290
+
291
+ pw.println(tmpFile.getName() + "はディレクトリです。");
292
+
293
+ max++;
294
+
295
+
296
+
297
+ // ファイルの場合
298
+
299
+ }else{
300
+
301
+ pw.println(tmpFile.getName() + "はファイルです。");
302
+
303
+ }
304
+
305
+ }
306
+
307
+
308
+
309
+ //見やすさのため
310
+
311
+ pw.println("");
312
+
313
+
314
+
315
+ //再帰
316
+
317
+ while(now != max-1){
318
+
319
+ now++;
320
+
321
+ dumpFile(tmp[now],output);
322
+
323
+ }
324
+
325
+ pw.close();
326
+
327
+ }catch(IOException e){
328
+
329
+ System.out.println(e);
330
+
331
+ }
332
+
333
+ }
334
+
335
+ }
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+
344
+
345
+ ```
346
+
347
+
348
+
349
+ ###結果
350
+
351
+ ```
352
+
353
+ Directory: D4
354
+
355
+ F3.txtはファイルです。
356
+
357
+
358
+
359
+ Directory: D3
360
+
361
+ 空です
362
+
363
+
364
+
365
+ Directory: D2
366
+
367
+ D4はディレクトリです。
368
+
369
+ F2.txtはファイルです。
370
+
371
+
372
+
373
+ Directory: D1
374
+
375
+ D3はディレクトリです。
376
+
377
+
378
+
379
+ Directory: test
380
+
381
+ D1はディレクトリです。
382
+
383
+ D2はディレクトリです。
384
+
385
+ F1.txtはファイルです。
386
+
387
+
388
+
389
+
390
+
391
+ ```

1

指摘の改善

2021/10/23 02:49

投稿

tamintya
tamintya

スコア34

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