用java编写文件的最快方法

用java编写文件的最快方法,java,optimization,file-io,directory-structure,Java,Optimization,File Io,Directory Structure,我正在编写一个比较目录结构的应用程序。首先,我编写了一个应用程序,它可以写入和获取有关文件的信息——关于每个文件或目录的一行 下面是我的解决方案,它调用一个方法toFile() Static PrintWriter pw = new PrintWriter(new BufferedWriter( new FileWriter("DirStructure.dlis")), true); String line; // info about file or directory public void

我正在编写一个比较目录结构的应用程序。首先,我编写了一个应用程序,它可以写入和获取有关文件的信息——关于每个文件或目录的一行

下面是我的解决方案,它调用一个方法
toFile()

Static PrintWriter pw = new PrintWriter(new BufferedWriter( new FileWriter("DirStructure.dlis")), true);
String line; // info about file or directory
public void toFile(String line) {
    pw.println(line);
}
当然,最后是
pw.close()

我的问题是,我能快点吗?最快的方法是什么

编辑: “最快”的意思是在文件中写得最快,Sun实际上对此有自己的看法。根据他们的说法,你可以达到17倍的速度(从最坏的情况到最好的情况)

他们谈论缓冲、直接缓冲、操作系统和许多更有用的主题。
考虑到,正如您所说,您将拥有大量的文件和行,我建议将流压缩/解压缩作为一种方法,但一定要阅读全部内容(我没有,只是根据经验回答)

编辑:
考虑到这是家庭作业,了解该页面中的所有概念肯定会给你的老师留下深刻印象,因此你可以添加一些评论,说明你在做什么,为什么,以及列出备选方案。;)

编辑2:

刚刚看到了这行的内容。如果文件只包含该信息,则考虑在队列中异步创建下一行文件的行。也就是说,目录应该是多个目录名,正确组合等。请参阅有关快速操作的链接,以获取文件信息。

Peter Lawrey写道:

您获取数据的速度几乎肯定会慢100倍,因此这可能适合于写入

因此,我的解决方案似乎是好的,这在问题中得到了体现

我想你的意思是更简单或更清晰,而不是更快。你想错了,我的意思是更快。我需要快速写入文件,因为会有很多文件->很多行。如果你有很多文件要写入,您可能需要重新考虑您的设计-写入文件的时间将比进行任何重要数据收集的时间都长。您是否只需要一个接收文件和行的函数来执行上述操作?您获取数据的速度几乎肯定会慢100倍,因此这对您来说可能没问题实际上OP已经在使用一个中间缓冲流,17倍的加速比指的是无缓冲和自实现缓冲之间的差异。
BufferedInputStream
与自行实现的加速比几乎只有两倍。@trutheality我意识到,当我引用17x时,我指的是总体上实现的最大可能的效率提升,也就是说,这将允许他在两种情况下将效率提高17x max。编辑答案以使其更清楚。