Java的簡單理解(22)---處理流
處理流
- 節點流和處理流的關係
- 節點流處於IO操作的第一線,所有操作必須通過它們進行
- 處理流可以對其他流進行處理(提高效率和操作靈活性)
1.位元組緩衝流
BufferedInputStream
BufferedOutputStream
public void fileCopy01() {
// 1.原始檔
File file1 = new File("E:/xp/test/demo1.txt");
File file2 = new File("E:/xp/test/demo2.txt");
// 2.選擇流
try {
InputStream is = new BufferedInputStream(new FileInputStream(file1));
OutputStream os = new BufferedOutputStream(new FileOutputStream(file2));
byte[] car = new byte[1024];
int len = 0;
while ((len = is.read(car)) != -1) {
os.write(car,0,len);
}
os.flush();
os.close();
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
2.字元緩衝流
BufferedReader
BufferedWriter
新方法:
readLine() 讀取一行
newLine() 換行
public void fileCopy02() {
// 1. 原始檔
File file01 = new File("E:/xp/test/demo1.txt");
File file02 = new File("E:/xp/test/demo2.txt");
// 2.選擇流(有新方法,就不要使用多型)
try {
BufferedReader reader = new BufferedReader(new FileReader(file01));
BufferedWriter writer = new BufferedWriter(new FileWriter(file02));
String line = null;
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine(); // 換行
}
writer.flush();
writer.close();
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
3. 轉換流:位元組流轉為字元流 處理亂碼(編碼集,解碼集)
編碼與解碼都是以程式為中心來說的
1. 編碼與解碼概念
- 編碼:字元--->編碼字符集--->二進位制
- 解碼:二進位制--->解碼字符集--->字元
2. 亂碼
- 編碼與解碼的字符集不統一
- 位元組缺少,長度丟失
3. 檔案亂碼
/**
* 編碼與解碼字符集不統一導致亂碼
* @throws UnsupportedEncodingException
*/
public void test() throws UnsupportedEncodingException {
// 編碼: char ---> byte
String str = "中國";
// 解碼: byte ---> char
byte[] data = str.getBytes();
// 編碼與解碼字符集統一
System.out.println(new String(data));
// 設定編碼字符集
data = str.getBytes("utf-8");
// 不統一,出現亂碼
System.out.println(new String(data));
// 編碼
byte[] data2 = str.getBytes("utf-8");
// 解碼
str = new String(data2,"utf-8");
// 編碼和解碼統一
System.out.println(str);
}
/**
* 位元組數不完整 導致的亂碼
*/
public void test() {
String str = "中國";
byte[] data = str.getBytes();
// 位元組數不完整 導致的亂碼
System.out.println(new String(data,0,3));
}
轉換流
InputStreamReader 讀取位元組流轉換為字元流
OutputStreamWriter
public void test() {
try {
// 1. 原始檔
File file = new File("E:/xp/test/Demo1.java");
// 2. 位元組流
FileInputStream fileInputStream = new FileInputStream(file);
// 3. InputStreamReader是位元組流到字元流的橋樑,並使用指定的charset將其解碼為字元
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
// 4. BufferedReader從字元輸入流中讀取文字,緩衝字元,以提供字元,陣列和行的高效讀取
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
// 1. 輸出原始檔
File file1 = new File("E:/xp/test/Demo2.java");
// 2. 位元組輸出流
OutputStream outputStream = new FileOutputStream(file1);
// 3. 位元組流轉換為字元流
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream,"utf-8");
// 4. 位元組緩衝流
BufferedWriter writer = new BufferedWriter(outputStreamWriter);
String info = null;
while ((info = bufferedReader.readLine()) != null) {
System.out.println(info);
writer.write(info);
}
bufferedReader.close();
bufferedWriter.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
相關文章
- 簡單的字串處理字串
- Java的簡單理解(2)Java
- java 如何簡單快速處理 json 中的資料JavaJSON
- java 如何簡單快速處理 xml 中的資料JavaXML
- java處理流 和節點流(在位元組流和字元流中,又分為處理流和節點流)Java字元
- 事件流處理 (ESP) 與 Kafka 簡介事件Kafka
- android簡單的圖形特效處理Android特效
- 基於Opencv的簡單影像處理OpenCV
- TensorFlow進行簡單的影像處理
- 簡單實現批處理
- Java中的並行流處理與效能提升Java並行
- java介面和抽象類的簡單理解Java抽象
- Java提高篇(二):IO位元組流、字元流和處理流Java字元
- 簡析5G時代的MART流處理
- 包含(處理)HTML的最簡單方法包括HTML
- iOS換膚功能的簡單處理框架iOS框架
- 用Java實現Stream流處理中的滑窗Java
- 關於Java註解(annotation)的簡單理解Java
- 關於MongoDB的簡單理解(二)--Java篇MongoDBJava
- 簡單理解Java中的4種迴圈Java
- 影象處理庫GPUImage簡單使用GPUUI
- 翻譯 | Java流中如何處理異常Java
- Streams 流處理
- 使用Lambda表示式處理簡單的業務
- 簡單的全域性異常統一處理
- Rust中錯誤處理的最簡單指南Rust
- 使用python進行簡單的媒體處理Python
- ultracompare22,檔案處理
- MySQL:簡單記錄訊號處理MySql
- Flink的流處理API(二)API
- Flink流處理的演變
- ThreadLocal的簡單理解thread
- Java入門系列-22-IO流Java
- 基於gulp的一個簡單的處理多個api域名環境的開發工作流API
- JAVA基礎之七-Collection和它的並行和流處理Java並行
- 簡單介紹Python 處理錯誤的原則Python
- 圖片處理擴充套件 Grafika 的簡單使用套件
- 圖形影像處理之簡單圖片