如何用NIO提高写文件的速度?
想实现如下流程:
首先从db中select出一些数据,现在想把数据都写进文件。但是由于数据量太大,整个过程都很慢。
如何提高写文件的速度?据说java.nio可以很明显的提高读写文件的速度。于是写了如下代码:
假设数据都已经读取到ResultSet rs 中:
Java code
FileOutputStream fout = new FileOutputStream("C:\\test.txt");
FileChannel fcout = fout.getChannel();
try {
while (rs.next()) {
buffer.clear();
buffer.put((rs.getLong("ID") + "\t"
+ rs.getLong("NAME") + "\r\n")
.getBytes());
buffer.flip();
fcout.write(buffer);
}
} catch ......
但是效果和直接用BufferedWriter没什么明显的差别,甚至反而慢了。
请问要如何修改上述代码,能更好的提高写文件的速度?
或者还有什么其他的办法能有效提高写文件速度吗?
------解决方案--------------------printwriter 喃
------解决方案--------------------你没必要 循环一次就写一次吧,
比如 100次写一次,1000次写一次
------解决方案--------------------楼上正解。 我尝试读写过上 G 文件
------解决方案--------------------那你检查下是不是数据库那耗时间,
可以从 sql 等方面去想办法。
代码的话,反正我是不晓得了。
------解决方案--------------------IO操作时间是恒定的,IO也只被1个线程操作,难道你觉得多开几个线程硬盘就能多几个磁头了吗...笑...
写2.4M文件花20分钟,肯定不是IO操作慢,对每个操作加上时间测试,看看具体是什么地方慢