下面是三种不同方式的读取存储文件的方法以及他们读取文件的效率:
读取的文件为1M的MP3文件
一、直接读取到硬盘
public static void read1(File file)throws Exception{
FileInputStream fis = new FileInputStream(file);
int b = 0;
int count = 1;
while((b = fis.read()) != -1){
if(b == '\n')
count++;
}
fis.close();
System.out.println(count);
}
这种方法耗时1200毫秒
这种方法耗时1200毫秒
二、全部读到缓冲区,再读取到硬盘
public staticvoid read2(File file){
try{
try{
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
int b = 0;
int count = 1;
while((b = bis.read())!=-1)
if(b == '\n')
count++;
fis.close();
bis.close();
System.out.println(count);
}catch (Exception e) {
System.out.println(e.getMessage());
}
}
这种方法耗时20毫秒
这种方法耗时20毫秒
三、读一部分到缓冲区,再读取到硬盘
public static void read3(File file) throws Exception{
FileInputStream fis = new FileInputStream(file);
byte []buf = new byte[1024];
int b = 0;
int count = 1;
while((b = fis.read(buf) )!=-1)
if(b == '\n')
count++;
fis.close();
System.out.println(count);
}
这种方法耗时2毫秒
四、通过对比可以发现,第三中读取文件的方法是最高效的,文件为1M是差别就已经很明显,如果是读取较大的文件的话,差别会更大。
这种方法耗时2毫秒
四、通过对比可以发现,第三中读取文件的方法是最高效的,文件为1M是差别就已经很明显,如果是读取较大的文件的话,差别会更大。