3

コンマで区切られたレコードを含むファイルを読み込む BufferedReader を読み込もうとしています。各文字列 (またはレコード) を 2 つのコンマで区切り、二重引用符を取り除き、それぞれを文字列配列のインデックスに入れたいと思います。例えば:

ファイルに次の行があるとします。

("0001", "00203", "82409" (改行)

"0002"、"00204"、"82500" (改行)

等。)

0001 を文字列配列 [1] に入れたい、00203 を文字列配列 [2] に入れたい、など....

次のコードはファイルを走査し、列 2 のすべてのレコードを文字列配列 [2] に入れます。つまり、以下のコードを実行した後、System.out.println (arr[2]) を実行すると、00203 と 00204 が出力されますが、array[2] を 00203 に、array[5] を00204.

これが私のコードです:

public String[] getArray(String source) {

FileInputStream fileinput = new FileInputStream(source);
GZIPInputStream gzip = new GZIPInputStream(fileinput);
InputStreamReader inputstream = new InputStreamReader(gzip);
BufferedReader bufr = new BufferedReader(inputstream);

String str = null;
String[] arr = null;
    while((str = bufr.readLine()) != null) {
    arr = str.replace("\"", "").split("\\s*,\\s*");
}
return arr;
4

4 に答える 4

1

Commons CSVは、特定のユース ケース向けに設計されています。車輪を再発明しないでください。以下のコードは、フィールドと行に解析される GZipped CSV をもたらし、あなたがやろうとしていることのようです。

public String[][] getInfo() throws IOException {
    final CSVParser parser = new CSVParser(new FileReader(new InputStreamReader(new GZIPInputStream(fileinput)), CSVFormat.DEFAULT.withIgnoreSurroundingSpaces(true));
    String[][] result = parser.nextRecord().values();
    return result;
}
于 2012-11-09T16:59:32.657 に答える
0

これらの変更のいくつかはうまくいくはずです。

public String[] getArray(String source) {

FileInputStream fileinput = new FileInputStream(source);
GZIPInputStream gzip = new GZIPInputStream(fileinput);
InputStreamReader inputstream = new InputStreamReader(gzip);
BufferedReader bufr = new BufferedReader(inputstream);

String str = null;
List<String> numbers = new LinkedList<String>;

while((str = bufr.readLine()) != null) {
   String[] localArr = str.split(",");
   for(String intString : localArr){
    numbers.add(intString.trim());
   }
}
return arr;
于 2012-11-09T16:45:04.490 に答える
0

スキャナー クラスと scanner.nextInt() を使用してみましたか。その場合、ストライピングを行う必要はありません。

Scanner s = new Scanner(inputstream);
ArrayList<String> list = new ArrayList<String>();

while (s.hasNextInt())
    list.add(s.nextInt());
String[] arr = list.toArray(new String[list.size()]);
于 2012-11-09T16:41:50.240 に答える
0

未検証:

arr = str.replaceAll("\"", "").replaceAll("(","").replaceAll(")","").split(",");
于 2012-11-09T16:48:55.733 に答える