【问题标题】:How to Read and Write to a csv file in Android?如何在 Android 中读取和写入 csv 文件?
【发布时间】:2014-06-17 08:43:02
【问题描述】:

我想将 8 个整数存储到一个 .csv 文件中(文件名将作为 EditText 的输入)并在需要时检索它们。

【问题讨论】:

标签: android opencsv


【解决方案1】:

要获取文件名,您可以使用:

EditText fileNameEdit= (EditText) getActivity().findViewById(R.id.fileName);
String fileName = fileNameEdit.getText().toString();

然后将文件写入磁盘:

try {
    String content = "Separe here integers by semi-colon";
    File file = new File(fileName +".csv");
    // if file doesnt exists, then create it
    if (!file.exists()) {
       file.createNewFile();
    }

    FileWriter fw = new FileWriter(file.getAbsoluteFile());
    BufferedWriter bw = new BufferedWriter(fw);
    bw.write(content);
    bw.close();

} catch (IOException e) {
    e.printStackTrace();
}

读取文件:

BufferedReader br = null; 
try {
  String sCurrentLine;
  br = new BufferedReader(new FileReader(fileName+".csv"));
  while ((sCurrentLine = br.readLine()) != null) {
    System.out.println(sCurrentLine);
  }
} catch (IOException e) {
    e.printStackTrace();
} finally {
  try {
     if (br != null)br.close();
  } catch (IOException ex) {
     ex.printStackTrace();
  }
}

然后要获得整数,您可以使用拆分功能:

String[] intArray = sCurrentLine.split(";");

【讨论】:

  • 如何提及整个文件名。我尝试在 EditText 中提及“/storage/sdcard0/test”,但它总是进入 catch 块。我是否需要在 AndroidManifest.xml 中添加权限 WRITE_EXTERNAL_STORAGE ?请帮忙。谢谢。
  • 编辑:完成!我只需要在 AndroidManifest.xml 文件中添加 WRITE_EXTERNAL_STORAGE 权限。
【解决方案2】:

由于 JDK 问题,Opencsv 无法在 Android 上运行。

如果您看到类似于以下内容:

05-04 16:13:31.821 25829-25829/? E/AndroidRuntime:致命异常: 主进程:com.example.pk.opencsvpoc,PID:25829 java.lang.NoClassDefFoundError:解析失败: Ljava/beans/Introspector;

这是因为 Android 只将 java.beans 的一个子集移植到它的 java的版本。您可以在以下位置查看支持列表 https://developer.android.com/reference/java/beans/package-summary

有计划在 opencsv 5.0 中切换到反射,但我 怀疑它会删除我们对 java.beans 的所有依赖项。就目前而言 opencsv 的最佳建议是避开 com.opencsv.bean 类,直到 Android 完全支持 java.beans 或者我们成功 在删除 java.beans。

另一种可能性是尝试另一个 csv 库。我检查了阿帕奇 commons csv 和 super-csv 和 apache 不会转换为 bean,但是 super-csv 确实只使用反射。

来源:https://sourceforge.net/p/opencsv/wiki/FAQ/#getting-noclassdeffounderror-when-using-android

【讨论】:

    【解决方案3】:

    CSV 是普通文本文件,其中的值以字符“;”分隔因此,您可以使用 BufferedWriter 来编写它。

    BufferedWriter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-14
      相关资源
      最近更新 更多