拆分CSV输入

时间:2017-05-17 10:56:28

标签: java csv android-studio

我正在尝试从CSV数据中获取数据。但是,如果我尝试读取数据以便我可以使用其中的单个数据,它会输出额外的内容,如:

  

x sr java.util.ArrayListx a I sizexp w t 17mei2017t Home - Gastt 4 - 1t (4 - 0)t

使用此代码:

FileInputStream in = openFileInput("savetest13.dat");  
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
List<String[]> resultList = new ArrayList();        

String csvLine;
        while ((csvLine = reader.readLine()) != null){
            String[] row = csvLine.split(",");
            out.println("while gepakt");
            out.println(row);

            date = row[0];
            out.println("date: "+date);
            resultList.add(row);
            txtTest.setText(date);
        }

但每当我读取文件以检查它包含哪些数据时,我都会获得与我输入的数据完全相同的数据。但我无法用stuff分割数据:

FileInputStream in = openFileInput("savetest13.dat");
ObjectInputStream ois = new ObjectInputStream(in);
List stuff = (List) ois.readObject();

txtTest.setText(String.valueOf(stuff));
  

[17 mei 2017,Home - Guest,2 - 1,(2 - 0),]

我试图将它们分为datenamesscore1score2


哪2个更好用,怎样才能得到正确的输出,这是我无法获得的?

2 个答案:

答案 0 :(得分:0)

您没有将CSV写入输出文件,而是使用标准java序列化ObjectOutputStream#writeObject(...)来创建该文件。尝试使用CSV库以CSV格式写入/读取数据(请参阅hier),在此之前,请启动here以了解CSV,因为

[17 mei 2017, Home - Guest, 2 - 1, (2 - 0), ]

不是csv,而只是您正在使用的列表的toString的输出。

答案 1 :(得分:0)

这是一种编写正确格式的CSV文件的简便方法。这是一个简单的示例,它不考虑需要转义数据中的任何逗号。您可以打开在Excel,Google表格,OpenOffice等中创建的文件,并查看其格式是否正确。

final String COMMA = ",";
final String NEW_LINE = System.getProperty("line.separator");

ArrayList<String> myRows = new ArrayList<String>();

// add comma delimited rows to ArrayList
myRows.add("date" + COMMA +
           "names" + COMMA +
           "score1" + COMMA +
           "score2"); // etc.

// optional - insert field names into the first row
myRows.add(0, "[Date]" + COMMA +
              "[Names]" + COMMA +
              "[Score1]" + COMMA +
              "[Score2]");


// get a writer
final String fileName = "myFileName.csv";
final String dirPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getAbsolutePath();
File myDirectory = new File(dirPath);
FileWriter writer = new FileWriter(new File(myDirectory, fileName));

// write the rows to the file
for (String myRow : myRows) {
    writer.append(myRow + NEW_LINE);
}
writer.close();