宣告變數時怕太占記憶體了,該如何解決呢? |
答題得分者是:neoart
|
ray521
一般會員 發表:6 回覆:0 積分:1 註冊:2004-03-11 發送簡訊給我 |
各位好,以下是我的問題
情況1:取出資料夾中的檔名時
File dir=new File("a\\");
String list1[]=dir.list();
如果a這個資料夾裡的檔案有上萬個,或數十萬個
那這樣list1[]這個陣列不就超大的
情況2:以下的的程式碼為小弟我拿來複製檔案時的寫法 FileInputStream fi=new FileInputStream("a\\a.dat"); FileOutputStream fo=new FileOutputStream(b\\a.dat); byte data[]=new byte[fi.available()]; fi.read(data); fo.write(data); fi.close(); fo.close(); 在這裡我是以data這個位元陣列來存放a.dat 那要是a.dat這個檔案很大,上gb時 data這個陣列所佔的記憶體是不是也是超大的呢? 請問有人有更好的寫法來解決這2種情況嗎? 謝謝 |
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
怕檔案太多,用
String list[]=dir.list(Filter)來過濾吧
怕"一檔獨大" ?
用 read(byte[],int offset,int len)來一段一段處理吧.
===============example=================================
FileInputStream in = new FileInputStream(source); FileOutputStream out = new FileOutputStream(target); byte[] buf = new byte[BUF_SIZE]; int i; while ((i = in.read(buf, 0, BUF_SIZE)) != -1) out.write(buf, 0, i); in.close(); out.close();================================================= 搬檔案. 用shell指令來做偷吃步也不錯說. 也許NIO(java new IO)有最佳化的一些新的指令也不錯,NIO好像只有英文版的樣子. ok,抄這麼多,不給人家註明來源會粉見笑的: http://forum.java.sun.com/thread.jsp?forum=31&thread=419020 http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html#read(byte[],%20int,%20int) 發表人 - neoart 於 2004/05/14 07:53:34 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |