快速写一个大文本文件

时间:2017-12-09 11:08:21

标签: java android filewriter printwriter bufferedwriter

如何在Android上快速编写大文本文件?
我使用PrintWriter,BufferedWriter和FileWriter进行了一些测试,但是没有显着的时间差异,写入大约是读取时间的三倍。

4 个答案:

答案 0 :(得分:1)

Android,就像每个具有存储单元的其他设备一样,写入速度有限。

你唯一可以做的就是加快文件写入和阅读速度,这样可以获得更好的存储单元(这在Android设备上并不容易,只需将其打开并更换单元即可)。

因此,当涉及文件读写时,您受到硬件的限制。

答案 1 :(得分:0)

每个内存都有一个特定的块和页面大小。由于如何在Flash存储器上进行写操作,因此如果以小块编写它就很重要。

以下是在dd中运行adb shell的基准:

sailfish:/storage/emulated/0 $ dd if=/dev/zero of=test bs=4k count=$((32*1024))                                                                                                                                                                                              
32768+0 records in
32768+0 records out
134217728 bytes transferred in 0.521 secs (257615600 bytes/sec)

另一个1k区块:

sailfish:/storage/emulated/0 $ dd if=/dev/zero of=test bs=1k count=$((128*1024))                                                                                                                                                                                           
131072+0 records in
131072+0 records out
134217728 bytes transferred in 1.369 secs (98040707 bytes/sec)

以小块编写数据使其几乎慢了3倍。 我鼓励您对内存进行基准测试,看看是否达到了硬件限制。尝试写入缓冲区大小。如果在写入过程中你的记忆力确实较慢,那么你无能为力。

答案 2 :(得分:0)

要更快NIO次读/写,请查看java.nio包。

这是关于java IO的好article,在这里您可以找到与{{1}}包的比较

答案 3 :(得分:0)

Okio一个旋转。不确定它是否真的更快。