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