gpt4 book ai didi

java - 我必须从数据库中获取 500K 行并将该数据写入文件,意味着执行 I/O 操作

转载 作者:行者123 更新时间:2023-11-29 06:44:06 25 4
gpt4 key购买 nike

我必须从数据库中获取 500K 行并将该数据写入文件,即执行 I/O 操作。我已经完成了两个步骤。

  1. 将每一行逐行写入文件。
  2. 制作这些行的 block 。将这些行附加到 StringBuffer 中,然后打印它。这个会更好,但是文件 I/O 是否可以在不使用 StringBuffer 的情况下自行创建缓冲区。由于此字符串缓冲区需要更多时间(内部使用 Arrays.copyOf)

请给我建议请找到随附的代码

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));
}

最佳答案

BufferedOutputStreamBufferedWriter .

还应考虑到 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);
}

关于java - 我必须从数据库中获取 500K 行并将该数据写入文件,意味着执行 I/O 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8006441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com