摘要:是繼承與的子類(lèi)常用屬性文件描述符是否在文件尾部開(kāi)始追加寫(xiě)入用于讀寫(xiě)映射操作文件的通道文件的路徑一個(gè)關(guān)閉鎖,只在方法中使用,確保多線程同步調(diào)用構(gòu)造函數(shù)創(chuàng)建一個(gè)向指定對(duì)應(yīng)的文件中寫(xiě)入數(shù)據(jù)的文件輸出流創(chuàng)建一個(gè)向指定對(duì)應(yīng)的文件中寫(xiě)入數(shù)據(jù)的文件輸出流
FileOutputStream 是繼承與OutputStream的子類(lèi)
1 常用屬性
private final FileDescriptor fd;// 文件描述符
private final boolean append; // 是否在文件尾部開(kāi)始追加寫(xiě)入
private FileChannel channel; // 用于讀、寫(xiě)、映射、操作文件的通道
private final String path;// 文件的路徑
private final Object closeLock = new Object();// 一個(gè)關(guān)閉鎖,只在close()方法中使用,確保多線程同步調(diào)用
2 構(gòu)造函數(shù)
public FileOutputStream(String name);// 創(chuàng)建一個(gè)向指定File對(duì)應(yīng)的文件中寫(xiě)入數(shù)據(jù)的文件輸出流
public FileOutputStream(String name, boolean append);// 創(chuàng)建一個(gè)向指定File對(duì)應(yīng)的文件中寫(xiě)入數(shù)據(jù)的文件輸出流,第二個(gè)參數(shù)append是否在文件末尾開(kāi)始寫(xiě)入
public FileOutputStream(File file);// 創(chuàng)建一個(gè)向指定File對(duì)應(yīng)的文件中寫(xiě)入數(shù)據(jù)的文件輸出流
public FileOutputStream(File file, boolean append);// 創(chuàng)建一個(gè)向指定File對(duì)應(yīng)的文件中寫(xiě)入數(shù)據(jù)的文件輸出流
public FileOutputStream(FileDescriptor fdObj); // 根據(jù)文件描述符構(gòu)造輸出流
3 常用方法
// 寫(xiě)入一個(gè)字節(jié)到該文件輸出流中,調(diào)用下邊的本地方法
public void write(int b) throws IOException {
write(b, append);// 調(diào)用的是一個(gè)native方法
}
// 本地方法,寫(xiě)入一個(gè)字節(jié)到該文件輸出流中
private native void write(int b, boolean append) throws IOException;
// 將給定的字節(jié)數(shù)組b中的所有字節(jié)寫(xiě)入文件輸出流,調(diào)用本地方法
public void write(byte b[]) throws IOException {
writeBytes(b, 0, b.length, append);
}
// 將給定的字節(jié)數(shù)組b中從off開(kāi)始的len個(gè)字節(jié)字節(jié)寫(xiě)入文件輸出流,調(diào)用下邊的本地方法
public void write(byte b[], int off, int len) throws IOException {
writeBytes(b, off, len, append);
}
// 本地方法,將給定的字節(jié)數(shù)組b中從off開(kāi)始的len個(gè)字節(jié)寫(xiě)入文件輸出流
private native void writeBytes(byte b[], int off, int len, boolean append) throws IOException;
// 關(guān)閉流,調(diào)用本地的方法
public void close() throws IOException {
synchronized (closeLock) { if (closed) { return; } closed = true; } if (channel != null) { channel.close(); } fd.closeAll(new Closeable() { public void close() throws IOException { close0(); } });
}
// 本地方法,關(guān)閉流
private native void close0() throws IOException;
// 清理到文件的連接,并確保不再引用此文件輸入流時(shí)調(diào)用此close的方法
protected void finalize() throws IOException {
if (fd != null) { if (fd == FileDescriptor.out || fd == FileDescriptor.err) { flush(); } else { close(); } }
}
// 獲取流對(duì)象對(duì)應(yīng)的通道,如果為空就創(chuàng)建一個(gè)新的通道
public FileChannel getChannel() {
synchronized (this) { if (channel == null) { channel = FileChannelImpl.open(fd, path, false, true, append, this); } return channel; }
}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/72008.html
摘要:是從文件系統(tǒng)中的文件中獲取字節(jié),至于什么文件,取決于主機(jī)環(huán)境,用于讀取原始字節(jié)流,如圖像數(shù)據(jù),假如想要讀取字符類(lèi)型流,請(qǐng)使用。跳過(guò)個(gè)字節(jié)本地方法關(guān)閉文件輸入流 FileInputStream是從文件系統(tǒng)中的文件中獲取字節(jié),至于什么文件,取決于主機(jī)環(huán)境,F(xiàn)ileInputStream用于讀取原始字節(jié)流,如圖像數(shù)據(jù),假如想要讀取字符類(lèi)型流,請(qǐng)使用FileReader。 ...
摘要:直接繼承與,實(shí)現(xiàn)了接口和接口,實(shí)現(xiàn)接口,意味著對(duì)象支持序列化操作,而實(shí)現(xiàn)接口,意味著之間可以比較大小。刪除此抽象路徑名表示的文件或目錄。標(biāo)記此抽象路徑名指定的文件或目錄,從而只能對(duì)其進(jìn)行讀操作。 showImg(https://segmentfault.com/img/bVbi3ls?w=2048&h=164);1 File直接繼承與Object,實(shí)現(xiàn)了Serializable接口和C...
摘要:與的作用是對(duì)基本數(shù)據(jù)和對(duì)象進(jìn)行序列化操作進(jìn)行支持。如果檢測(cè)到反序列化的類(lèi)的和對(duì)象二進(jìn)制流的不同,則會(huì)拋出異常。 ObjectInputStream與ObjectOutputStream的作用是:對(duì)基本數(shù)據(jù)和對(duì)象進(jìn)行序列化操作進(jìn)行支持。其中ObjectInputStream對(duì)象提供對(duì)基本數(shù)據(jù)和對(duì)象對(duì)持久存儲(chǔ),當(dāng)我們需要讀取這些存儲(chǔ)這些基本數(shù)據(jù)或?qū)ο髸r(shí),可以創(chuàng)建文件輸入流對(duì)應(yīng)的Object...
摘要:序列化提供的一種對(duì)象序列化的機(jī)制,在該機(jī)制中,一個(gè)對(duì)象可以被表示為一個(gè)字節(jié)序列,該字節(jié)序列包括對(duì)象的數(shù)據(jù)有關(guān)對(duì)象的類(lèi)型的信息和存儲(chǔ)在對(duì)象中的數(shù)據(jù)類(lèi)型。類(lèi)和是高程次的數(shù)據(jù)流,他們包含序列化和反序列化對(duì)象的方法。 序列化:Java提供的一種對(duì)象序列化的機(jī)制,在該機(jī)制中,一個(gè)對(duì)象可以被表示為一個(gè)字節(jié)序列,該字節(jié)序列包括對(duì)象的數(shù)據(jù)、有關(guān)對(duì)象的類(lèi)型的信息、和存儲(chǔ)在對(duì)象中的數(shù)據(jù)類(lèi)型。 反序列化:將...
摘要:通過(guò)多個(gè)裝飾類(lèi)實(shí)現(xiàn)責(zé)任鏈模式,它將對(duì)一個(gè)輸入流的不同處理分散到不同的中去。 1、基本概念 1.1、InputStream 最基本的字節(jié)輸入流,抽象類(lèi),定義了讀取原始字節(jié)的所有基本方法1.1.1、public abstract int read() throws IOException 讀取一個(gè)字節(jié)的方法,最基礎(chǔ)的方法1.1.2、public int read(byte b[], in...
閱讀 2985·2021-11-16 11:51
閱讀 2616·2021-09-22 15:02
閱讀 3732·2021-08-04 10:21
閱讀 3620·2019-08-30 15:43
閱讀 1955·2019-08-30 11:04
閱讀 3607·2019-08-29 17:14
閱讀 499·2019-08-29 12:16
閱讀 2942·2019-08-28 18:31