質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2506閲覧

クラスを使用してファイルを読み込む方法について

kumakumatan

総合スコア213

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/06/17 00:22

編集2016/06/17 00:33

java(ファイル読み込みクラス)

1package ren01; 2 3import java.io.BufferedReader; 4import java.io.FileInputStream; 5import java.io.IOException; 6import java.io.InputStreamReader; 7import java.util.ArrayList; 8 9public class FRead { 10 public static String[] getLines(String fileName) { 11 ArrayList list = new ArrayList(); 12 try { 13 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName))); 14 String line = null; 15 // ファイル読み込み 16 while((line = br.readLine()) != null) { 17 list.add(line); 18 19 } 20 br.close(); 21 22 } catch (IOException err) { 23 24 } 25 return (String[]) list.toArray(new String[list.size()]); 26 27 } 28}

を利用して「sample.csv」を読み込ませてリスト化したく思います。
その際、実行クラスを作成してcsvファイルをリスト化表示したく思います。
途中まで作成したのですが、この後どうしたら作成できるのかが知りたく
ご質問させていただきました。

JAVA(実行クラス)

1package ren01; 2 3public class FReadExec { 4 5 public static void main(String[] args) { 6 // ここにコードを挿入 7 FRead read = new FRead(); 8 FRead.getLines("C:\\sample.csv"); 9 10 //System.out.println(read.); 11 12 13 } 14 15}

===CSVファイル======
ABC123,テスト A,123456,060-5938-1234,
ABC456,テスト B,1234567,060-7886-567,
ABC789,テスト C,1234568,060-3981-8910,
ABCD123,テスト D,123459,060-6487-8911,
ABCD456,テスト E,123459,060-4697-8912,テスト
ABCD789,テスト F,1234581,060-4577-8913,
ABCD12,テスト G,1234582,060-1266-8914,
ABCD34,テスト H,12345834,060-7412-8915,


List化
123456,1234567,1234568,123459,123459,1234581,1234582,12345834
したく思います。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaya_ohashi

2016/06/17 00:25

最終的にどんな出力が求められているのかが提示されないと答えようがありません。リスト化とはどんな表示ですか?
guest

回答2

0

ベストアンサー

FReadExec.java

java

1package ren01; 2 3import java.util.ArrayList; 4import java.util.List; 5 6public class FReadExec { 7 8 public static void main(String[] args) { 9 // 不要 10 // FRead read = new FRead(); 11 12 String[] csv = FRead.getLines("C:\\sample.csv"); 13 14 List<String> result = new ArrayList<String>(); 15 for (String line : csv) { 16 result.add(line.split(",")[2]); 17 } 18 19 System.out.println(result); 20 21 } 22 23}
FRead.java

java

1package ren01; 2 3import java.io.BufferedReader; 4import java.io.FileInputStream; 5import java.io.IOException; 6import java.io.InputStreamReader; 7import java.util.ArrayList; 8import java.util.List; 9 10public class FRead { 11 public static String[] getLines(String fileName) { 12 13 // インターフェースでオブジェクトを参照する 14 // 新たなコードで原型を使用しない 15 // https://www.amazon.co.jp/EFFECTIVE-JAVA-Java-Joshua-Bloch/dp/4621066056 16 // ArrayList list = new ArrayList(); 17 List<String> list = new ArrayList<String>(); 18 19 BufferedReader br = null; 20 try { 21 br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName))); 22 String line = null; 23 // ファイル読み込み 24 while ((line = br.readLine()) != null) { 25 list.add(line); 26 27 } 28 29 // br.close(); 30 31 } catch (IOException err) { 32 // 開発中は、例外を握りつぶさないこと 33 err.printStackTrace(); 34 } finally { 35 // リソースの終了処理は finally句で実施する 36 if (br != null) { 37 try { 38 br.close(); 39 } catch (IOException ex) { 40 // Do nothing 41 } 42 } 43 } 44 // toArrayメソッドの使用方法に誤り 45 // https://docs.oracle.com/javase/jp/6/api/java/util/List.html#toArray(T[]) 46 // return (String[]) list.toArray(new String[list.size()]); 47 return list.toArray(new String[0]); 48 49 } 50}
出力結果
[123456, 1234567, 1234568, 123459, 123459, 1234581, 1234582]

投稿2016/06/17 04:12

KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumakumatan

2016/06/17 05:09

ありがとうございます。 JAVAプログラムを修正してみました。 // 3列目の記述の下から、リスト化した値の重複チェックをしております。 変数にセットした「result1」~「result4」の値をArrays.asListに格納するにはどのようにしたらいいでしょうか。 ご教授をお願い致します。 ``````JAVA``````````` package ren01; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; public class FReadExec { public static void main(String[] args) { String[] csv = FRead.getLines("C:\\sample.csv"); List<String> result1 = new ArrayList<String>(); List<String> result2 = new ArrayList<String>(); List<String> result3 = new ArrayList<String>(); List<String> result4 = new ArrayList<String>(); for(String line : csv) { result1.add(line.split(",")[0]); result2.add(line.split(",")[1]); result3.add(line.split(",")[2]); result4.add(line.split(",")[3]); } // 3列目 Set<String> set = new HashSet<String>(); // java.util.Arraysをインポート List<String> userList = Arrays.asList("ABC@", "testa@", "ABC@", "testb@", "aaa", "testa@"); //List<List<String>> userList = Arrays.asList(result3); System.out.println(result1); System.out.println(result2); System.out.println(result3); System.out.println(result4); for(String user : userList) { //setに追加してみて、追加できなかった(重複していた)場合 if(!set.add(user)) { System.out.println(user + "が重複しています。"); } } } } `````````````````````
kumakumatan

2016/06/17 05:32

ありがとうございます。 やりたい事ができました。 `````JAVA package ren01; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class FReadExec { public static void main(String[] args) { String[] csv = FRead.getLines("C:\\sample.csv"); List<String> result1 = new ArrayList<String>(); List<String> result2 = new ArrayList<String>(); List<String> result3 = new ArrayList<String>(); List<String> result4 = new ArrayList<String>(); for(String line : csv) { result1.add(line.split(",")[0]); result2.add(line.split(",")[1]); result3.add(line.split(",")[2]); result4.add(line.split(",")[3]); } // 重複チェックパラメータ Set<String> set = new HashSet<String>(); System.out.println(result1); System.out.println(result2); System.out.println(result3); System.out.println(result4); for(String user : result3) { //setに追加してみて、追加できなかった(重複していた)場合 if(!set.add(user)) { System.out.println(user + "が重複しています。"); } } } } ``````
guest

0

getLinesの結果を格納する変数を用意しておく必要があるかと。で、その返り値のString配列をfor文などで出力するという流れでは?
あと、FReadをインスタンス化する必要は無いと思います。

java

1String[] lines = FRead.getLines("C:\\sample.csv");

投稿2016/06/17 00:30

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問