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

質問編集履歴

6

内容変更

2020/07/13 22:14

投稿

ibuki_ayah
ibuki_ayah

スコア2

title CHANGED
@@ -1,1 +1,1 @@
1
- 複数のフォルダパスにあるtextファイルを一行ずつ読み込ができない。
1
+ textファイルを順番に読み込むことができず、text内の値を更新することができない。
body CHANGED
@@ -1,147 +1,161 @@
1
1
  **> プログラムで実現したいこと**
2
- サーバー9台分(本物ではない)にリリースするためのtxtファイル9個分の日付情報を自動更新するプログラムを作っています。csvに手入力した日付(0630)を抽出して、9個のtxtファイルの「表示期間B_fm=0530」という行を「表示期間B_fm=0630」に自動更新したいです。
2
+ サーバー9台分(本物ではない)にリリースするためのtxtファイル9個分の日付情報を自動更新するプログラムを
3
+ 作っています。csvに手入力メモした「新fm・新to」の日付を抽出して、txtファイルにある「旧fm・旧to」に上書きしたいです。
3
4
 
4
5
  **> 解決したいこと①**
6
+ 一行ずつ読み込む際、nullの行まで到達していないから無限ループになってしまう。
7
+ 次の行に進むためのソースが必要なのは分かるが、その方法が調べてもわからない。
8
+ next.lineを使ったが次の行に進めなかった。
9
+
5
- dcConversionメソッドで
10
+ **> 新しい日付**
6
- ```java
11
+ ```csv
7
- System.out.println(line2+"に更新しました。")
12
+ dc.misyori_kensu_B_fm=0528
13
+ dc.misyori_kensu_B_to=0628
8
14
  ```
15
+ **> 古い日付**
16
+ ```txt
9
- まで実行結果でコンソール出力したいです。
17
+ dc.misyori_kensu_A_to=1128
18
+ dc.misyori_kensu_B_to=1228
19
+ ```
10
20
 
11
21
 
12
- **> **>コンソール結果**
22
+ **> 解決したいこと⓶**
13
- txtファイル読み込みました。
23
+ csvDateメソッド内の「dc.misyori_kensu_B_fm=.*」の正規表現「.*」「0528」とて抽出しかったが、できない考えられる原因として、一行目の行で永遠に停滞しているから、お目当ての行まで行きついていない、
14
- txtファイルを読み込みました。
15
- txtファイルを読み込みました。
16
- txtファイルを読み込みました。
17
- txtファイルを読み込みました。
18
- txtファイルを読み込みました。
19
- txtファイルを読み込みました。
20
- txtファイルを読み込みました。
21
- txtファイルを読み込みました。
22
24
 
23
25
 
26
+
27
+ **> コンソール結果**
28
+ > > 抽出した文字はjava.util.regex.Matcher[pattern=dc.misyori_kensu_B_fm=.* region=0,24 lastmatch=]です
29
+ B期間のFromの日付を見つけました
30
+ 抽出した文字はjava.util.regex.Matcher[pattern=dc.misyori_kensu_B_fm=.* region=0,24 lastmatch=]です
31
+ B期間のFromの日付を見つけました
32
+ 抽出した文字はjava.util.regex.Matcher[pattern=dc.misyori_kensu_B_fm=.* region=0,24 lastmatch=]です
33
+ B期間のFromの日付を見つけました
34
+ 抽出した文字はjava.util.regex.Matcher[pattern=dc.misyori_kensu_B_fm=.* region=0,24 lastmatch=]です
35
+ B期間のFromの日付を見つけました
36
+
24
37
  ```java
25
38
  package Main;
26
39
 
27
40
  import java.io.BufferedReader;
28
- import java.io.BufferedWriter;
29
41
  import java.io.File;
30
42
  import java.io.FileReader;
31
- import java.io.FileWriter;
32
43
  import java.io.IOException;
33
44
  import java.util.regex.Matcher;
34
45
  import java.util.regex.Pattern;
35
46
 
36
47
  public class properties {
37
-
38
- //pathを定義 (グローバル変数)
39
- public static String[] path = new String[9];
40
48
 
49
+ //pathを定義 (グローバル変数)
41
- public static void main(String[] args){
50
+ public static String[] path = new String[9];
42
51
 
52
+ public static void main(String[] args){
53
+
43
- //9個分のファイルの格納場所を定義
54
+ //9個分のファイルの格納場所を定義
44
- path[0] ="C:\Users\Desktop\SD\ZSVF01P\FD\dc\classes\Draft.txt"; //ZSVF01P
55
+ path[0] ="C:\Users\Desktop\SD\ZSVF01P\FD\dc\classes\properties.txt"; //ZSVF01P
45
- path[1] ="C:\Users\Desktop\SD\ZSVF02P\FD\dc\classes\Draft.txt"; //ZSVF02P
56
+ path[1] ="C:\Users\Desktop\SD\ZSVF02P\FD\dc\classes\properties.txt"; //ZSVF02P
46
- path[2] ="C:\Users\Desktop\SD\ZSVF03P\FD\dc\classes\Draft.txt"; //ZSVF03P
57
+ path[2] ="C:\Users\Desktop\SD\ZSVF03P\FD\dc\classes\properties.txt"; //ZSVF03P
47
- path[3] ="C:\Users\Desktop\SD\ZSVF04P\FD\dc\classes\Draft.txt"; //ZSVF04P
58
+ path[3] ="C:\Users\Desktop\SD\ZSVF04P\FD\dc\classes\properties.txt"; //ZSVF04P
48
- path[4] ="C:\Users\Desktop\SD\ZSVF05P\FD\dc\classes\Draft.txt"; //ZSVF05P
59
+ path[4] ="C:\Users\Desktop\SD\ZSVF05P\FD\dc\classes\properties.txt"; //ZSVF05P
49
- path[5] ="C:\Users\Desktop\SD\ZSVF06P\FD\dc\classes\Draft.txt"; //ZSVF06P
60
+ path[5] ="C:\Users\Desktop\SD\ZSVF06P\FD\dc\classes\properties.txt"; //ZSVF06P
50
- path[6] ="C:\Users\Desktop\SD\ZSVF07P\FD\dc\classes\Draft.txt"; //ZSVF07P
61
+ path[6] ="C:\Users\Desktop\SD\ZSVF07P\FD\dc\classes\properties.txt"; //ZSVF07P
51
- path[7] ="C:\Users\Desktop\SD\ZSVF08P\FD\dc\classes\Draft.txt"; //ZSVF08P
62
+ path[7] ="C:\Users\Desktop\SD\ZSVF08P\FD\dc\classes\properties.txt"; //ZSVF08P
52
- path[8] ="C:\Users\Desktop\SD\ZSVF09P\FD\dc\classes\Draft.txt"; //ZSVF09P
63
+ path[8] ="C:\Users\Desktop\SD\ZSVF09P\FD\dc\classes\properties.txt"; //ZSVF09P
53
-
64
+
54
65
  //ファイルのテキストデータ編集メソッド(引数)
66
+ csvDate();
55
67
  dcConversion(path);
56
-      csvDate
57
- }
68
+ }
58
- public static void csvDate(String[] args) {
69
+ public static void csvDate(String[] args) {
59
- try{
70
+ try{
60
- //更新日を指定したcsvを読み込む宣言
71
+ //更新日を指定したcsvを読み込む宣言
61
- File csv = new File("C:\Users\Desktop\表示期間.csv");
72
+ File csv = new File("C:\Users\Desktop\表示期間.csv");
62
73
 
63
- //csvを読み込む
74
+ //csvを読み込む
64
- FileReader fr1 = new FileReader(csv);
75
+ FileReader fr1 = new FileReader(csv);
65
- //効率的な読み込み
76
+ //効率的な読み込み
66
- BufferedReader br1 = new BufferedReader(fr1);
77
+ BufferedReader br1 = new BufferedReader(fr1);
67
78
 
68
- System.out.println("csvファイルを読み込みました。");
79
+ System.out.println("csvファイルを読み込みました。");
69
-
80
+
70
81
  // 読み込んだ1行の文字列を格納するための変数
71
- String line = br1.readLine();
82
+ String line;
72
-
73
83
  // 1行目を読んでみる。もし空のファイルなら、line には null がセットされる。
84
+ line = br1.readLine();
74
85
 
75
-
76
- while(line!= null) {
86
+ while(line!= null) {
87
+
77
- //判定する行
88
+ //判定する行
78
- line = "kensu_B_fm";
89
+ line = "dc.misyori_kensu_B_fm=.*";
79
90
 
80
- //kensu_B_fm=0630 の「0630」を抽出したい
91
+ //kensu_B_fm=0528 の「0528」を抽出したい
81
- Pattern p = Pattern.compile("kensu_B_fm=.*");
92
+ Pattern p = Pattern.compile("dc.misyori_kensu_B_fm=.*");
82
- Matcher m = p.matcher(line);
93
+ Matcher m = p.matcher(line);
83
94
 
84
- if (m.find()){
85
- System.out.println("B期間のFromの日付を見つけました");
95
+ System.out.println("抽出した文字は"+m+"です");
86
- }
87
96
 
88
- //判定する文字列(To)
97
+ if (m.find()){
89
- line = "kensu_B_to";
98
+ System.out.println("B期間のFromの日付を見つけました");
99
+ }
90
100
 
91
- //kensu_B_toの行にあ日付部分のみ抽出したい
101
+ //判定す
92
- Pattern p2 = Pattern.compile("kensu_B_to=.*");
102
+ line = "dc.misyori_kensu_B_to=.*";
93
- Matcher m2 = p.matcher(line);
94
103
 
95
- if (m2.find()){
104
+ //kensu_B_toの行にある日付部分のみ抽出したい
96
- System.out.println("B期間のToの日付を見つけました");
105
+ Pattern p2 = Pattern.compile("kensu_B_to=.*");
97
- }
98
- }
99
- br1.close();
100
- }
101
- catch (IOException ex) {
106
+ Matcher m2 = p.matcher(line);
102
- ex.printStackTrace();
103
- }
104
- }
105
107
 
108
+ if (m2.find()){
106
- public static void dcConversion(String[] path) {
109
+ System.out.println("B期間のToの日付を見つけました");
110
+ }
111
+ }
112
+ br1.close();
113
+ }
107
- for(int i=0; i<path.length; i++){
114
+ catch (IOException ex) {
108
- try{
109
- //txtファイルを読み込む宣言
115
+ ex.printStackTrace();
110
- File file = new File(path[8]);
116
+ }
117
+ }
111
118
 
119
+ public static void dcConversion(String[] path) {
120
+ for(int i=0; i<path.length; i++){
121
+ try{
112
- //txtファイルを読み込む
122
+ //txtファイルを読み込む宣言
113
- FileReader fr1 = new FileReader(file);
123
+ File file = new File(path[8]);
114
- //効率的に読み込みできるメソッド
115
- BufferedReader br1 = new BufferedReader(fr1);
116
124
 
125
+ //txtファイルを読み込む
126
+ FileReader fr1 = new FileReader(file);
117
- // 読み込んだ1行の文字列を格納すための変数
127
+ //効率的に読み込みできメソッド
118
- String line2;
119
- // 1行目を読んでみる。もし、空のファイルなら、line には null がセットされる。
120
- line2 = br1.readLine();
128
+ BufferedReader br1 = new BufferedReader(fr1);
121
129
 
122
- System.out.println("txtファイルを読み込みまし。");
130
+ // 読み込んだ1行の文字列を格納するめの変数
123
-
131
+ String line2;
124
- //文字列がないまで一行ずつ読み込む。行全てみ込らnullを返す
132
+ // 1を読んでみる。もし、空のファイルな、line には null がセットされる
125
- while(line2!= null) {
133
+ line2 = br1.readLine();
126
134
 
127
- System.out.println(line2);
135
+ System.out.println("txtファイルを読み込みました。");
128
136
 
129
- //抽出したcsvの一行にある日付(0630)をtxtの該当行に書き込みす
137
+ //文字列がない行まで一行ずつ読みむ。行を全て読込んだらnullを返す。
130
- line2 = line2.replace("表示期間B_fm=.*", "表示期間B_fm,m1");
131
- line2 = line2.replace("表示期間B_to=.*", "表示期間B_to,m2");
132
-
133
- System.out.println(line2+"に更新しました。");
134
- System.out.println(line2+"に更新しました。");
135
- }
136
-
137
- br1.close();
138
- }
139
- catch (IOException ex) {
138
+ while(line2!= null) {
140
- ex.printStackTrace();
141
- }
142
139
 
140
+ System.out.println(line2);
141
+
142
+ //抽出したcsvの一行にある日付(0528)をtxtの該当行に書き込みする。
143
+ line2 = line2.replace("dc.misyori_kensu_B_fm=.*", "dc.misyori_kensu_B_fm,m1");
144
+ line2 = line2.replace("dc.misyori_kensu_B_to=.*", "dc.misyori_kensu_B_to,m2");
145
+
146
+ System.out.println(line2+"に更新しました。");
147
+ System.out.println(line2+"に更新しました。");
143
- }
148
+ }
149
+
150
+ br1.close();
144
- }
151
+ }
152
+ catch (IOException ex) {
153
+ ex.printStackTrace();
154
+ }
155
+
156
+ }
157
+ }
145
158
  }
146
159
 
160
+
147
161
  ```

5

内容変更

2020/07/13 22:14

投稿

ibuki_ayah
ibuki_ayah

スコア2

title CHANGED
File without changes
body CHANGED
@@ -71,7 +71,7 @@
71
71
  String line = br1.readLine();
72
72
 
73
73
  // 1行目を読んでみる。もし空のファイルなら、line には null がセットされる。
74
- line = br1.readLine();
74
+
75
75
 
76
76
  while(line!= null) {
77
77
  //判定する行

4

内容変更

2020/07/11 10:34

投稿

ibuki_ayah
ibuki_ayah

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,6 @@
1
+ **> プログラムで実現したいこと**
2
+ サーバー9台分(本物ではない)にリリースするためのtxtファイル9個分の日付情報を自動更新するプログラムを作っています。csvに手入力した日付(0630)を抽出して、9個のtxtファイルの「表示期間B_fm=0530」という行を「表示期間B_fm=0630」に自動更新したいです。
3
+
1
4
  **> 解決したいこと①**
2
5
  dcConversionメソッドで
3
6
  ```java
@@ -71,12 +74,10 @@
71
74
  line = br1.readLine();
72
75
 
73
76
  while(line!= null) {
74
- //=lineは既にstringとして宣言してあるが、判定する際の変数をここでlineとしたい。
75
- //判定する文字列(From)
77
+ //判定する
76
78
  line = "kensu_B_fm";
77
79
 
78
- //判定するパターン生成
80
+ //kensu_B_fm=0630 の「0630」抽出したい
79
- //日付がマッチする。
80
81
  Pattern p = Pattern.compile("kensu_B_fm=.*");
81
82
  Matcher m = p.matcher(line);
82
83
 
@@ -105,20 +106,14 @@
105
106
  public static void dcConversion(String[] path) {
106
107
  for(int i=0; i<path.length; i++){
107
108
  try{
108
- //propertiesファイルを読み込む宣言
109
+ //txtファイルを読み込む宣言
109
110
  File file = new File(path[8]);
110
111
 
111
- //propertiesファイルを読み込む
112
+ //txtファイルを読み込む
112
113
  FileReader fr1 = new FileReader(file);
113
114
  //効率的に読み込みできるメソッド
114
115
  BufferedReader br1 = new BufferedReader(fr1);
115
116
 
116
- //書き込むタイミングは[while line]文の中が良いのでは?
117
- //propertiesファイルを書き込む
118
- FileWriter fr2 = new FileWriter(file);
119
- //効率的に書き込みできるメソッド
120
- BufferedWriter bw1 = new BufferedWriter(fr2);
121
-
122
117
  // 読み込んだ1行の文字列を格納するための変数
123
118
  String line2;
124
119
  // 1行目を読んでみる。もし、空のファイルなら、line には null がセットされる。
@@ -131,18 +126,14 @@
131
126
 
132
127
  System.out.println(line2);
133
128
 
134
- //更新済みのcsvの一行をproperties「fm,to」に書き込みする。
129
+ //抽出したcsvの一行にある日付(0630)txt該当行に書き込みする。
135
- //「*」:直前の文字が0回以上繰り返す場合にマッチ
136
- //「.」:任意の文字一文字がマッチ
137
- //「.*」:「....」
138
- line2 = line2.replace("表示期間B_fm=.*", "表示期間B_fm,m1"); //「*」:直前の文字が0回以上繰り返す場合にマッチ:
130
+ line2 = line2.replace("表示期間B_fm=.*", "表示期間B_fm,m1");
139
- line2 = line2.replace("表示期間B_to=.*", "表示期間B_to,m2"); //「.」:任意の文字一文字がマッチ
131
+ line2 = line2.replace("表示期間B_to=.*", "表示期間B_to,m2");
140
- //「.*」:「....」
132
+
141
-
142
133
  System.out.println(line2+"に更新しました。");
143
134
  System.out.println(line2+"に更新しました。");
144
135
  }
145
- //ファイルへ書き込み
136
+
146
137
  br1.close();
147
138
  }
148
139
  catch (IOException ex) {

3

内容変更

2020/07/11 10:32

投稿

ibuki_ayah
ibuki_ayah

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,5 @@
1
1
  **> 解決したいこと①**
2
+ dcConversionメソッドで
2
3
  ```java
3
4
  System.out.println(line2+"に更新しました。")
4
5
  ```
@@ -17,9 +18,6 @@
17
18
  txtファイルを読み込みました。
18
19
 
19
20
 
20
- **> **>解決したいこと②
21
- デバッグ時に、csvDateメソッドのコンソール出力がスキップされて、dcConversionメソッドのコンソール出力が先にされてしまう。なので、csvDateメソッドのコンソール出力を先に行いたい。
22
-
23
21
  ```java
24
22
  package Main;
25
23
 
@@ -52,6 +50,7 @@
52
50
 
53
51
  //ファイルのテキストデータ編集メソッド(引数)
54
52
  dcConversion(path);
53
+      csvDate
55
54
  }
56
55
  public static void csvDate(String[] args) {
57
56
  try{

2

内容の変更

2020/07/11 08:16

投稿

ibuki_ayah
ibuki_ayah

スコア2

title CHANGED
File without changes
body CHANGED
@@ -6,15 +6,15 @@
6
6
 
7
7
 
8
8
  **> **>コンソール結果**
9
- > propertiesファイルを読み込みました。
10
- propertiesファイルを読み込みました。
9
+ txtファイルを読み込みました。
11
- propertiesファイルを読み込みました。
10
+ txtファイルを読み込みました。
12
- propertiesファイルを読み込みました。
11
+ txtファイルを読み込みました。
13
- propertiesファイルを読み込みました。
12
+ txtファイルを読み込みました。
14
- propertiesファイルを読み込みました。
13
+ txtファイルを読み込みました。
15
- propertiesファイルを読み込みました。
14
+ txtファイルを読み込みました。
16
- propertiesファイルを読み込みました。
15
+ txtファイルを読み込みました。
17
- propertiesファイルを読み込みました。
16
+ txtファイルを読み込みました。
17
+ txtファイルを読み込みました。
18
18
 
19
19
 
20
20
  **> **>解決したいこと②
@@ -125,7 +125,7 @@
125
125
  // 1行目を読んでみる。もし、空のファイルなら、line には null がセットされる。
126
126
  line2 = br1.readLine();
127
127
 
128
- System.out.println("propertiesファイルを読み込みました。");
128
+ System.out.println("txtファイルを読み込みました。");
129
129
 
130
130
  //文字列がない行まで一行ずつ読み込む。行を全て読み込んだらnullを返す。
131
131
  while(line2!= null) {

1

内容の変更

2020/07/11 07:55

投稿

ibuki_ayah
ibuki_ayah

スコア2

title CHANGED
@@ -1,1 +1,1 @@
1
- 複数のフォルダパスにあるtextファイル読み込みができない。
1
+ 複数のフォルダパスにあるtextファイルを一行ずつ読み込みができない。
body CHANGED
@@ -1,113 +1,157 @@
1
1
  **> 解決したいこと①**
2
+ ```java
3
+ System.out.println(line2+"に更新しました。")
4
+ ```
5
+ まで実行結果でコンソール出力したいです。
2
6
 
3
- ・9種類のディレクトリの一番階層の深い場所にある「Draft.txt」というファイルを9個分、順番に読み込みたいのですが、以下のようなエラーが発生します。
4
7
 
8
+ **> **>コンソール結果**
9
+ > propertiesファイルを読み込みました。
10
+ propertiesファイルを読み込みました。
11
+ propertiesファイルを読み込みました。
12
+ propertiesファイルを読み込みました。
13
+ propertiesファイルを読み込みました。
14
+ propertiesファイルを読み込みました。
15
+ propertiesファイルを読み込みました。
16
+ propertiesファイルを読み込みました。
17
+ propertiesファイルを読み込みました。
5
18
 
6
- **> エラー内容**
7
- java.io.FileNotFoundException: dc.txt (指定されたファイルが見つかりません。)
8
- at java.io.FileInputStream.open(Native Method)
9
- at java.io.FileInputStream.<init>(FileInputStream.java:138)
10
- at java.io.FileReader.<init>(FileReader.java:72)
11
- at Main.txt.dcConversion(txt.java:40)
12
- at Main.txt.main(txt.java:29)
13
19
 
20
+ **> **>解決したいこと②
21
+ デバッグ時に、csvDateメソッドのコンソール出力がスキップされて、dcConversionメソッドのコンソール出力が先にされてしまう。なので、csvDateメソッドのコンソール出力を先に行いたい。
22
+
14
23
  ```java
15
24
  package Main;
16
25
 
17
26
  import java.io.BufferedReader;
27
+ import java.io.BufferedWriter;
18
28
  import java.io.File;
19
29
  import java.io.FileReader;
30
+ import java.io.FileWriter;
20
31
  import java.io.IOException;
32
+ import java.util.regex.Matcher;
33
+ import java.util.regex.Pattern;
21
34
 
22
- public class txt {
35
+ public class properties {
36
+
23
-
37
+ //pathを定義 (グローバル変数)
24
38
  public static String[] path = new String[9];
25
39
 
26
40
  public static void main(String[] args){
27
41
 
28
- //ファイルの格納場所を定義
42
+ //9個分のファイルの格納場所を定義
29
- path[0] ="\DS\ZS01P\D$\Draft\class\Draft.txt"; //ZS01P
43
+ path[0] ="C:\Users\Desktop\SD\ZSVF01P\FD\dc\classes\Draft.txt"; //ZSVF01P
30
- path[1] ="\DS\ZS02P\D$\Draft\class\Draft.txt"; //ZS02P
44
+ path[1] ="C:\Users\Desktop\SD\ZSVF02P\FD\dc\classes\Draft.txt"; //ZSVF02P
31
- path[2] ="\DS\ZS03P\D$\Draft\class\Draft.txt"; //ZS03P
45
+ path[2] ="C:\Users\Desktop\SD\ZSVF03P\FD\dc\classes\Draft.txt"; //ZSVF03P
32
- path[3] ="\DS\ZS04P\D$\Draft\class\Draft.txt"; //ZS04P
46
+ path[3] ="C:\Users\Desktop\SD\ZSVF04P\FD\dc\classes\Draft.txt"; //ZSVF04P
33
- path[4] ="\DS\ZS05P\D$\Draft\class\Draft.txt"; //ZS05P
47
+ path[4] ="C:\Users\Desktop\SD\ZSVF05P\FD\dc\classes\Draft.txt"; //ZSVF05P
34
- path[5] ="\DS\ZS06P\D$\Draft\class\Draft.txt"; //ZS06P
48
+ path[5] ="C:\Users\Desktop\SD\ZSVF06P\FD\dc\classes\Draft.txt"; //ZSVF06P
35
- path[6] ="\DS\ZS07P\D$\Draft\class\Draft.txt"; //ZS07P
49
+ path[6] ="C:\Users\Desktop\SD\ZSVF07P\FD\dc\classes\Draft.txt"; //ZSVF07P
36
- path[7] ="\DS\ZS08P\D$\Draft\class\Draft.txt"; //ZS08P
50
+ path[7] ="C:\Users\Desktop\SD\ZSVF08P\FD\dc\classes\Draft.txt"; //ZSVF08P
37
- path[8] ="\DS\ZS09P\D$\Draft\class\Draft.txt"; //ZS09P
51
+ path[8] ="C:\Users\Desktop\SD\ZSVF09P\FD\dc\classes\Draft.txt"; //ZSVF09P
38
-
52
+
39
- //ファイル編集メソッド(引数)
53
+ //ファイルのテキストデータ編集メソッド(引数)
40
- DraftConversion(path);
54
+ dcConversion(path);
41
55
  }
56
+ public static void csvDate(String[] args) {
57
+ try{
58
+ //更新日を指定したcsvを読み込む宣言
59
+ File csv = new File("C:\Users\Desktop\表示期間.csv");
42
60
 
43
- public static void DraftConversion(String[] path) {
61
+ //csvを読み込む
44
- for(int i=0; i<path.length; i++){
62
+ FileReader fr1 = new FileReader(csv);
63
+ //効率的な読み込み
64
+ BufferedReader br1 = new BufferedReader(fr1);
45
65
 
46
- try{
47
- //読み込む用のファイルを指定する
48
- File file = new File("Draft.txt");
66
+ System.out.println("csvファイルを読み込みました。");
49
-
50
- //ファイルを読み込む
51
- FileReader fr = new FileReader(file);
52
67
 
53
- //効率的に読み込みでき
68
+ // 読み込んだ1行の文字列を格納すための変数
54
- BufferedReader br = new BufferedReader(fr);
69
+ String line = br1.readLine();
55
70
 
56
- //ファイルを書き込む
71
+ // 1行目を読んでみる。もし空のファイルなら、line には null がセットされる。
57
- FileWriter fr2 = new FileWriter(file);
72
+ line = br1.readLine();
58
73
 
59
- //効率的に書き込みできる
60
- BufferedWriter bw = new BufferedWriter(fr2);
61
-
62
- //読み込んだ結果を戻り値として返す変数
63
- String line = br.readLine() ;
64
-
65
- System.out.println("ファイルを読み込み始めました");
66
-
67
- //null:文字列がない行まで一行ずつ読み込む。ファイルの終わりに来たらnullを返す。
68
74
  while(line!= null) {
69
-
70
-
71
- //日付変更① 5月28日を6月30日に変
75
+ //=lineは既stringとして宣言してあるが、判定する際の数をここでlineとしたい。
72
- //日付変更② 6月10日を7月06日に変更
73
- line = line.replace("Draft_kensu_B_fm,0528", "Draft_kensu_B_fm,0630");
74
- line = line.replace("Draft_kensu_B_to,0610", "Draft_kensu_B_to,0706");
75
-
76
- // ファイルへ書き込み
76
+ //判定する文字列(From)
77
- bw.write(line);
78
- bw.newLine();
79
-
80
- System.out.println(line+"に更新しました。");
77
+ line = "kensu_B_fm";
81
- System.out.println(line+"に更新しました。");
82
- }
83
78
 
84
- // 最後にファイルを閉じてリソースを開放する
79
+ //判定するパターンを生成
80
+ //日付がマッチする。
81
+ Pattern p = Pattern.compile("kensu_B_fm=.*");
82
+ Matcher m = p.matcher(line);
83
+
85
- br.close();
84
+ if (m.find()){
85
+ System.out.println("B期間のFromの日付を見つけました");
86
- }
86
+ }
87
+
88
+ //判定する文字列(To)
89
+ line = "kensu_B_to";
90
+
91
+ //kensu_B_toの行にある日付部分のみ抽出したい
92
+ Pattern p2 = Pattern.compile("kensu_B_to=.*");
87
- catch (IOException ex) {
93
+ Matcher m2 = p.matcher(line);
94
+
88
- ex.printStackTrace();
95
+ if (m2.find()){
96
+ System.out.println("B期間のToの日付を見つけました");
89
- }
97
+ }
98
+ }
99
+ br1.close();
90
100
  }
101
+ catch (IOException ex) {
102
+ ex.printStackTrace();
103
+ }
91
104
  }
92
- }
93
105
 
106
+ public static void dcConversion(String[] path) {
107
+ for(int i=0; i<path.length; i++){
94
- ```
108
+ try{
109
+ //propertiesファイルを読み込む宣言
110
+ File file = new File(path[8]);
95
111
 
112
+ //propertiesファイルを読み込む
113
+ FileReader fr1 = new FileReader(file);
114
+ //効率的に読み込みできるメソッド
115
+ BufferedReader br1 = new BufferedReader(fr1);
96
116
 
117
+ //書き込むタイミングは[while line]文の中が良いのでは?
118
+ //propertiesファイルを書き込む
119
+ FileWriter fr2 = new FileWriter(file);
120
+ //効率的に書き込みできるメソッド
121
+ BufferedWriter bw1 = new BufferedWriter(fr2);
97
122
 
123
+ // 読み込んだ1行の文字列を格納するための変数
124
+ String line2;
125
+ // 1行目を読んでみる。もし、空のファイルなら、line には null がセットされる。
126
+ line2 = br1.readLine();
98
127
 
128
+ System.out.println("propertiesファイルを読み込みました。");
129
+
130
+ //文字列がない行まで一行ずつ読み込む。行を全て読み込んだらnullを返す。
131
+ while(line2!= null) {
99
132
 
133
+ System.out.println(line2);
100
134
 
135
+ //更新済みのcsvの一行をpropertiesの「fm,to」に書き込みする。
136
+ //「*」:直前の文字が0回以上繰り返す場合にマッチ
137
+ //「.」:任意の文字一文字がマッチ
138
+ //「.*」:「....」
139
+ line2 = line2.replace("表示期間B_fm=.*", "表示期間B_fm,m1"); //「*」:直前の文字が0回以上繰り返す場合にマッチ:
140
+ line2 = line2.replace("表示期間B_to=.*", "表示期間B_to,m2"); //「.」:任意の文字一文字がマッチ
141
+ //「.*」:「....」
101
142
 
143
+ System.out.println(line2+"に更新しました。");
144
+ System.out.println(line2+"に更新しました。");
145
+ }
146
+ //ファイルへ書き込み
147
+ br1.close();
148
+ }
149
+ catch (IOException ex) {
150
+ ex.printStackTrace();
151
+ }
102
152
 
153
+ }
154
+ }
155
+ }
103
156
 
104
- > 解決したいこと②
105
-
106
- 上記に記載したソースの一行ずつ順番に読み込まれるコードの中で、「Draft_kensu_B_fm,0528」という行があります。その行を「Draft_kensu_B_fm,0630」に置換したいのですが、ソースコードに問題はないでしょうか?
107
-
108
- ```java
109
- //日付変更① 5月28日を6月30日に変更
110
- //日付変更② 6月10日を7月06日に変更
111
- line = line.replace("Draft_kensu_B_fm,0528", "Draft_kensu_B_fm,0630");
112
- line = line.replace("Draft_kensu_B_to,0610", "Draft_kensu_B_to,0706");
113
157
  ```