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

質問編集履歴

2

ソースコードの更新、発生している問題の変更

2020/06/15 17:00

投稿

tera-ryo
tera-ryo

スコア4

title CHANGED
File without changes
body CHANGED
@@ -47,8 +47,8 @@
47
47
 
48
48
  ### 試したこと
49
49
 
50
- コンソールに表示させる部分はうまくいきました。あとは、while文の中にファイルに出力するものを入れたいです。
51
50
 
51
+
52
52
  ### 補足情報(FW/ツールのバージョンなど)
53
53
 
54
- ファイルに出力する際、一つのファイルにまとめて出力するのではなく、それぞれ別のファイルに出力したいです。また、なおソースコードはimport文を除いています。
54
+ ファイルに出力する際、一つのファイルにまとめて出力するのではなく、それぞれ別のファイルに出力したいです。なおソースコードはimport文を除いています。

1

ソースコードの更新、発生している問題の変更

2020/06/15 17:00

投稿

tera-ryo
tera-ryo

スコア4

title CHANGED
File without changes
body CHANGED
@@ -1,43 +1,50 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- まず実現したいは、適当なディレクトリに複数のテキストファイルがある状態でそれらの全ファイルを読み込む。そして、それぞれのファイルの内容を
3
+ まず実現したいことは、適当なディレクトリに複数のテキストファイルがある状態でそれらの全ファイルを読み込む。そして、それぞれのファイルの内容を
4
4
  ・コンソールに表示する
5
5
  ・それぞれ別ファイルに出力する
6
6
  ということです。
7
+
7
8
  ### 発生している問題・エラーメッセージ
9
+ ファイルに書き込む際、配列filesの要素を書き込んでいくと次々に上書きされてしまいます。
10
+ 新しいファイルのパスが毎回同じだからだと思うのですが、どうすればfor文を繰り返すごとに書き込むファイルを変えることができますか?
8
11
 
9
- 複数のファイルの内容を複数のファイルに出力する方法、アルゴリズムが分かりません。
10
12
 
11
13
  ### 該当のソースコード
12
14
 
13
- public static void main(String[] args) {
15
+ public static void main(String[] args) {
14
16
  // TODO 自動生成されたメソッド・スタブ
15
17
 
16
-
18
+ try {
17
- File file = new File("複数の読み込むファイルがあるディレクトリ");
19
+ File file = new File("読み込むファイルがあるディレクトリ");
18
-
20
+ File[] files = file.listFiles();//一覧で取得
21
+
19
-
22
+ String line;
23
+
20
- for(File f : file.listFiles()) {
24
+ for(int i=0;i <=files.length;i++) {
25
+ File newFile = new File("新しいファイルのパス");
26
+ newFile.createNewFile();
27
+ BufferedReader reader = new BufferedReader(new FileReader(files[i]));//
28
+ PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(newFile)));//
29
+
30
+ while(null != (line = reader.readLine())) {
31
+ System.out.println(line);
21
- if(f.isDirectory()) {
32
+ writer.println(line);
22
- continue;
23
- }
33
+ }
24
- try(BufferedReader br = Files.newBufferedReader(f.toPath(),StandardCharsets.UTF_8)){
25
- String ln;
26
- while((ln = br.readLine()) != null) {
27
- System.out.println(ln);
34
+ writer.close();
35
+ reader.close();
36
+
28
37
 
29
-
30
- //この中にファイルに出力するコマンドも書きたい
31
- }
38
+ }
39
+
40
+
32
-
41
+ }catch (FileNotFoundException e) {
42
+ System.out.println(e);
33
43
  }catch (IOException e) {
34
- e.printStackTrace();
44
+ System.out.print(e);
35
45
  }
46
+ }
36
47
 
37
- }
38
-
39
-
40
-
41
48
  ### 試したこと
42
49
 
43
50
  コンソールに表示させる部分はうまくいきました。あとは、while文の中にファイルに出力するものを入れたいです。