FileInputStream计算的换行符数多于新行

时间:2015-10-01 03:48:54

标签: java android newline fileinputstream

我正在使用OpenCSV在Android应用程序中读取和编写csv文件,最近在解析我使用Notepad ++创建的以下csv文件时遇到了一个奇怪的问题:

0.0,0.0,"HTML Snippet example","<html><p><a href=""http://google.com/"">URL Link</a></p></html>"
0.0,0.0,"HTML Snippet example","<html><p>Paragraph</p><p><blockquote>Blockquote</blockquote></p><br>Line break before and after<br><p>Cite tag: <cite>The Scream</cite> by Edward Munch. Painted in 1893.</p><p>Dfn tag: <dfn>HTML</dfn> is the standard markup language for creating web pages.</p><div align=""right"">Div align right</div><p>em tag: <em>Emphasized text</em></p><p><font size=""100px"" color=""red"">Font tag 100px color red</font></p><h1>H1 tag</h1><h2>H2 tag</h2><h3>H3 tag</h3><h4>H4 tag</h4><h5>H5 tag</h5><h6>H6 tag</h6><p><small>Small text</small></p><p><big>Big</big> Text</p><p><b>Bold</b> Text</p><p><i>Italic text</i></p><p><strike>Strike text</strike></p><p><strong>Strong text</strong></p><p>This text contains <sub>subscript</sub> text.</p><p>This text contains <sup>super</sup> text.</p></html>"
0.0,0.0,"HTML Snippet example","<html><p><tt>Teletype text</tt></p></html>"
0.0,0.0,"HTML Snippet example","<html><p><u>Underlined text</u></p></html>"
0.0,0.0,"HTML Snippet example","<html><p>Paragraph</p><p><blockquote>Blockquote</blockquote></p><br>Line break before and after<br><p>Cite tag: <cite>The Scream</cite> by Edward Munch. Painted in 1893.</p><p>Dfn tag: <dfn>HTML</dfn> is the standard markup language for creating web pages.</p><div align=""right"">Div align right</div><p>em tag: <em>Emphasized text</em></p><p><font size=""100px"" color=""red"">Font tag 100px color red</font></p><h1>H1 tag</h1><h2>H2 tag</h2><h3>H3 tag</h3><h4>H4 tag</h4><h5>H5 tag</h5><h6>H6 tag</h6><p><small>Small text</small></p><p><big>Big</big> Text</p><p><b>Bold</b> Text</p><p><i>Italic text</i></p><p><strike>Strike text</strike></p><p><strong>Strong text</strong></p><p>This text contains <sub>subscript</sub> text.</p><p>This text contains <sup>super</sup> text.</p></html>"
0.0,0.0,"HTML Snippet example","<html><p><tt>Teletype text</tt></p></html>"

当我读取文件时,我最终获得了四行(0-3)加上行索引1&amp; 2再次,所以我最终得到以下内存:

int count = 0;
FileInputStream stream = new FileInputStream(this._filePath);
byte[] buffer = new byte[2048];
int n;
while ((n = stream.read(buffer)) > 0) {
    for (int i = 0; i < n; i++) {
        if (buffer[i] == '\n') 
            count++;
    }
}
return count;

所以我创建了一个方法来计算新行的数量,试图弄清楚为什么OpenCSV中的BufferedReader返回重复的行,而我的方法计算7个换行符,&#39; \ n&#39;但是Notepad ++只计算4这是我的方法,它计算换行符的数量:

youtube.videos()

我知道它与html标签有关,因为它只发生在同一行中有多个html标签的文件但是我没有发现任何模式可以让我键入哪个标签或标签组合导致问题。

提前致谢!

此问题已得到解决。我不确定究竟发生了什么,但我正在通过电子邮件发送我的测试设备csv文件并使用我的应用程序从gmail应用程序打开它我认为A)文件中有些东西搞砸了我看不到或至少没有从我做过的测试或B)gmail应用程序内容提供商有一个错误,并搞砸了文件。我用其他文本编辑应用程序打开了文件,它看起来不错,所以我不相信这是问题。

我开始使用该文件的副本来尝试以不同的顺序排列html标签,这次我将测试设备通过USB插入我的PC并使用资源管理器将文件复制到设备上,问题似乎是神奇地消失了。然后我再次将相同的文件通过电子邮件发送到设备,然后从完美运行的gmail应用程序中打开它。由于我无法重现这个问题,我将把它归结为导致问题的文本文件中的一些奇怪的东西。希望我再也没有看到这个问题,因为我花了大约6个小时试图解决它。

0 个答案:

没有答案