最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

學習記錄之基礎API(流)

2022-07-25 22:06 作者:星月襲空  | 我要投稿

File類

File類的每一個實例可以表示硬盤(文件系統(tǒng))中的一個文件或目錄(實際上表示的是一個抽象路徑)

使用File可以做到:

????1:訪問其表示的文件或目錄的屬性信息,例如:名字,大小,修改時間等等

????2:創(chuàng)建和刪除文件或目錄

????3:訪問一個目錄中的子項

常用構造器:

????File(String pathname)

????File(File parent,String name)可參考文檔了解

常用方法:

????length():返回一個long值,表示占用的磁盤空間,單位為字節(jié)。

????canRead():File表示的文件或目錄是否可讀

????canWrite():File表示的文件或目錄是否可寫

????isHidden():File表示的文件或目錄是否為隱藏的

????createNewFile():創(chuàng)建一個新文件,如果指定的文件所在的目錄不存在會拋出異常????????????????java.io.FileNotFoundException

????mkdir:創(chuàng)建一個目錄

????mkdirs:創(chuàng)建一個目錄,并且會將所有不存在的父目錄一同創(chuàng)建出來,推薦使用。

????delete():刪除當前文件或目錄,如果目錄不是空的則刪除失敗。

????exists():判斷File表示的文件或目錄是否真實存在。true:存在 ? false:不存在

????isFile():判斷當前File表示的是否為一個文件。

????isDirectory():判斷當前File表示的是否為一個目錄

????listFiles():獲取File表示的目錄中的所有子項

????listFiles(FileFilter filter):獲取File表示的目錄中滿足filter過濾器要求的所有子項

JAVA IO

java io可以讓我們用標準的讀寫操作來完成對不同設備的讀寫數(shù)據(jù)工作.

java將IO按照方向劃分為輸入與輸出,參照點是我們寫的程序.

輸入:用來讀取數(shù)據(jù)的,是從外界到程序的方向,用于獲取數(shù)據(jù).

輸出:用來寫出數(shù)據(jù)的,是從程序到外界的方向,用于發(fā)送數(shù)據(jù).


java io可以讓我們用標準的讀寫操作來完成對不同設備的讀寫數(shù)據(jù)工作.

java將IO按照方向劃分為輸入與輸出,參照點是我們寫的程序.

輸入:用來讀取數(shù)據(jù)的,是從外界到程序的方向,用于獲取數(shù)據(jù).

輸出:用來寫出數(shù)據(jù)的,是從程序到外界的方向,用于發(fā)送數(shù)據(jù).

Java定義了兩個超類(抽象類):

java.io.InputStream:所有字節(jié)輸入流的超類,其中定義了讀取數(shù)據(jù)的方法.因此將來不管讀取的是什么設備(連接該設備的流)都有這些讀取的方法,因此我們可以用相同的方法讀取不同設備中的數(shù)據(jù)

????java.io.OutputStream:所有字節(jié)輸出流的超類,其中定義了寫出數(shù)據(jù)的方法.

java將流分為兩類:節(jié)點流與處理流:

節(jié)點流:也稱為低級流.節(jié)點流的另一端是明確的,是實際讀寫數(shù)據(jù)的流,讀寫一定是建立在節(jié)點流基礎上進行的.

處理流:也稱為高級流.處理流不能獨立存在,必須連接在其他流上,目的是當數(shù)據(jù)流經(jīng)當前流時對數(shù)據(jù)進行加工處理來簡化我們對數(shù)據(jù)的該操作.

實際應用中,我們可以通過串聯(lián)一組高級流到某個低級流上以流水線式的加工處理對某設備的數(shù)據(jù)進行讀寫,這個過程也成為流的連接,這也是IO的精髓所在.

文件流是一對低級流,用于讀寫文件的流

java.io.FileOutputStream文件輸出流,繼承自java.io.OutputStream

常用構造器

覆蓋模式對應的構造器

覆蓋模式是指若指定的文件存在,文件流在創(chuàng)建時會先將該文件原內(nèi)容清除。

FileOutputStream(String pathname):創(chuàng)建文件輸出流用于向指定路徑表示的文件做寫操作

FileOutputStream(File file):創(chuàng)建文件輸出流用于向File表示的文件做寫操作。

注:如果寫出的文件不存在文件流自動創(chuàng)建這個文件,但是如果該文件所在的目錄不存在會拋出異常:java.io.FileNotFoundException

追加寫模式對應的構造器

追加模式是指若指定的文件存在,文件流會將寫出的數(shù)據(jù)陸續(xù)追加到文件中。

FileOutputStream(String pathname,boolean append):如果第二個參數(shù)為true則為追加模式,false則為覆蓋模式

FileOutputStream(File file,boolean append):同上

常用方法:

void write(int d):向文件中寫入一個字節(jié),寫入的是int值2進制的低八位。
void write(byte[] data):向文件中塊寫數(shù)據(jù)。將數(shù)組data中所有字節(jié)一次性寫入文件。
void write(byte[] data,int off,int len):向文件中快寫數(shù)據(jù)。將數(shù)組data中從下標off開始的連續(xù)len個字節(jié)一次性寫入文件。

java.io.FileInputStream文件輸入流,繼承自java.io.InputStream

常用構造器

FileInputStream(String pathname) 創(chuàng)建讀取指定路徑下對應的文件的文件輸入流,如果指定的文件不存在則會拋出異常java.io.FileNotFoundException

FileInputStream(File file) 創(chuàng)建讀取File表示的文件的文件輸入流,如果File表示的文件不存在則會拋出異常java.io.IOException。

常用方法

int read():從文件中讀取一個字節(jié),返回的int值低八位有效,如果返回的int值為整數(shù)-1則表示讀取到了文件末尾。
int read(byte[] data):塊讀數(shù)據(jù),從文件中一次性讀取給定的data數(shù)組總長度的字節(jié)量并從數(shù)組第一個元素位置開始存入數(shù)組中。返回值為實際讀取到的字節(jié)數(shù)。如果返回值為整數(shù)-1則表示讀取到了文件末尾。

緩沖流

緩沖流是一對高級流,在流鏈接中鏈接它的目的是加快讀寫效率。緩沖流內(nèi)部默認緩沖區(qū)為8kb,緩沖流總是塊讀寫數(shù)據(jù)來提高讀寫效率。

java.io.BufferedOutputStream緩沖字節(jié)輸出流,繼承自java.io.OutputStream

常用構造器

????BufferedOutputStream(OutputStream out):創(chuàng)建一個默認8kb大小緩沖區(qū)的緩沖字節(jié)輸出流,并連接到參數(shù)指定的字節(jié)輸出流上。

????BufferedOutputStream(OutputStream out,int size):創(chuàng)建一個size指定大小(單位是字節(jié))緩沖區(qū)的緩沖字節(jié)輸出流,并連接到參數(shù)指定的字節(jié)輸出流上。

常用方法

flush():強制將緩沖區(qū)中已經(jīng)緩存的數(shù)據(jù)一次性寫出

緩沖流的寫出方法功能與OutputStream上一致,需要知道的時write方法調用后并非實際寫出,而是先將數(shù)據(jù)存入緩沖區(qū)(內(nèi)部的字節(jié)數(shù)組中),當緩沖區(qū)滿了時會自動寫出一次。

java.io.BufferedInputStream緩沖字節(jié)輸出流,繼承自java.io.InputStream

常用構造器

????BufferedInputStream(InputStream in):創(chuàng)建一個默認8kb大小緩沖區(qū)的緩沖字節(jié)輸入流,并連接到參數(shù)指定的字節(jié)輸入流上。

????BufferedInputStream(InputStream in,int size):創(chuàng)建一個size指定大小(單位是字節(jié))緩沖區(qū)的緩沖字節(jié)輸入流,并連接到參數(shù)指定的字節(jié)輸入流上。

常用方法

緩沖流的讀取方法功能與InputStream上一致,需要知道的時read方法調用后緩沖流會一次性讀取緩沖區(qū)大小的字節(jié)數(shù)據(jù)并存入緩沖區(qū),然后再根據(jù)我們調用read方法讀取的字節(jié)數(shù)進行返回,直到緩沖區(qū)所有數(shù)據(jù)都已經(jīng)通過read方法返回后會再次讀取一組數(shù)據(jù)進緩沖區(qū)。即:塊讀取操作

對象流

對象流是一對高級流,在流鏈接中的作用是完成對象的序列化反序列化

序列化:是對象輸出流的工作,將一個對象按照其結構轉換為一組字節(jié)的過程。

反序列化:是對象輸入流的工作,將一組字節(jié)還原為對象的過程。

java.io.ObjectInputStream對象輸入流,繼承自java.io.InputStream

常用構造器

ObjectInputStream(InputStream in):創(chuàng)建一個對象輸入流并連接到參數(shù)in這個輸入流上。

常用方法

Object readObject():進行對象反序列化,將讀取的字節(jié)轉換為一個對象并以Object形式返回(多態(tài))。

如果讀取的字節(jié)表示的不是一個java對象會拋出異常:java.io.ClassNotFoundException

java.io.ObjectOutputStream對象輸出流,繼承自java.io.OutputStream

常用構造器

ObjectOutputStream(OutputStream out):創(chuàng)建一個對象輸出流并連接到參數(shù)out這個輸出流上

常用方法

void writeObject(Object obj):進行對象的序列化,將一個java對象序列化成一組字節(jié)后再通過連接的輸出流將這組字節(jié)寫出。

如果序列化的對象沒有實現(xiàn)可序列化接口:java.io.Serializable就會拋出異常:java.io.NotSerializableException

序列化接口java.io.Serrializable

該接口沒有任何抽象方法,但是只有實現(xiàn)了該接口的類的實例才能進行序列化與反序列化。

實現(xiàn)了序列化接口的類建議顯示的定義常量:static final long serialVersionUID = 1L;

可以為屬性添加關鍵字transient,被該關鍵字修飾的屬性在序列化是會被忽略,達到對象序列化瘦身的目的。

字符流

java將流按照讀寫單位劃分為字節(jié)與字符流。字節(jié)流以字節(jié)為單位讀寫,字符流以字符為單位讀寫。

轉換流java.io.InputStreamReader和OutputStreamWriter

功能無需掌握,了解其核心意義:

1:銜接其它字節(jié)與字符流

2:將字符與字節(jié)進行轉換

相當于是現(xiàn)實中的"轉換器"

PrintWriter

具有自動行刷新功能的緩沖字符輸出流

構造器:

PrintWriter(String filename)

PrintWriter(File file)

常用方法:

void println(String line):按行寫出字符串

緩沖字符輸出流

緩沖字符輸出流需要記住的是PrintWriter和BufferedReader

作用:

1:塊寫或塊讀文本數(shù)據(jù)加速

2:可以按行寫或讀字符串

java.io.PrintWriter 具有自動行刷新的緩沖字符輸出流

常用構造器

PrintWriter(String filename) :可以直接對給定路徑的文件進行寫操作

PrintWriter(File file):可以直接對File表示的文件進行寫操作

上述兩種構造器內(nèi)部會自動完成流連接操作。

PrintWriter(OutputStream out):將PW鏈接在給定的字節(jié)流上(構造方法內(nèi)部會自行完成轉換流等流連接)

PrintWriter(Writer writer):將PW鏈接在其它字符流上

PrintWriter(OutputStream out,boolean autoflush)

PrintWriter(Writer writer,boolean autoflush)

上述兩個構造器可以在鏈接到流上的同時傳入第二個參數(shù),如果該值為true則開啟了自動行刷新功能。

常用方法

void println(String line):按行寫出一行字符串

特點

自動行刷新,當打開了該功能后,每當使用println方法寫出一行字符串后就會自動flush一次

java異常處理機制:

  • 異常處理機制是用來處理那些可能存在的異常,但是無法通過修改邏輯完全規(guī)避的場景。

  • 而如果通過修改邏輯可以規(guī)避的異常是bug,不應當用異常處理機制在運行期間解決!應當在編碼時及時修正

try語句塊用來包含可能出錯的代碼片段

catch用來捕獲并處理對應的異常,可以定義多個,也可以合并多個異常在一個catch中。

finally是異常的最后一塊,只要程序執(zhí)行到try中則必走。一般用于釋放資源這類操作。

throw用于主動對外拋出異常。要么是滿足語法不滿足業(yè)務主動拋出異常,要么就是實際發(fā)生了異常但是不應當在當前代碼片段被解決是拋出。具體情況要結合實際業(yè)務分析。

throws用于在方法聲明時聲明該異常的拋出,使得調用者必須處理該異常。

我們學習的javaIO稱為BIO,即:阻塞式IO
所謂阻塞式IO指的是當我們在讀寫數(shù)據(jù)時,數(shù)據(jù)沒有準備好之前,程序(線程)會進入阻塞狀態(tài)等待數(shù)據(jù)
準備完畢后再進行讀寫。
非阻塞IO:NIO
在讀寫數(shù)據(jù)時,若數(shù)據(jù)還沒有準備完畢,此時程序(線程)會繼續(xù)向后執(zhí)行其他邏輯并不會在讀寫方法這里阻塞。 NIO真正解決的問題是網(wǎng)絡上IO操作的阻塞問題。NIO有一個核心API:多路選擇器Selector ? select:單詞的含義是"選擇"多路選擇器的作用相當于是一個"監(jiān)控設備",將多個"通道"注冊到該選擇器上,此時選擇器就會自動監(jiān)控每個通道中的事件,一旦出現(xiàn)了某個我們需要關注的事件,比如一個客戶端連接了,或者某個客戶端發(fā)送過來消息了。那么多路選擇就可以通知我們某個通道需要處理該操作,此時我們就可以進行相關處理了。














學習記錄之基礎API(流)的評論 (共 條)

分享到微博請遵守國家法律
武冈市| 霍山县| 昌平区| 日照市| 肃南| 长沙市| 江华| 南陵县| 揭东县| 包头市| 延长县| 平顶山市| 龙海市| 河曲县| 渭南市| 宣恩县| 新沂市| 洛浦县| 贡觉县| 上蔡县| 温州市| 日土县| 枣庄市| 和田县| 阳城县| 龙川县| 铜陵市| 禄丰县| 长春市| 攀枝花市| 新沂市| 绩溪县| 台江县| 卢湾区| 巴塘县| 麻阳| 台东市| 奉化市| 七台河市| 江门市| 本溪|