日期:2014-05-19  浏览次数:20819 次

如何用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操作慢,对每个操作加上时间测试,看看具体是什么地方慢