Java學習筆記整理 流

2021-09-24 03:01:42 字數 3549 閱讀 4131

一.randomaccessfile

new randomaccessfile(file,「rw」);

常用:int read()->讀單位元組

int read(byte)->返回有效長度,讀的內容放入byte陣列

int read(byte,off,len)->返回有效長度,讀的內容放入byte陣列off位置開始

void write(int)->寫單位元組

write (byte)->將byte陣列寫入檔案

write(byte,off,len)->將byte陣列從off位置開始寫入檔案,寫len個

long getfilepointer()//獲取當前指標位置

seek(int)//跳到指定指標位置

skipbytes(int)//跳過對應位元組數

一般用來檔案加密

加密randomaccessfile raf=new randonaccessfile(「t.txt」,「rw」);

int len=-1;

bytearr=new int[1024];

while((len=raf.read(arr))!=-1)

bis.close();

bos.close();

位元組流:位元組為單位,不是用來讀寫可視內容

通常用來複製檔案

又因為緩衝流效率高,所以複製檔案用緩衝流

底層流就是用來生成其它高階流的

三.字元流:單位是字元-有字符集 預設字符集/指定字符集(gbk/utf-8)

1.reader/writer

inputstreamreader(inputstream,charset)

int read()-讀單個字元

int read(char)-返回讀取的有效個數,讀出來的字元存入字元陣列中

int read(char,off,len)-返回讀取的有效個數,讀出來的字元存入字元陣列從off開始

outputstreamwriter(outputstream,charset)

writer osw =new outputstreamwriter(new fileoutputstream(「a.txt」,true),"「gbk」);

write(int)-寫單個字元

write(『a』);

write(char)-寫字元陣列/字串

osw.write(new char);

osw.write(「哈哈\n」);

write(char,off,len)寫字元陣列一部分/字串一部分

osw.write(new char,3,2);

osw.write(「hello」,3,2);

flush()/close();

reader isr=new inputstreamreader(new fileinputstream(「a.txt」),「gbk」);//指定字符集

char c=(char)isr.read();//讀單個字元,字元本身就沒有負數

charcs=new char[10];

int len=isr.read(cs);//讀若干字元,存入字元陣列中,最多讀cs.length個

len=isr.read(cs,2,4);//讀若干,存入字元陣列從off開始的位置

2.緩衝流

printwriter/bufferedreader

printwriter pw=new printwriter(new outputstreamwriter(fileoutputstream(「a.txt」,true),「gbk」),true);

//指定編碼gbk,指定檔案是否追加

//指定true,開啟自動行重新整理

pw.println(「哈哈哈哈」);

pw.print(「嘻嘻」);

pw.flush();

pw.close();

bufferedreader br=new bufferedreader(new inputstreamreader(new fileinputstream(「a.txt」,「utf-8」));

string str=br.readline();//讀取一整行,返回null,讀到檔案結束

四.objectinputstream/objectoutputstream–

操作物件,位元組為單位

寫:現將物件轉換成位元組(序列化),寫入檔案

讀:讀位元組,將位元組轉換成物件(反序列化)

使用場景:

深轉殖:複製 物件+引用

使用場景:跨主機

淺轉殖:object.clone()複製引用

serializable:可序列化的-空介面

序列化:將物件轉換成位元組,要求物件必須是可序列化的

目的:僅用於標識可序列化的語義

serialversionuid->類的版本號,預設情況下,通常修改內容會修改版本號

objectoutputstream oos=new objectoutputstream(new fileoutputstream(「obj.txt」));

//物件流擁有位元組流所有的方法

//向檔案中寫入物件

oos.writeobject(「嘿嘿」);

oos.close();

objectinputstream ois=new objectinputstream(new fileinputstream(「obj.txt」));

//從檔案中讀取物件

object obj=ois.readobject();

ois.close();

五.properties-key-value鍵值對

配置檔案,避免硬編碼,動態載入資訊

.properties

.xml

連伺服器:ip,埠port

www.baidu.com:網域名稱->ip

dnsproperties pro=new properties();//建立物件

inputstream in=new fileinputstream(propertiesdemo.class.getresource(「config.properties」).getfile());//讀配置檔案

pro.load(in);//載入配置檔案

string ip=pro.getproperty(「ip」);//獲取配置檔案內容 key-value

string port=pro.getproperty(「port」);

總結:位元組流:inputstrem/outputstream

fileinputstream/fileoutputstream

bufferedinputstream/bufferedoutputstream

字元流:reader/writer

inputstreamreader/outputstreamwriter

bufferedreader/printwriter

檔案複製:

bufferedinputstream/bufferedoutputstream

內容讀寫:

bufferreader/printwriter

底層流:

包裝高階流

Java學習筆記 IO流

inputstream和outputstream是抽象類,他們是所有位元組輸入流和輸出流的父類。public static void main string args throws ioexceptionpublic static void main string args throws ioexc...

Java學習筆記 IO流

流按操作型別分為兩種 位元組流與字元流。位元組流可以操作任何資料,字元流只能操作純字元資料,比較方便 位元組流 基本操作與字元流相同,位元組流可以操作任意型別資料 位元組流和字元流的區別 1 位元組流用來讀取位元組資料 2 字元流用來讀取字元資料 3 由於計算機中儲存和傳輸資料是以位元組的形式,所以...

Java學習筆記 IO流

強制重新整理 os.flush 釋放資源,關閉流,遵循先開啟後關閉原則 os.close is.close public class test catch filenotfoundexception e catch ioexception e finally catch ioexception e ...