inputstream:位元組輸入流
public int read(byte b,int off,int len){}
outputstream:位元組輸出流
public void write(byte b,int off,int len){}
fileoutputstream:public void write(byte b)//一次寫多個位元組,將b陣列中所有位元組寫出輸出流。
public class testfileoutputstream
//3關閉
fos.close();
}}
fileinputstream:public int read(byte b)//從流中讀取多個位元組,將讀到內容存入b陣列,返回實際讀到的位元組數;如果達到檔案的尾部,則返回-1。
public class testfileinputstream
讀取多個位元組
byte buf=new byte[1024];
int len=0;
while((len=fis.read(buf))!=-1)
//3關閉流
fis.close();
}}
緩衝流:bufferedoutputsream/bufferedinputstream
作用:提高io效率,減少訪問磁碟的次數;
資料儲存在緩衝區中,flush是將快取區的內容寫入檔案中,也可以直接close。
public class testbufferedoutputstream
//3關閉:預設重新整理,並關閉節點流
bos.close();
// try (outputstream ostream = fos)
}}
public class testbufferedinpustream
讀取多個位元組
byte buf=new byte[1024];
int len=0;
while((len=bis.read(buf))!=-1)
//3關閉,關閉緩衝流,自動關閉節點流
bis.close();
}}
public class address implements cloneable
public address()
public string getcity()
public void setcity(string city)
public string getarea()
public void setarea(string area)
@override
public string tostring() ';
}@override
protected object clone() throws clonenotsupportedexception
}
public class person implements externalizable,cloneable
public person()
public string getname()
public void setname(string name)
public int getage()
public void setage(int age)
public address getadd()
public void setadd(address add)
@override
public string tostring() ';
}@override
public void writeexternal(objectoutput out) throws ioexception
@override
public void readexternal(objectinput in) throws ioexception, classnotfoundexception
@override
public object clone() throws clonenotsupportedexception
}
/
* 把person物件使用物件流寫入硬碟中。序列化
* 要求:(1)序列化的類必須實現serializable(自動序列化介面)或externalizable(手動序列化介面)
* (2)序列化的類要新增乙個私有的long型別靜態常量:serialversionuid,保證序列化的類反序列化的類是同乙個類。
* 注意實現:
* (1)使用transient修飾的屬性,不可以序列化
* (2)靜態屬性不能序列化
* * 面試題:使用transient的屬性一定不能序列化嗎? 能 , 使用 externalizable 實現。
*/public class serializabledemo
/*** 序列化
* @throws exception
*/public static void writeobject() throws exception
/*** 反序列化
* @throws exception
*/public static void readobject() throws exception
system.out.println(person.country);
//3關閉
ois.close();
}}
reader:字元輸入流
public int read(char b,int off,int len){}
public void write(char c){}
filewriter:public void write(string str)//一次寫多個字元,將b陣列中所有字元寫入輸出流。
public class testfilewriter
//3關閉
fw.close();
}}
filereader:public int read(char c)//從流中讀取多個字元,將讀到內容存入c陣列,返回實際讀到的字元數;如果達到檔案的尾部,則返回-1;
public class testfilereader
讀取多個字元
char buf=new char[1024];
int len=0;
while((len=fr.read(buf))!=-1)
//3關閉
fr.close();
}}
緩衝流:bufferedwriter/bufferedreader
作用:支援輸入換行符
可一次寫一行,讀一行
public static void write() throws exception
//3關閉
bw.close();
system.out.println("寫入完畢");
}
public static void read() throws exception
//3關閉
br.close();
}
橋轉換流:inputstreamreader/outputstreamwriter
作用:可以將位元組流轉換為字元流
可設定字元的編碼方式
public static void read() throws exception
//3關閉
isr.close();
system.out.println();
}
public static void write() throws exception
//3關閉
osw.close();
}
列印流:printstream:位元組列印流,printwriter:字元列印流。
作用:封裝了print()/println()方法,支援寫入後換行。
printstream型別:system.out預設列印到控制台,重定向標準輸出流
public class testprint
}
randomomaccessfile即可以讀取檔案內容,也可以向檔案中寫入內容,但是和其他輸入/輸出流不同的是,程式可以直接跳到檔案的任意位置來讀寫資料。
讀寫模式:r:唯讀 rw:讀寫
作用:快速定位資料,支援併發讀寫
方便獲取二進位制檔案
public class testrandomaccessfile
public static void write() throws exception
public static void read() throws exception
}
public class testproperties
}
位元組流與字元流
位元組流 輸入位元組流 inputstream 所有輸入位元組流的基類,是抽象類 fileinputstream 讀取檔案資料的輸入位元組流 bufferedinputstream 緩衝輸入位元組流,該類可以提高讀取檔案資料的效率 輸出位元組流 outputstream 所有輸出位元組流的基類,是抽...
位元組流與字元流
1.在位元組流中輸出資料主要是使用outputstream完成,輸入使的是inputstream,在字元流中輸出主要是使用writer類完成,輸入流主要使用reader類完成。這四個都是抽象類 2.inputstream 和outputstream,兩個是為位元組流設計的,主要用來處理位元組或二進位...
位元組流與字元流
位元組流與字元流的操作的本質區別只有乙個 位元組流是原生的操作,而字元流是經過處理後的操作。在進行網路資料傳輸 磁碟資料儲存所儲存的支援資料型別只有 位元組,所以磁碟中的資料必須先讀取到記憶體後才可以操作,記憶體可以可以幫助我們把位元組變成字元。字元更加適合操作中文。位元組流 inputstream...