如何在Android中读写csv文件



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

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

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(";");

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

如果你看到类似下面的内容:

05-04 16:13:31.821 25829-25829/?E/AndroidRuntime: FATAL EXCEPTION:主进程:com.example.pk。opensvpoc, PID: 25829java.lang.NoClassDefFoundError:解析失败:Ljava/豆/内省;

这是因为Android只移植了java的一个子集。豆子变成它的java版本。你可以看到一个支持的列表https://developer.android.com/reference/java/beans/package-summary

在opensv 5.0中有切换到反射的计划,但是I我怀疑它会移除我们对java.beans的所有依赖。现在对于opencsv,最好的建议是避开com.opencsv.bean类,直到Android完全支持java。豆子或者我们成功了在删除java.beans.

另一种可能性是尝试另一个csv库。我检查了apacheCommons CSV和super-csv以及apache不转换为bean,但是超级csv只使用反射。

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

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

BufferedWriter

相关内容

  • 没有找到相关文章

最新更新