在Java中更有效地执行此任务的方法,以使用CSV插入Room数据库

维维克·潘查尔

我的csv文件包含这样的内容

22,Boy,"Sri shandarachary, founder of adwaitha philosophy",Aadhishankar,Bengali

因为令牌内有逗号,这就是为什么我得到错误结果的原因,它得到名称的描述而不是名称本身

它在单个令牌中有逗号,但用“”括起来

private List<BabyName> readData() {
    List<BabyName> babyNames = new ArrayList<>();
    InputStream is = getResources().openRawResource(R.raw.babynames);
    BufferedReader reader = new BufferedReader(
            new InputStreamReader(is, Charset.forName("UTF-8"))
    );
    String line = "";

    try {
        reader.readLine();
        String mGender, mMeaning, mName, mOrigin;
        while ((line = reader.readLine()) != null) {
            Log.d("MyActivity", "Line: " + line);

            String[] tokens = line.split(",");
            mGender = tokens[1];
            mMeaning = tokens[2];
            mName = tokens[3];
            mOrigin = tokens[4];

            BabyName babyName = new BabyName(mGender, mMeaning, mName, mOrigin);
            babyNames.add(babyName);
            Log.d(TAG, "Just created: " + mGender + mMeaning + mName + mOrigin);
        }

        database.babyDao().insertAll(babyNames);
    } catch (IOException e) {
        Log.wtf("MyActivity", "Error reading data file on line" + line, e);
        e.printStackTrace();
    }

    return babyNames;
}

这是我的github repo plese,随时提出请求请求!在这方面需要帮助

https://github.com/vivekpanchal/BabyApp

里亚兹阿里

试试Commons CSV Parser

@Nullable private List<BabyName> readData() {
  InputStream in = null;
  BufferedReader reader = null

  try {
    List<BabyName> babyNames = new ArrayList<>();

    // open input stream to raw resource
    in =  = getResources().openRawResource(R.raw.babynames);

    // create a reader from it
    reader = new BufferedReader(new InputStreamReader(in));

    // parse as CSV
    CSVParser parser = CSVParser.DEFAULT.parse(reader);

    // get records
    for(CSVRecord record : parser){
      // Use the record.get(...) methods to get the column values
      // create BabyName from CSVRecord
      BabyName babyName = BabyName.fromCSVRecord(record);
      // Do whatever you want with the object
      // let's add it to the list of names
      babyNames.add(babyName);
    }

    return babyNames;
  } catch(Exception ex){
    Log.e(ex);
    return null;
  } finally {
    // always release the inputstream and reader
    Utils.closeSilently(reader);
    Utils.closeSilently(in);
  }
}

确保在https://commons.apache.org/proper/commons-csv/archives/1.5/apidocs/index.html上查看文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章