如何在Android中读取和写入csv文件?

时间:2014-06-17 08:43:03

标签: android opencsv

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

CSV是普通文本文件,其中值除以字符“;”所以,您可以使用BufferedWriter编写它。例如。

BufferedWriter

答案 2 :(得分:0)

由于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库。我检查了Apache   公用csv和super-csv和apache不会转换为bean,但是   super-csv确实仅使用反射。

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