1.io流的意義:處理裝置之間的資料傳輸
硬碟==>記憶體:讀(input)
記憶體==>硬碟:寫(output)
2.file類常用方法
新建檔案:file file = new file("d:\\aaa\\","1.txt");
file file = new file("d:"+system.getproperty("file.separator")+"1.txt"); //下劃線可用property鍵值對替代
檔案長度:length();
檔名:getname();
檔案所在目錄:getparent();
檔案路徑:getpath(); getabsolutepath();
建立檔案:createnewfile();
建立目錄:mkdir(); mkdirs();(多級目錄用後者)
刪除檔案:delete();
判斷是否隱藏檔案:ishidden();
判斷是否為空:isempty();
判斷是否檔案、目錄:isfile(); isdirectory();
獲取所有檔名,獲取所有檔案(包含隱藏檔案):list(); listfiles();
3. file類實用方法(過濾器,遍歷,將txt檔案放到乙個集合中)
(1).檔名過濾器(filenamefilter)、檔案過濾器(filefilter)
class iofilterbyname implements filenamefilterelse
}
//寫檔案過濾器
public iofilterbyendname implements filename
}return list;
4.普通流(重點)
(1).流的基本分類
按流操作的資料:位元組流,字元流
按流的流向:輸入流(讀),輸出流(寫)
位元組流的抽象基類:inputstream,outputstream
字元流的抽象基類:reader,writer
(2).位元組流
^1.檔案位元組流:fileinputstream,fileoutputstream
^2.位元組流的讀取(2種方法,區別在於有無快取)
file dir = new file("d:\\aaa");
fileinputstream fis = new fileinputstream(dir);
方法一:
int len = 0;
while((len = fis.read())!=-1)
bufferedreader br = new bufferedreader(new inputstreamreader(system.in));
注:加快取的意義在於提高效率
注:fileoutputstream fos = new fileoutputstream("d:\\1.txt",true); //此處true意思為續寫
5.其他流
(1).列印流:printstream,printwriter
printwriter pw = new printwriter(system.out,true); //true表示自動重新整理
(2).物件序列化流(物件儲存到裝置上):objectoutputstream
實現物件序列化流必須實現介面:implements serializable(給類提供版本號)
若物件中有屬性不想被序列化:private transient int age;
物件反序列化:objectinputstream
fileoutputstream fos = new fileoutputstream("d:\\1.txt");
objectoutputstream oos = new objectoutputstream(fos);
oos.writeobject(new person("aaa",20));
oos.close();
fos.close();
(3).隨機流:randomaccessfile
seek(數字);通過操作指標完成隨機寫
"r":唯讀許可權 "rw":讀寫許可權都有
randomaccessfile raf = new randomaccessfile("d:\\1.txt","rw");
raf.seek(8);
raf.write("aa".getbytes());
raf.writeint(7);
raf.close();
(4).管道流:pipedinputstream,pipedoutputstream(管道流一般用於多執行緒,單執行緒會死鎖)
可用connect()連線管道輸入輸出流
pipedinputstream pis = new pipedinputstream();
pipedoutputstream pos = new pipedoutputstream();
pis.connect(pos);
new thread(new pipedinputthread(pis)).start();
new thread(new pipedoutputthread(pos)).start();
(5).資料流:datainputstream dataoutputstream
(6).位元組陣列流:bytearrayinputstream bytearrayoutputstream
(7).字元陣列流:chararrayreader chararraywriter
(8).字串流:stringreader stringwriter
java基礎之io流
1.四大抽象基類 位元組流 inputstream outputstream 字元流 writer reader 位元組輸出流寫檔案用其子類fileoutputstream類 構造 fileoutputstream file file 傳遞file物件包裝檔案 string name 傳遞字串型別檔...
java基礎之IO流
io流概念 輸入流 把能夠讀取乙個位元組序列的物件稱為輸入流。輸出流 把能夠寫乙個位元組序列的物件稱為輸出流。通俗理解 對於初學者,可能常常不清楚何時該用輸入流,何時該用輸出流。本人將這兩個流記為 讀入寫出 那麼我就清楚輸入流就有read 讀 方法,輸出流就有write 寫 方法。然後,再思考 讀入...
Java基礎之IO流
1.位元組流 1.輸入流 inputstream 1.子類 fileinputstream 2.輸出流 outputstream 2.子類 fileoutputstream 3.操作流程 1.硬碟 輸入流 記憶體 輸出流 硬碟 2.示例 fileinputstream fis new fileinp...