我正在使用outputstreamwriter将某些报告的结果集输出写入csv文件。但是csv文件只有100k行,应该是大约600k行。在100k行之后写入csv时数据被截断了吗?我是无法弄清楚可能是什么问题.Googling didint为我提供了任何解决方案。
使用printwriter获取所有600k行是否有意义。
reportData = reportSession.generateAdvancedReport( id, format, displayType, request.getRequestedSessionId(), 0, 0, false,
report.getIsDashboardComponent() && report.getDisplayPregeneratedData(), testContextObjectId, testContextObjectName, testContextObjectProp1 );
if( reportData != null )
{
for( int i = 0; i < reportData.size(); i ++)
{
if( i != 0 )
writer.write( "\n" );
for( int j = 0; j < reportData.get( i ).size(); j++ )
{
writer.write( "\"" );
/*
* Mantis ID 4468
* null check added as it was throwing illegal state exception
*/
if(reportData.get( i ).get( j ) != null)
writer.write( reportData.get( i ).get( j ) );
else
writer.write( "" );
writer.write( "\"" );
if( j != reportData.get( i ).size() - 1 )
writer.write( "," );
}
}
}
答案 0 :(得分:0)
在100k行之后写入csv时数据是否被截断?
可能不是(IMO)。当然使用PrintWriter
与OutputStreamWriter
的胜利会有所不同。
可能发生了截断,因为你没有close()
输出文件(因此,缓冲的数据丢失了),但也可能是假设的& #34;截断&#34;实际上是因为报告包含的数据少于预期。
提示:查看所谓截断文件的结尾。它看起来像是被截断了吗?最后一个字符是双引号吗?
答案 1 :(得分:0)
是的,使用PrintWriter获取所有600k线条非常有意义。
您很可能使用文本查看器/编辑器查看Windows中的输出,该文本查看器/编辑器无法识别* nix行结尾"\n"
(仅限换行符)。如果您希望csv文件在Windows中正常运行,请将其更改为结束"\r\n"
的Windows行(回车和换行符)。
if( i != 0 )
writer.write( "\r\n" );