Java Android,用换行符拆分.csv?
首先,我对英语一窍不通。我希望没事; 我有一个小项目要做:解析.csv文件: 典型的.csv文件Java Android,用换行符拆分.csv?,java,android,eclipse,csv,Java,Android,Eclipse,Csv,首先,我对英语一窍不通。我希望没事; 我有一个小项目要做:解析.csv文件: 典型的.csv文件 The recording starts at 2014,Sep,9,4:40:24 PM accX,accY,accZ,gX,gY,gZ, -0.3958511,0.014643669,10.037987,-13.17548,-2.3169785,-3.2103431, -0.29875562,0.014643669,10.037987,-53.558975,0.22515106,-36.1127
The recording starts at 2014,Sep,9,4:40:24 PM
accX,accY,accZ,gX,gY,gZ,
-0.3958511,0.014643669,10.037987,-13.17548,-2.3169785,-3.2103431,
-0.29875562,0.014643669,10.037987,-53.558975,0.22515106,-36.11273,
-0.29875562,0.014643669,10.23412,-50.653694,0.7335739,-32.481117,
The recording ends at 2014,Sep,9,4:40:29 PM
我尝试了OPENcsv库,但无法使其工作。所以我找到了一个关于stackOverFlow的解释,我使用了它,效果很好。最初,它使用逗号“,”分割文件,并正常工作
但我将其更改为按换行符拆分,正如您在line.split(“\r?\n”)中看到的那样。它不工作,事实上它崩溃了
MainActivity.java
File f = new File(path + "/" + "motionTracker/");
File f2 = new File(f + "/" + stringx);
try {
fis = new FileInputStream(f2.toString());
} catch (FileNotFoundException e1) {
// handle exception
}
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
String date = "kek";
String value = "wow";
String line = "lel";
try {
while ((line = reader.readLine()) != null) {
String[] RowData = line.split("\\r?\\n");
date = RowData[0];
value = RowData[1];
}
}
catch (IOException ex) {
// handle exception
}
finally {
try {
fis.close();
}
catch (IOException e) {
// handle exception
}
}
您是否认为问题在于.csv文件中没有换行符?
或者我的代码有问题
谢谢。当您使用
BufferedReader reader
并逐行读取您的文件
line = reader.readLine()
然后,您的行不包含换行符(“\n”或“\r?\n”)
那么会发生什么呢
String[] RowData = line.split("\\r?\\n");
此数组的大小必须始终为1,并且与字符串行相同
所以最终
date = RowData[0]; // equal to line
value = RowData[1]; //index out of bounds - line has never been splitted
这里将抛出IndexOutOfBounds异常…我认为您只能在单个字符上拆分-您可以改为在逗号上拆分吗?这不是一个格式良好的CSV文件。在格式良好的CSV文件中,您没有“录制开始/结束于”行,您应该有行终止符(即:\n
),您可以使用任何字符串@jbutler483拆分一个、两个或一百个字符。@MartinFrank我实际上只在NETMF中使用过它,所以很高兴知道完整的.Net可以像那样拆分:)很高兴我能指出这一点-我非常使用拆分函数,所以我在这方面非常坚定@JBUTLER483你是说不能用换行符来拆分吗?我有点难过。你当然可以用断线分开!100%可能!!!但是你的行没有换行符对不起…readLine最酷的地方是你逐行阅读文件-一行包含所有文本,但没有换行符本身…对不起,我误解了。但是我知道我必须用lineparsed=reader.readLine()解析这些行,它包含了这一行!太棒了!非常感谢,这正是我所需要的。我很高兴能帮上忙——我希望我的回答不要太激进,因为我真的很想帮助你!