【问题标题】:Storing single csv line object into arrays将单个 csv 行对象存储到数组中
【发布时间】:2013-11-06 05:12:14
【问题描述】:

嘿,我这里有一大段代码试图读取 .csv 文件中的一行:

rows = new WarehouseItem[];

public void readCSV(String filename) {
  FileInputStream fileStrm = null;
  InputStreamReader rdr;
  BufferedReader bufRdr;
  int lineNum;
  String line;

  try {
    fileStrm = new FileInputStream(filename);
    rdr = new InputStreamReader(fileStrm);
    bufRdr = new BufferedReader(rdr);

    numRows = 0;
    line = bufRdr.readLine();
    while (line != null) {
      rows[numRows] = line;
      numRows++;
      line = bufRdr.readLine();
  }
  fileStrm.close();
  }

  catch (IOException e) {
    if (fileStrm != null) {
      try { 
    fileStrm.close(); 
      } catch (IOException ex2) {}
    }
    System.out.println("Error in file processing: " + e.getMessage());
}
}

rows[numRows] = line 上,我试图将行存储到对象数组中(我已经预先制作了一个包含字符串数组和列数的对象)

我不完全确定如何将我试图读取的单行存储在我的对象中。

任何帮助将不胜感激:)

【问题讨论】:

  • 您的代码 sn-p 中缺少 rows 的声明。我们需要看看,拜托。
  • 您需要告诉我们rows 是什么。是String[]吗? String[][]?

标签: java arrays object csv java-io


【解决方案1】:

如果您使用 CSV 库来执行此操作,您的生活会轻松很多。使用 jackson 将 CSV 读入对象数组非常简单。

例如:

CsvMapper mapper = new CsvMapper();
mapper.enable(CsvParser.Feature.WRAP_AS_ARRAY);
File csvFile = new File("input.csv"); // or from String, URL etc
MappingIterator<Object[]> it = mapper.reader(Object[].class).readValues(csvFile);

有关在 java 中解析 CSV 的更多信息,请参见此处:http://demeranville.com/how-not-to-parse-csv-using-java/

【讨论】:

    猜你喜欢
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    相关资源
    最近更新 更多