一 IO流框架
二 IO知識點
(一) 基本概念
1 IO流
A 什麼是IO流
I/O,即輸入(Input)輸出(Output),IO流指的是數據像連綿的流體一樣進行傳輸。
B 作用
在本地磁盤或網絡上傳輸(讀/寫)數據
C 分類
按數據流向分: 輸入流 輸出流
按操作方式分: 字節流: InputStream OutputStream
字符流: Reader Writer
2 IO流體系
3 IO流操作異常
A 什麼是異常: 程序出錯
B 異常分類: 異常Exception 和錯誤Error
C 處理異常: 拋出或捕獲
4 File類
A 概念
文件,文件夾,一個File對象代表磁盤上的某個文件或文件夾
B 構造方法
File(String pathname)
File(String parent, String child)
File(File parent, String child)
C 成員方法
createNewFile():創建文件
mkdir()和mkdirs():創建目錄
isDirectory():判斷File對象是否爲目錄
isFile():判斷File對象是否爲文件
exists():判斷File對象是否存在
getAbsolutePath():獲取絕對路徑
從本地磁盤開始的路徑
舉例:C:\Users\itcast\Desktop
getPath():獲取文件的相對路徑
相對某一位置的路徑
Java項目中,相對路徑從項目名開始
getName():獲取文件名
list():獲取指定目錄下所有文件(夾)名稱數組
listFiles():獲取指定目錄下所有文件(夾)File數組
(二) IO流的使用
1 數據流讀寫步驟:
//1 創建字符/字節輸入流對象, 關聯數據源文件
//2 創建字符/字節輸出流對象, 關聯目的地文件
//3 定義變量,記錄讀取到的內容
//4 循環讀取, 只有條件滿足就一直讀,將讀到的內容賦值給變量
//5 將讀到的內容寫入目的地文件中
//6 釋放資源
2 在實際操作中, 我們最常用高效字符流和高效字節流.
A 字符緩衝流拷貝文件的標準代碼: 一次讀取一個字符數組
高效字符流: 字符緩衝流自帶緩衝區, 大小是8192個字符, 就是16KB
底層: 是按字符數組進行讀寫的
public class TestUtils {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
int len;
while((len = br.read()) != -1) {
bw.write(len);
}
br.close();
bw.close();
}
}
public class TestUtils {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
char [] chs = new char[2048];
int len;
while((len = br.read(chs)) != -1) {
bw.write(chs, 0, len);
}
br.close();
bw.close();
}
}
B 字節緩衝流拷貝圖片的標準代碼: 一次讀取一個字節數組
高效字節流: 字節緩衝流自帶緩衝區, 大小是8192個字節, 就是8KB
底層: 是按字節數組進行讀寫的
public class TestUtils {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\Public\\Pictures\\Sample Pictures\\flower.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\flower.jpg"));
int len;
while((len = bis .read()) != -1) {
bos.write(len);
}
bis .close();
bos.close();
}
}
public class TestUtils {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\Public\\Pictures\\Sample Pictures\\flower.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\flower.jpg"));
byte[] bytes = new bytes [2048];
int len;
while((len = bis .read(bytes )) != -1) {
bos.write(bytes , 0, len);
}
bis.close();
bos.close();
}
}
C 字符緩衝流拷貝文件 一次讀取一行
public class TestUtils {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
String str;
while((str= br.readLine() ) != null) {
bw.write(str);
//注意: 不同操作系統有不同的換行符
bw.newLine();
}
br.close();
bw.close();
}
}