こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

CSVファイルから特定の文字列を含む行を出力

CSVファイルを読み込み、特定の文字列を含む行を出力するプログラムを作成しています。
出力メソッドを作り、呼び出したいのですがうまくいきません。
コンパイルは通りますが出力したファイルには何も書き込まれていない状況です。
ヒントだけでも頂けると幸いです。
よろしくお願いします。

import java.io.*;
import java.util.*;

public class Test{
static String[] data;
static BufferedWriter writer = null;

public static void main(String[] args) throws Exception {
String line;
BufferedReader reader = null;

reader = new BufferedReader(new FileReader("Week.csv"));
writer = new BufferedWriter(new FileWriter("New.csv"));

while (reader.ready()) {
line = reader.readLine();
if (line.contains("氏名")) {
create(line);
} else if (line.contains("月")) {
create(line);
} else if (line.contains("水")) {
create(line);
} else if (line.contains("金")) {
create(line);
}
}
}

//メソッド
static void create(String line) throws Exception {
data = line.split(",");
for (int i = 0; i < data.length; i++) {
writer.print(data[i]);
writer.println();
}
}
}

投稿日時 - 2020-10-18 19:59:24

QNo.9812853

すぐに回答ほしいです

質問者が選んだベストアンサー

String.contains()が期待通りに動かないのは文字コードが原因かもしれません。Week.csvの文字コードは何ですか。

BufferedWriterにはprintやprintlnというメソッドはないので、出力部分をSystem.out.println()を使うように変えたところ、CSVファイルの中の「氏名」「月」「水」「金」を含む行を出力できました。Windowsの日本語環境で、CSVファイルの文字コードにはShift_JISを使いました。他の環境ではJavaのデフォルト文字コードが別のものになっている場合があります。

投稿日時 - 2020-10-19 19:03:14

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

ファイルをテキストファイルにしてください。
CSVファイルは読み込めません。

投稿日時 - 2020-10-18 20:41:30

補足

回答ありがとうございます!!
メソッドを使用しない方法では問題なくCSVファイルの入出力が行えていました。

テキストファイルにして読み込んでみる方法も試してみます。

投稿日時 - 2020-10-18 23:01:56

あなたにオススメの質問