Java 拆分CSV输入

Java 拆分CSV输入,java,csv,android-studio,Java,Csv,Android Studio,我正在尝试从CSV数据中获取数据。但是,如果我尝试读取数据以便使用其中的单个数据,它会打印额外的内容,如: x����sr�� java.util.ArrayListx����A.���我��sizexp������W������t��2017年5月17日T��家-加斯特��4-1t��(4-0)t�� 使用此代码: FileInputStream in = openFileInput("savetest13.dat"); BufferedReader reader = new Buf

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

x����sr�� java.util.ArrayListx����A.���我��sizexp������W������t��2017年5月17日T��家-加斯特��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);
        }
[2017年5月17日,主宾,2-1,(2-0),]

我试图将它们分为
日期
名称
score1
score2

.

使用这两个选项中的哪一个更好?我如何才能获得正确的输出,我无法获得正确的输出?

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

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

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

这里有一个简单的方法来编写格式正确的csv文件。这是一个简单的例子,没有考虑到需要转义在数据中找到的任何逗号。您可以打开在Excel、Google Sheets、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();
最后一个字符串逗号=“,”;
最后一个字符串NEW_LINE=System.getProperty(“LINE.separator”);
ArrayList myRows=新建ArrayList();
//将逗号分隔的行添加到ArrayList
添加(“日期”+逗号+
“名称”+逗号+
“分数1”+逗号+
“分数2”);//等
//可选-在第一行中插入字段名
添加(0,“[日期]”+逗号+
“[名称]”+逗号+
“[Score1]”+逗号+
“[2]”;
//找个作家
最终字符串fileName=“myFileName.csv”;
最后一个字符串dirPath=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getAbsolutePath();
File myDirectory=新文件(dirPath);
FileWriter=newfilewriter(新文件(myDirectory,fileName));
//将行写入文件
for(字符串myRow:myRows){
writer.append(myRow+新行);
}
writer.close();
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();