Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android,用换行符拆分.csv?_Java_Android_Eclipse_Csv - Fatal编程技术网

Java Android,用换行符拆分.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

首先,我对英语一窍不通。我希望没事; 我有一个小项目要做:解析.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.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()解析这些行,它包含了这一行!太棒了!非常感谢,这正是我所需要的。我很高兴能帮上忙——我希望我的回答不要太激进,因为我真的很想帮助你!