3.15@Pointcut的表示式-@within
阿新 • • 發佈:2020-10-18
IO流
I/O 輸入、輸出 流(資料流動)
資料流動的方向 讀資料(輸入input) 寫資料(輸出output)
檔案流 字元流 物件流 網路流.......
1. File
與電腦上的檔案或資料夾產生一一對應的對映關係
檔案:
電腦上的一種儲存形式
檔案有不同的格式 .txt .doc .ppt .mp4 .jpg .rar ...
資料夾---目錄路徑
1.檔案或目錄路徑名(資料夾)的抽象表示形式
2.File與真實硬碟中的檔案或資料夾 不是一個東西
File是記憶體中的一個物件<--對映-->硬碟上的檔案或資料夾
2.File類中的常用方法
canRead() canWrite() isHidden() isFile() isDirectory()
length()
獲取檔案中位元組的個數
lastModified()
獲取檔案最後的修改時間-毫秒值
*getAbsolutePath()
獲取檔案的絕對路徑 d://text
絕對路徑-->可以通過完整的字串 定位碟符 資料夾 檔案
相對路徑沒有碟符的寫法-->當前專案的所在位置找尋(F:\workplace\SSM\javase\text\22.txt)
*getName()
獲取檔案的名字 text.txt
creatNewFile() 建立檔案
建立資料夾
madkir()
外層沒有不能建立
madkirs()
外層沒有,也會同時建立
*getParent()
獲取當前file的父檔名
**getParentFile()
獲取當前file的父親物件
String[] names=list()
獲取當前file物件所有子元素的名字
File[] files=listFiles()
獲取當前file的所有的兒子物件
delete()
刪除檔案或空的資料夾,不能刪掉帶元素的資料夾
1.資料夾的遍歷---需要遞迴
2.什麼叫檔案流
讀取檔案中的內容 向檔案中中寫內容
檔案輸入流 檔案輸出流
位元組型檔案輸入流 位元組型檔案輸出流
字元型檔案輸入流 字元型檔案輸出流
stream
1.io
流按照方向(功能)來區分
in(讀取) out(寫入)
操作的目標來區分
檔案流 陣列流 字串流 資料流 物件流 網路流......
2.位元組IO流:
1.位元組型檔案輸入流:
FileInputStream
1.包 java.io
2.父類--InputStream
3.建立物件
呼叫一個帶File型別的構造方法
File file = new File( new File());
呼叫一個帶String型別的構造方法
File file = new File("d://test//test.txt");
4.常用方法:
int code=read() 每次從流管道中讀取一個位元組 位元組的code碼
*int count=read(byte[]) 每次從管道中讀取若干個位元組 存入陣列內 返回有效元素個數
new byte[1024] 通常建立的陣列 1kb-8kb之間 1kb-1024位元組
int count=available() 返回流管道中還有多少快取的位元組數
*skip(long n) 跳過幾個位元組 再讀取
*close() 關閉流通道 必須要做 放到finally 注意程式碼的健壯性(考慮空指標)
多執行緒-->利用幾個執行緒同時讀取檔案
10000位元組 5個小人同時讀取
1-2000 2001-4000 4001-6000......
2.位元組型檔案輸出
FileOutStream
1.java.io
2.繼承OutputStream 所有位元組型輸入流的父類
3.建立物件
new FileOutStream(File) new FileOutStream(File,append)
new FileOutStream(String) new FileOutStream(String,append)
4.常用方法:
write(int code);將給定的code對應得字元寫入檔案
write(byte[]) 將陣列中的全部檔案寫入檔案
flush() 將管道內的位元組推入檔案
close() 關閉流通道
3.特點
位元組流優點在於什麼型別的檔案都可以處理
缺點在於處理純文字檔案時可能會產生亂碼問題
3.字元型IO流
只能操作純文字檔案.txt 。properties /.doc(不是)
FileReader
1.java.io
2.繼承 InputStreamReader Reader
3.構造方法(file,string)
reead()
read(char[])
FileWriter
2.繼承 OutputStreamWriter Writer
3.構造方法
file boolean
string boolean
4.常用方法
write(int)
write(char[])
write(string)
flush close
編碼問題:
位元組型: String s="fe";
byte[]=s.getBytes("utf-8");
new String(byte[],"utf-8");
字元型:通過修改檔案或ide編碼格式
4.檔案流
讀取檔案中的資訊in 將資訊寫入檔案中out
檔案流按照讀取或寫入的單位(位元組數)大小來區分
位元組型檔案流(1位元組)
FileInputStream/FileOutStream
字元型檔案流(2位元組-1字元)
FileReader/FileWriter
讀取檔案中的內容 向檔案中中寫內容
檔案輸入流 檔案輸出流
位元組型檔案輸入流 位元組型檔案輸出流
字元型檔案輸入流 字元型檔案輸出流
容器
1.容量 只能存一份
2.陣列 儲存好多個 資料型別統一
3.集合 儲存好多個 儲存後個數還能改變 泛型--資料型別統一
如上三個都是java中的型別(物件-->記憶體)
都儲存在記憶體中 程式執行完畢 虛擬機器停止的時候 記憶體空間就回收了
4.檔案 儲存好多資訊
檔案時儲存在硬碟上的-->永久性儲存
資料雖然安全 但檔案不在記憶體中 需要通過io操作檔案
5.緩衝流
在流管道內增加快取的資料
讓我們使用流讀取的文字更加的流暢
高階流----->建立通過低階流
BufferedInputStream/BufferedOutputStream
BufferedReader/BufferedWriter
BuffererInputStream
構建方式 使用低階流 構建
基本使用與低階流的方法完全一致
read() skip() available() close()
BufferedOutputStream
構建方式 使用低階流構建 注意 緩衝流構建的時候沒有boolean型別的引數
基本使用與低階流的方法完全一致
write() flish() close()
BufferedReader
readLine() -一次讀一行
BufferedWriter
newLine()-換行
總結
InputStream OutputStream
Reader Writer
檔案流
低階
位元組型 FileInputStream FileOutPutStream
字元型 FileReader FileWriter
*緩衝
位元組型 BufferedInputStream BufferedOutputStream
字元型 BufferedReader BufferedWriter
陣列流
byte陣列 ByteArrayInputStream ByteArrayOutputStream
char陣列 CharArrayReader CharArrayWriter
字串流
StringReader StringWriter
資料流
DataInputStream DataOutPutStream
*物件流-將物件直接存入檔案中
ObjectInputStream ObjectOutputStream
物件的序列化/反序列化
物件的序列化指的是:將一個完整的物件拆分成位元組碎片 記錄在檔案中
反序列化:將檔案中記錄的物件 反過來組合成一個完整的物件
如果要將物件序列化到檔案中
需要讓物件實現Serializable介面(示意性介面)
如果要將物件反序列化
需要給物件提供一個序列化的版本號
private long serialVersionUID=任意l;(也可以不寫)