gau*_*rav 1 java performance file-io
我必须从数据库中获取500K行并将该数据写入文件中,Means执行I/O操作.我已经完成了两个步骤.
请建议我这个请找到附带的代码
public void fetchDataWithChunkSpace(Connection con)throws Exception
{
String query ="select * from lis.testxml ";
long startTime=new Date().getMinutes();
PreparedStatement stmt = con.prepareStatement(query);
ResultSet rs = stmt.executeQuery();
PrintWriter pw = new PrintWriter(new File("c:\\test_chunkSpace.xml"));
pw.write("<?xml version='1.0' encoding='UTF-8'?>");
StringBuffer sb = new StringBuffer();
String t=null;
long count =0;
while(rs.next())
{ count++;
t = rs.getString("xmltest");
sb = sb.append(t);
if(count%100==0)
{
pw.write(sb.toString());
sb = new StringBuffer();
System.out.println(count);
}
}
pw.write("\n");
pw.write("</EndTag>");
pw.close();
stmt.close();
con.close();
long endTime=new Date().getMinutes();
System.out.println("chunkSpace ---> " + (endTime-startTime));
}
Run Code Online (Sandbox Code Playgroud)
查看BufferedOutputStream或BufferedWriter.
还要考虑StringBuffer是具有同步方法的线程安全类,与StringBuilder不同.
更新.试试这段代码:
Writer pw = new BufferedWriter(new PrintWriter(new File("c:\\test_chunkSpace.xml")));
pw.write("<?xml version='1.0' encoding='UTF-8'?>");
String t;
while (rs.next()) {
t = rs.getString("xmltest");
pw.write(t);
}
Run Code Online (Sandbox Code Playgroud)