2023年2月24日 File類 IO流

2022-06-12 12:21:08 字數 3428 閱讀 4238

輸入輸出操作的區別:

輸出操作:從記憶體到硬碟(寫入)

輸入操作:從硬碟到記憶體(讀取)

file類中,封裝的是:檔案和資料夾、路徑,系統中除了檔案和資料夾,沒別的了。

流的分類:

輸入輸出

位元組inputstream

outputstream

字元reader

writer

路徑分隔符:

system.out.println("與系統有關的路徑分隔符:"+file.pathseparator);

system.out.println("與系統有關的預設名稱分隔符:"+file.separator);

//與系統有關的路徑分隔符:;

//與系統有關的預設名稱分隔符:\

分號指的是window系統的多個路徑之間的分隔符(如果是linux是冒號:)

反斜槓指的是路徑裡面的分隔符,linux是/,windows是\

file類構造方法:

file類的構造方法不校驗檔案是否真實存在

file(string parent, string child) ,是為了靈活傳輸不同的子路徑

file(file parent, string child) ,是為了能調父路徑的方法

根據需要選擇構造方法

目錄:

directory 資料夾的學名

相對路徑:

建立檔案的步驟:

1:明確建立檔案的位置

2:建立檔案、處理異常

createnewfile不指定副檔名,建立的還是沒有副檔名的檔案,而不是資料夾

刪除檔案的步驟:

1:明確要刪除的檔案的位置

2:呼叫file類的delete方法

public static void method03() throws ioexception

如果檔案或資料夾本身就不存在,那麼isfile、isdirectory返回一定是false

還需要注意如果刪除的是資料夾,資料夾必須是空的才能被刪除

建立資料夾的步驟:

使用mkdir、mkdirs方法

mkdir指定副檔名,建立的還是是資料夾,如果建立多級資料夾,需用mkdirs

獲取資料夾下的所有檔案和資料夾:

list返回string陣列

filelist返回file陣列

注意只能獲取一級,不包含子目錄裡的

檔案過濾器:

filenamefilter:按檔名過濾

filefilter:按檔案物件特點過濾

要注意考慮的:

window下檔名不區分大小寫:

file files = file.listfiles((file typef) -> typef.getname().tolowercase().endswith(".txt") && typef.isfile());

遞迴:

方法自己呼叫自己

一定要設定出口

迭代次數不能太多

迴圈已知次數,遞迴不知道

檔案過濾器的簡化寫法:

(找出該目錄下的txt檔案,不包含子目錄)

原**(實現filefilter介面,建立實現類物件):

class myfilter implements

filefilter

else

}}public

class

main }}

簡化(匿名內部類)

public

class

main

else

}})) }}

繼續簡化(lambada表示式)

public

class

main

else

})) }}

測試緩衝陣列大小對檔案複製速度的影響:(video檔案大為100m)

public

static

void main(string args) throws

ioexception

long et =system.currenttimemillis();

system.out.println("複製完成,用時:"+(et-st)/1000.0+"秒");

fis.close();

fos.close();

}

buffer陣列長度

複製用時(秒)

647.168

1284.336

2562.108

由此可見buffer陣列長度越大,複製越快。

對比使用緩衝流和不使用緩衝流複製的速度:

2023年5月24日 2023年5月24日

2010年5月24日那天晚上,我下班回家,吃完飯,雖然我不記得是自己做的飯還是買回來吃的.我捧起了 第五版 開始了我的程式生涯.在那之前是我研究了6個月還是8個月開了我的傳奇私服,十分對戰 接著是2個月的運營後花光了所有積蓄,聽起來挺嚇人,其實就5000塊而已.在這之前,是我剛開始參加工作,就感覺自...

2023年5月24日 2023年5月24日

今天是第六年.我可能要感謝那天的自己吧,窗外是熙攘的歡聲笑語,我吃完了晚飯趁著太遠還沒下山,捧著我那本 去年到今年這一年,先是度過了找工作的困擾.之後憤然離開布斯來到了北京.當時加入一家不是做遊戲的公司,我是很抗拒的.畢竟是工作後第一次離開遊戲圈,加入家具圈.當時的考慮就是一是投了那麼多簡歷,那個於...

2023年2月18日 6月5日目標 階段

除去開學期間的忙碌以及部分假期的事情約100天左右 顧目標作14 15周左右計算 提公升基礎編碼能力 提高英語和數學基礎水平 了解資料結構與演算法 基礎體能強化 1 資料結構 2 c的高階 3 演算法導論 4 英語寫作與背誦 5 高等數學基礎 6 線性代數基礎 7 長跑 1.線性表 2.棧,佇列,陣...