導航:首頁 > 文件教程 > java讀取文件效率

java讀取文件效率

發布時間:2025-01-20 14:04:51

A. java讀取文件和讀取資料庫的效率哪個高一些

順序讀取的話文件快。檢索的話資料庫高。
不只是java,所有語言都有這個特點。
在2000年左右,國內還爭論過使用資料庫還是文件來保存數據。現在已經沒有爭論了。數據存儲就是為了用的。

B. Java 讀取大文件有什麼可以優化的嗎

優化一:採用內存硬碟(RamDisk)

內存硬碟可以極大地提高文件的讀寫速度,行情的讀寫是應用內存硬碟的絕好情況:

1,可以把行情小站的行情文件地址配置在內存硬碟上。這樣可以加速行情小站寫文件的速度。

2,本系統再從內存硬碟讀取,又可以加快讀取速度。

3,內存硬碟掉電後會丟失文件,這里基本不在乎這個缺點,因為行情文件本來就是臨時的,如果有持久化的需要,大部分內存硬碟也支持持久化的功能。

優化二:採用JNotify,用通知替代輪詢

由於行情小站會不斷的更新行情dbf文件,系統需要探測到一旦行情文件被更新,就立即讀取。傳統的策略是不斷輪詢行情文件的狀態,如果發現行情文件的最後修改日期(或者再加上文件大小)改變時,就認為文件被更新。但是這種方式既低效,時延又高且不穩定。假設即使把輪詢時間設置為10ms一次(這意味著1秒鍾就要輪詢100次), 平均時延也要5ms。

JNotify庫支持Windows,Linux和MacOS,允許監視一個文件夾,當這個文件夾下的文件被增刪改時,發起回調通知。代碼示例如下:

部署時,需要將本地庫放在執行根目錄下,或者用-Djava.library.path=/native/library/path指定本地庫的位置。

採用JNotify,用(基於操作系統的)通知而不是輪詢,可以非常快地發現文件被更新,根據測試時間<1ms (我覺得應該遠小於1ms,但是由於文件修改時間單位是毫秒,沒辦法更精確的測量)。

C. java讀取一個文件夾內的文本,文本過多時速度會很慢,什麼技術或方法能加快讀取

優化取決於你的需求,你動不動就一定法力在閱讀完所有的文字,或者你可以把名稱的文字,因為法律,那麼該指數將稍微打開。

D. JAVA中幾種讀取文件字元串的效率哪個比較高

方式一

/**
* 以位元組為單位讀取文件,常用於讀二進制文件,如圖片、聲音、影像等文件。
* 當然也是可以讀字元串的。
*/
/* 貌似是說網路環境中比較復雜,每次傳過來的字元是定長的,用這種方式?*/
public String readString1()
{
try
{
//FileInputStream 用於讀取諸如圖像數據之類的原始位元組流。要讀取字元流,請考慮使用 FileReader。
FileInputStream inStream=this.openFileInput(FILE_NAME);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=-1;
while( (length = inStream.read(buffer) != -1)
{
bos.write(buffer,0,length);
// .write方法 SDK 的解釋是 Writes count bytes from the byte array buffer starting at offset index to this stream.
// 當流關閉以後內容依然存在
}
bos.close();
inStream.close();
return bos.toString();
// 為什麼不一次性把buffer得大小取出來呢?為什麼還要寫入到bos中呢? return new(buffer,"UTF-8") 不更好么?
// return new String(bos.toByteArray(),"UTF-8");
}
}

方式二

// 有人說了 FileReader 讀字元串更好,那麼就用FileReader吧
// 每次讀一個是不是效率有點低了?
private static String readString2()
{
StringBuffer str=new StringBuffer("");
File file=new File(FILE_IN);
try {
FileReader fr=new FileReader(file);
int ch = 0;
while((ch = fr.read())!=-1 )
{
System.out.print((char)ch+" ");
}
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("File reader出錯");
}
return str.toString();
}

方式三

/*按位元組讀取字元串*/
/* 個人感覺最好的方式,(一次讀完)讀位元組就讀位元組吧,讀完轉碼一次不就好了*/
private static String readString3()
{
String str="";
File file=new File(FILE_IN);
try {
FileInputStream in=new FileInputStream(file);
// size 為字串的長度 ,這里一次性讀完
int size=in.available();
byte[] buffer=new byte[size];
in.read(buffer);
in.close();
str=new String(buffer,"GB2312");
} catch (IOException e) {
// TODO Auto-generated catch block
return null;
e.printStackTrace();
}
return str;
}

/*InputStreamReader+BufferedReader讀取字元串 , InputStreamReader類是從位元組流到字元流的橋梁*/
/* 按行讀對於要處理的格式化數據是一種讀取的好方式 */
private static String readString4()
{
int len=0;
StringBuffer str=new StringBuffer("");
File file=new File(FILE_IN);
try {
FileInputStream is=new FileInputStream(file);
InputStreamReader isr= new InputStreamReader(is);
BufferedReader in= new BufferedReader(isr);
String line=null;
while( (line=in.readLine())!=null )
{
if(len != 0) // 處理換行符的問題
{
str.append("\r\n"+line);
}
else
{
str.append(line);
}
len++;
}
in.close();
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str.toString();
}

閱讀全文

與java讀取文件效率相關的資料

熱點內容
max發光材質教程 瀏覽:675
蘭州linux培訓 瀏覽:818
手機qq怎樣查看帳號和密碼 瀏覽:142
word2010無法保存文件 瀏覽:743
ppt里怎樣添加視頻文件在哪裡 瀏覽:405
如何把隱藏在電腦中的文件找出來 瀏覽:574
ios照片分類app 瀏覽:65
excel如何調用exe文件 瀏覽:8
蘋果按下主屏幕以升級 瀏覽:461
win10塵埃3雙擊沒反應 瀏覽:160
如何一個人開發app 瀏覽:864
資料庫中實體的完整性如何保持 瀏覽:831
哪個二手車網站便宜啊 瀏覽:489
濟南地鐵app買了票怎麼退 瀏覽:424
食用油行情看哪個app 瀏覽:776
怎麼移動迅雷下載到一半的文件 瀏覽:803
哪些紅頭文件的抬頭下面是雙紅線 瀏覽:638
炒股app有哪個 瀏覽:108
汽車鑰匙編程器哪個好 瀏覽:688
誤刪除文件怎麼恢復 瀏覽:885

友情鏈接