歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

關於Java讀寫速度的考證

在測試虛擬硬盤的時候,查了一下基本的讀取文件的方法,現在將各個方法列舉如下,以及測試速度的時間,供大家作為參考,以後如果用到了,可選用合適的讀取方式。

1. BufferedReader,BufferedWriter

這一種方法是實驗室常用的一種方式,這種方式的好處是可以讀取一行,然後針對每一行進行處理,他是構造一個緩沖流,然後進行讀寫,但是這種方法是相對比較慢的。
參考代碼如下:

BufferedReader br = new BufferedReader(new FileReader(args[0]));
BufferedWriter bw=new BufferedWriter(new FileWriter(args[1]));
String line;
while((line=br.readLine())!=null)
{
bw.write(line);
}
bw.flush();
bw.close();
br.close();

參數可以自己選用。

2. RandomAccessFile

這一種方法不常用,是隨機讀取的方式,這種方式比較特殊,他不隸屬於InputStream,OutputStream類系,他是直接繼承自Object類的。RandomAccessFile的工作方式是,把DataInputStream和DataOutputStream粘起來,再加上它自己的一些方法,比如定位用的getFilePointer( ),在文件裡移動用的seek( ),以及判斷文件大小的length( )。此外,它的構造函數還要一個表示以只讀方式("r"),還是以讀寫方式("rw")打開文件的參數 (和C的fopen( )一模一樣)。它不支持只寫文件,從這一點上看,假如RandomAccessFile繼承了DataInputStream,它也許會干得更好。

參考代碼如下:

RandomAccessFile read = new RandomAccessFile(args[0],"r");
RandomAccessFile writer = new RandomAccessFile(args[1],"rw");
byte[] b = new byte[1024*1024];
int count;
while((count=read.read(b))!=-1){
//System.out.println(count);
if(count!=b.length)
{
byte[] t=new byte[count];
for(int i=0;i<count;++i)
t[i]=b[i];
writer.write(t);
}
else writer.write(b);
}
writer.close();
read.close();

參數選擇可以根據後邊標記讀寫的進行選擇,比如說第二個參數是"r",說明這是一個讀文件的,如果是"rw",說明是寫文件的。

Copyright © Linux教程網 All Rights Reserved