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

質問編集履歴

1

文字修正

2016/06/17 08:00

投稿

kumakumatan
kumakumatan

スコア213

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,5 @@
1
1
  ```CSVファイル(C:\sample)
2
2
  ABC123,テスト A,123456,060-5938-1234,
3
- ABg456,テスト B,1234567,060-7886-567,
4
3
  ABfD456,テスト E,123459,060-4697-8912,テスト
5
4
  ABCD789,テスト F,1234581,060-4577-8913,
6
5
  ABCD12,テスト G,1234582,060-1266-8914,
@@ -22,32 +21,22 @@
22
21
  public class exec01 {
23
22
 
24
23
  public static void main(String[] args) {
25
- // ここにコードを挿入
26
24
 
27
- // FieldChk01クラスをインスタンス化する
28
25
  FieldChk01 Chk01 = new FieldChk01();
29
26
 
30
- // FieldChk01クラスのmethodを呼び出す
31
27
  Chk01.method();
32
28
 
33
- // FieldChk02クラスをインスタンス化する
34
29
  FieldChk02 Chk02 = new FieldChk02();
35
30
 
36
- // FieldChk02クラスのmethodを呼び出す
37
31
  Chk02.method();
38
32
 
39
- // FReadDistinctクラスをインスタンス化する
33
+
40
34
  FReadDistinct Chk03 = new FReadDistinct();
41
35
 
42
- // FReadDistinctクラスのmethodを呼び出す
36
+
43
37
  Chk03.method();
44
38
 
45
- //処理フラグの表示
39
+
46
- // FieldChk01クラスのflg変数の呼び出し
47
- // FieldChk02クラスのflg変数の呼び出し
48
- // FReadDistinctクラスのflg変数の呼び出し
49
- //System.out.println(Chk01.flg);
50
-
51
40
  if(Chk01.flg == 0 && FieldChk02.flg == 0 && Chk03.flg2 == 0) {
52
41
  System.out.println("正常処理!!");
53
42
  }
@@ -77,14 +66,11 @@
77
66
  //処理フラグ(0なら正常:1以上なら異常)
78
67
  int flg = 0;
79
68
 
80
- // public static void main(String[] args) {
81
- // クラス化
82
- public void method() {
69
+ public void method() {
83
- // ここにコードを挿入
70
+
84
71
 
85
72
  try {
86
73
 
87
- // ファイルのパスを指定してオブジェクトを生成。
88
74
  File file = new File("C:\\sample.csv");
89
75
 
90
76
  // 入力ストリームを生成。( FileNotFoundException が発生 )
@@ -97,8 +83,7 @@
97
83
 
98
84
  BufferedReader buffer = new BufferedReader(stream);
99
85
 
100
- //変数定義
86
+
101
- //読み込み行
102
87
  String line;
103
88
  //読み込み件数
104
89
  int count = 0;
@@ -119,9 +104,7 @@
119
104
 
120
105
  // 読み込み行数カウント
121
106
  count++;
122
- //配列数定義
107
+
123
- //len1 = columns.length;
124
- //System.out.println(len1);
125
108
 
126
109
  Pattern p1 = Pattern.compile("^[0-9]+$"); // 番号
127
110
  Pattern p2 = Pattern.compile("^[0-9]{3}-[0-9]{4}-[0-9]{4}$"); // 電話番号
@@ -171,4 +154,238 @@
171
154
  }
172
155
 
173
156
  }
174
- ```
157
+ ```
158
+ ```java
159
+ /**
160
+ * CSV配列数のチェック(A~D列以外はNG)
161
+ * @param args
162
+ */
163
+
164
+ package csvRead;
165
+
166
+ import java.io.BufferedReader;
167
+ import java.io.File;
168
+ import java.io.FileInputStream;
169
+ import java.io.FileNotFoundException;
170
+ import java.io.IOException;
171
+ import java.io.InputStreamReader;
172
+ import java.io.UnsupportedEncodingException;
173
+
174
+ public class FieldChk02 {
175
+ //処理フラグ(0なら正常:1以上なら異常)
176
+ static int flg = 0;
177
+
178
+ //public static void main(String[] args) {
179
+ // クラス化
180
+ public void method() {
181
+ // ここにコードを挿入
182
+
183
+ try {
184
+
185
+ // ファイルのパスを指定してオブジェクトを生成。
186
+ File file = new File("C:\\sample.csv");
187
+ //File file = new File(path2);
188
+
189
+ // 入力ストリームを生成。( FileNotFoundException が発生 )
190
+ FileInputStream input = new FileInputStream(file);
191
+ /* 入力ストリームの読み込み。 ( UnsupportedEncodingException が発生 )
192
+ * ここでCSVファイルの文字コードを設定しないと文字化けします。 */
193
+ // 読み込むファイルの文字コード(SJIS)
194
+ InputStreamReader stream = new InputStreamReader(input, "SJIS");
195
+ // バッファに取り込み。
196
+
197
+ BufferedReader buffer = new BufferedReader(stream);
198
+
199
+ String line;
200
+ //読み込み件数
201
+ int count = 0;
202
+ //配列数
203
+ int len1 = 0;
204
+
205
+ /* readLine()でバッファの1行を取り出す作業を、読み込める行が無くなるまでwhile文で実行。
206
+ * line = buffer.readline() でBufferedReaderが保持する一行を取出しているので、ループする毎に書き変わります。 */
207
+ while((line = buffer.readLine()) != null) {
208
+ // 取出した1行の文字セットを変換して新たに文字列を生成。
209
+ byte[] b = line.getBytes();
210
+ // String で UnsupportedEncodingException が発生 (変換したい文字コード:UTF-8)
211
+ line = new String(b, "UTF-8");
212
+ // 文字列をカンマ区切りで配列に分けて要素ごとに出力。
213
+ // line.splitの第2引数に"-1"を指定しないと、他の行と要素数が
214
+ // 違うため、出力結果の様にはなりません。
215
+ String[] columns = line.split(",", 0);
216
+
217
+ // 読み込み行数カウント
218
+ count++;
219
+ //配列数定義
220
+ len1 = columns.length;
221
+
222
+ for(int j = 0; j < columns.length; j++) {
223
+ //for(int j = 0; j < 4; j++) {
224
+ //System.out.println(j + " : " + columns[j]);
225
+
226
+ }
227
+ //配列数オーバーの行表示
228
+ if(len1 > 4) {
229
+ System.out.println(count + "行目の" + len1 + "列目に不正入力データがあります。");
230
+ flg++;
231
+
232
+ }
233
+
234
+ }
235
+
236
+
237
+
238
+ // 開いたストリームとバッファを閉じて関連するシステム・リソースを解放します。 ( IOException が発生 )
239
+ input.close();
240
+ stream.close();
241
+ buffer.close();
242
+
243
+ } catch (UnsupportedEncodingException | FileNotFoundException e) {
244
+ e.printStackTrace();
245
+
246
+ } catch (IOException e) {
247
+ e.printStackTrace();
248
+
249
+ }
250
+
251
+ }
252
+
253
+ }
254
+ ```
255
+ ```java
256
+ package csvRead;
257
+ /*
258
+ * ファイル読み込みクラス(文字コードSJIS)
259
+ */
260
+
261
+ import java.io.BufferedReader;
262
+ import java.io.FileInputStream;
263
+ import java.io.IOException;
264
+ import java.io.InputStreamReader;
265
+ import java.util.ArrayList;
266
+ import java.util.List;
267
+
268
+ public class FRead {
269
+ public static String[] getLines(String fileName) {
270
+
271
+ List<String> list = new ArrayList<String>();
272
+
273
+ BufferedReader br = null;
274
+ try {
275
+ /* 入力ストリームの読み込み。
276
+ * ここでCSVファイルの文字コードを設定しないと文字化けします。
277
+ * 読み込むファイルの文字コード(SJIS) */
278
+ br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "SJIS"));
279
+
280
+ String line = null;
281
+ // ファイル読み込み
282
+ while((line = br.readLine()) != null) {
283
+ list.add(line);
284
+
285
+ }
286
+
287
+ // br.close();
288
+
289
+ } catch (IOException err) {
290
+ // 開発中は、例外を握りつぶさないこと
291
+ err.printStackTrace();
292
+ } finally {
293
+ // リソースの終了処理は finally句で実施する
294
+ if(br != null) {
295
+ try {
296
+ br.close();
297
+ } catch (IOException ex) {
298
+ // Do nothing
299
+ }
300
+ }
301
+ }
302
+ return list.toArray(new String[0]);
303
+
304
+ }
305
+ }
306
+
307
+ `````
308
+ `````JAVA
309
+ package csvRead;
310
+ /*
311
+ * ファイル重複データ項目の表示
312
+ */
313
+
314
+ import java.util.ArrayList;
315
+ import java.util.HashSet;
316
+ import java.util.List;
317
+ import java.util.Set;
318
+
319
+ public class FReadDistinct {
320
+ //処理フラグ(0なら正常:1以上なら異常)
321
+ int flg2 = 0;
322
+
323
+ //public static void main(String[] args) {
324
+ // クラス化
325
+ public void method() {
326
+
327
+ String[] csv = FRead.getLines("C:\\sample.csv");
328
+
329
+ List<String> result1 = new ArrayList<String>();
330
+ List<String> result2 = new ArrayList<String>();
331
+ List<String> result3 = new ArrayList<String>();
332
+ List<String> result4 = new ArrayList<String>();
333
+
334
+ for(String line : csv) {
335
+ result1.add(line.split(",")[0]);
336
+ result2.add(line.split(",")[1]);
337
+ result3.add(line.split(",")[2]);
338
+ result4.add(line.split(",")[3]);
339
+ }
340
+
341
+ // 重複チェックオブジェクト
342
+ Set<String> set1 = new HashSet<String>();
343
+ Set<String> set2 = new HashSet<String>();
344
+ Set<String> set3 = new HashSet<String>();
345
+ Set<String> set4 = new HashSet<String>();
346
+
347
+ //社員番号列(A列)
348
+ for(String user1 : result1) {
349
+ //setに追加してみて、追加できなかった(重複していた)場合
350
+ if(!set1.add(user1)) {
351
+ System.out.println("【社員番号】に重複データがあります。値:" + user1);
352
+ flg2++;
353
+
354
+ }
355
+ }
356
+
357
+ //社員名列(B列)
358
+ for(String user2 : result2) {
359
+ //setに追加してみて、追加できなかった(重複していた)場合
360
+ if(!set2.add(user2)) {
361
+ System.out.println("【社員名】に重複データがあります。値:" + user2);
362
+ flg2++;
363
+
364
+ }
365
+ }
366
+
367
+ //内線番号列(C列)
368
+ for(String user3 : result3) {
369
+ //setに追加してみて、追加できなかった(重複していた)場合
370
+ if(!set3.add(user3)) {
371
+ System.out.println("【番号】に重複データがあります。値:" + user3);
372
+ flg2++;
373
+
374
+ }
375
+ }
376
+
377
+ //電話番号列(D列)
378
+ for(String user4 : result4) {
379
+ //setに追加してみて、追加できなかった(重複していた)場合
380
+ if(!set4.add(user4)) {
381
+ System.out.println("【電話番号】に重複データがあります。値:" + user4);
382
+ flg2++;
383
+
384
+ }
385
+ }
386
+
387
+ }
388
+
389
+ }
390
+ ```
391
+ 宜しくお願いします。