使用Java从文件读取和写入字符串的绝对最快方法是什么?
我需要将已知格式的文件读入String[]
- 其中每行是数组中的一个项目 - 然后返回到文件。
特别是阅读必须尽可能快。
有没有更好的方法,只需使用BufferedReader
并逐行读取数组?
答案 0 :(得分:3)
考虑使用Google protobuf。
答案 1 :(得分:1)
只是一个疯狂的想法:你可以写出文件中每个字符串的长度。类似的东西:
BufferedInputStream stream=new BufferedInputStream(new FileInputStream("file.bin"));
byte[] buff=new byte[256];
String[] result=new String[10];
for(int i=0;i<10;i++){
int n=(reader.read()<<8)|reader.read(); // string length (assuming all strings are less than 64K)
if(buff.length<n) buff=new byte[n];
reader.read(buff,0,n);
result[i]=new String(buff,0,n);
}
stream.close();
这将使BufferedReader
免于检查\n
的每个输入字节。虽然我不确定这会比readLine()
更快。
答案 2 :(得分:0)
答案 3 :(得分:0)
这是我的第一次传球,假设记忆不是问题(哈)。
请记住,Java在内部使用UCS-16存储字符数据,这意味着您的优秀ASCII文件将在磁盘上采用x2大小来解释“扩展”。例如你有一个4,124字节的foo.txt文件,内存中至少有8,248字节。
其他所有内容都会变慢,因为应用程序将被设计为处理某种缓冲和包装(特别是处理没有足够的内存来处理文件大小)。
祝你好运!