title: IO流
date: 2020-02-02 21:51:26
tags:
-IO流
categories: Java學(xué)習(xí)
前言
最近系統(tǒng)的學(xué)習(xí)了一下JAVA里面的IO流,IO流是Java的重要特性,通過IO流可以很好的支持網(wǎng)絡(luò)傳輸,這就是為什么說Java是為互聯(lián)網(wǎng)而生的。
一,F(xiàn)ile類
要想了解IO流首先的學(xué)習(xí)file類:
1.file類定義
- java.io.file類是專門對(duì)文件進(jìn)行操作的類,只能對(duì)文件本身進(jìn)行操作,不能對(duì)文件內(nèi)容進(jìn)行操作。
- File類是“文件和目錄路徑名的抽象表示”,而不是指文件內(nèi)容(IO)。
2.file類的構(gòu)造方法與常用方法
| 構(gòu)造方法 |
|---|
File(String parent, String child)從父路徑名字符串和子路徑名字符串創(chuàng)建新的 File實(shí)例。 |
File(URI uri)通過將給定的 file: URI轉(zhuǎn)換為抽象路徑名來創(chuàng)建新的 File實(shí)例。 |
File(String pathname)通過將給定的路徑名字符串轉(zhuǎn)換為抽象路徑名來創(chuàng)建新的 File實(shí)例。 |
| Modifier and Type | Method and Description |
|---|---|
boolean |
canRead()測(cè)試應(yīng)用程序是否可以讀取由此抽象路徑名表示的文件。 |
boolean |
canWrite()測(cè)試應(yīng)用程序是否可以修改由此抽象路徑名表示的文件。 |
boolean |
createNewFile()當(dāng)且僅當(dāng)具有該名稱的文件尚不存在時(shí),原子地創(chuàng)建一個(gè)由該抽象路徑名命名的新的空文件。 |
boolean |
delete()刪除由此抽象路徑名表示的文件或目錄。 |
boolean |
exists()測(cè)試此抽象路徑名表示的文件或目錄是否存在。 |
File |
getAbsoluteFile()返回此抽象路徑名的絕對(duì)形式。 |
String |
getName()返回由此抽象路徑名表示的文件或目錄的名稱。 |
boolean |
isDirectory()測(cè)試此抽象路徑名表示的文件是否為目錄。 |
boolean |
isFile()測(cè)試此抽象路徑名表示的文件是否為普通文件。 |
boolean |
isHidden()測(cè)試此抽象路徑名命名的文件是否為隱藏文件。 |
long |
lastModified()返回此抽象路徑名表示的文件上次修改的時(shí)間。 |
long |
length()返回由此抽象路徑名表示的文件的長(zhǎng)度。 |
boolean |
mkdir()創(chuàng)建由此抽象路徑名命名的目錄。 |
boolean |
mkdirs()創(chuàng)建由此抽象路徑名命名的目錄,包括任何必需但不存在的父目錄。 |
String[] |
list()返回一個(gè)字符串?dāng)?shù)組,命名由此抽象路徑名表示的目錄中的文件和目錄。 |
二、IO流
2.1流的概念:
流是一組有順序的,有起點(diǎn)和終點(diǎn)的字節(jié)集合,是對(duì)數(shù)據(jù)傳輸?shù)目偡Q或抽象。即數(shù)據(jù)在兩設(shè)備間的傳輸稱為流。流的本質(zhì)是數(shù)據(jù)傳輸,根據(jù)數(shù)據(jù)傳輸特性將流抽象為各種類,方便更直觀的進(jìn)行數(shù)據(jù)操作。
2.2IO流的分類:
根據(jù)處理數(shù)據(jù)類型的不同分為:字節(jié)流(二進(jìn)制,可以處理一切文件,文本,音頻等)和字符流(文本文件,只能是純文本,像txt)。
根據(jù)數(shù)據(jù)流向不同分為:輸入流和輸出流。

三、字節(jié)流
3.1字節(jié)輸入流OutputStream
OutputStream此抽象類,是表示字節(jié)輸出流的所有類的超類。操作的數(shù)據(jù)都是字節(jié),定義了輸出字節(jié)流的基本共性和方法。
常用方法
| Modifier and Type | Method and Description |
|---|---|
void |
close()關(guān)閉此輸出流并釋放與此流相關(guān)聯(lián)的任何系統(tǒng)資源。 |
void |
flush()刷新此輸出流并強(qiáng)制任何緩沖的輸出字節(jié)被寫出。 |
void |
write(byte[] b)將 b.length字節(jié)從指定的字節(jié)數(shù)組寫入此輸出流。 |
void |
write(byte[] b, int off, int len)從指定的字節(jié)數(shù)組寫入 len個(gè)字節(jié),從偏移 off開始輸出到此輸出流。 |
abstract void |
write(int b)將指定的字節(jié)寫入此輸出流。 |
3.2字節(jié)輸出流InputStream
InputStream此抽象類,是字節(jié)輸入流的所有類的超類。定義了字節(jié)輸入流的基本共性功能方法。
常用方法
| Modifier and Type | Method and Description |
|---|---|
int |
available()返回從該輸入流中可以讀?。ɑ蛱^)的字節(jié)數(shù)的估計(jì)值,而不會(huì)被下一次調(diào)用此輸入流的方法阻塞。 |
void |
close()關(guān)閉此輸入流并釋放與流相關(guān)聯(lián)的任何系統(tǒng)資源。 |
void |
mark(int readlimit)標(biāo)記此輸入流中的當(dāng)前位置。 |
boolean |
markSupported()測(cè)試這個(gè)輸入流是否支持 mark和 reset方法。 |
abstract int |
read()從輸入流讀取數(shù)據(jù)的下一個(gè)字節(jié)。 |
int |
read(byte[] b)從輸入流讀取一些字節(jié)數(shù),并將它們存儲(chǔ)到緩沖區(qū) b 。 |
int |
read(byte[] b, int off, int len)從輸入流讀取最多 len字節(jié)的數(shù)據(jù)到一個(gè)字節(jié)數(shù)組。 |
void |
reset()將此流重新定位到上次在此輸入流上調(diào)用 mark方法時(shí)的位置。 |
long |
skip(long n)跳過并丟棄來自此輸入流的 n字節(jié)數(shù)據(jù)。 |
四、字符流
4.1讀取字符流Reader
用于讀取字符流的抽象類。 子類必須實(shí)現(xiàn)的唯一方法是read(char [],int,int)和close()。 然而,大多數(shù)子類將覆蓋這里定義的一些方法,以便提供更高的效率,附加的功能或兩者。
構(gòu)造方法
| Modifier | Constructor and Description |
|---|---|
protected |
Reader()創(chuàng)建一個(gè)新的字符流閱讀器,其關(guān)鍵部分將在閱讀器本身上同步。 |
protected |
Reader(Object lock)創(chuàng)建一個(gè)新的字符流閱讀器,其關(guān)鍵部分將在給定對(duì)象上同步。 |
常用方法
| Modifier and Type | Method and Description |
|---|---|
abstract void |
close()關(guān)閉流并釋放與之相關(guān)聯(lián)的任何系統(tǒng)資源。 |
void |
mark(int readAheadLimit)標(biāo)記流中的當(dāng)前位置。 |
boolean |
markSupported()告訴這個(gè)流是否支持mark()操作。 |
int |
read()讀一個(gè)字符 |
int |
read(char[] cbuf)將字符讀入數(shù)組。 |
abstract int |
read(char[] cbuf, int off, int len)將字符讀入數(shù)組的一部分。 |
int |
read(CharBuffer target)嘗試將字符讀入指定的字符緩沖區(qū)。 |
boolean |
ready()告訴這個(gè)流是否準(zhǔn)備好被讀取。 |
void |
reset()重置流。 |
long |
skip(long n)跳過字符 |
4.2寫入字符流流Write
用于寫入字符流的抽象類。 子類必須實(shí)現(xiàn)的唯一方法是write(char [],int,int),flush()和close()。 然而,大多數(shù)子類將覆蓋這里定義的一些方法,以便提供更高的效率,附加的功能或兩者。
構(gòu)造方法
| Modifier | Constructor and Description |
|---|---|
protected |
Writer()創(chuàng)建一個(gè)新的人物流作家,其關(guān)鍵部分將在作者本身上同步。 |
protected |
Writer(Object lock)創(chuàng)建一個(gè)新的字符流寫入器,其關(guān)鍵部分將在給定對(duì)象上進(jìn)行同步。 |
常用方法
| Modifier and Type | Method and Description |
|---|---|
Writer |
append(char c)將指定的字符附加到此作者。 |
Writer |
append(CharSequence csq)將指定的字符序列附加到此作者。 |
Writer |
append(CharSequence csq, int start, int end)將指定字符序列的子序列附加到此作者。 |
abstract void |
close()關(guān)閉流,先刷新。 |
abstract void |
flush()刷新流。 |
void |
write(char[] cbuf)寫入一個(gè)字符數(shù)組。 |
abstract void |
write(char[] cbuf, int off, int len)寫入字符數(shù)組的一部分。 |
void |
write(int c)寫一個(gè)字符 |
void |
write(String str)寫一個(gè)字符串 |
void |
write(String str, int off, int len)寫一個(gè)字符串的一部分。 |