IO流
????I表示input,是數(shù)據(jù)從硬盤進(jìn)內(nèi)存的過(guò)程,稱之為讀
????O表示output,是數(shù)據(jù)從內(nèi)存到硬盤的過(guò)程,稱之為寫
????流是一個(gè)抽象概念,數(shù)據(jù)在設(shè)備間的傳輸稱為流,流的本質(zhì)是數(shù)據(jù)傳輸
IO的使用場(chǎng)景
? ? 字節(jié)流能操作所有的文件
? ? 字符流只能操作純文本文件
字節(jié)流
? ? 字節(jié)流的抽象基類
? ? ????InputStream:這個(gè)抽象類是表示字節(jié)輸入流的所有類的超類
? ? ????outputStream:這個(gè)抽象類是表示字節(jié)輸出流的所有類的超類
? ? 使用FileInputStream和FileOutputStream讀寫文本文件
字節(jié)流寫數(shù)據(jù)的兩個(gè)小問(wèn)題
? ? 字節(jié)流寫數(shù)據(jù)如何實(shí)現(xiàn)換行:windows:\r\n;linux:\n;mac:\r
? ? 字節(jié)流寫數(shù)據(jù)如何實(shí)現(xiàn)追加寫入:
public FileoutputStream(String name,boolean append)
創(chuàng)建文件輸出流以指定的名稱寫入文件。如果第二個(gè)參數(shù)為true,則字節(jié)將寫入文件的末尾而不是開頭
字節(jié)緩沖流
BufferedOutputStream:字節(jié)緩沖輸出流
BufferedInputStream:字節(jié)緩沖輸入流
字節(jié)緩沖流:可以提高效率,不能直接操作文件,需要傳遞字節(jié)流
拷貝文件的四種方式:
? ? 字節(jié)流一次讀寫一個(gè)字節(jié)
? ? 字節(jié)流一次讀寫一個(gè)字節(jié)數(shù)組
? ? 字節(jié)緩沖流一次操作一個(gè)字節(jié)
? ? 字節(jié)緩沖流一次操作一個(gè)字節(jié)數(shù)組
如果不自定義數(shù)組,使用緩沖流的效率比字節(jié)流要高,如果自定義數(shù)組,使用字節(jié)流的效率要比緩沖流的效率高
? ??