日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

IO流分類以及分別使用字節流、字符流復制文本文件、復制圖片

作者:weixin_44804207 更新時間: 2022-07-13 編程語言

IO流分類以及分別使用字節流、字符流復制文本文件、復制圖片

  • 前言
  • 一、分別使用字節流、字符流復制文本文件
  • 二、分別使用字節流、字符流復制圖片文件
    • 1.字符流可以復制圖片,但是打不開,報錯
    • 2.字節流可以復制圖片,正常使用
  • 總結


前言

IO流分類:
*流向
輸入流 讀取數據 FileReader Reader
輸出流 寫出數據 FileWriter Writer
*數據類型

  • 字節流
    字節輸入流 讀取數據 InputStream
    字節輸出流 寫出數據 OutputStream
  • 字符流
    字符輸入流 讀取數據 Reader
    字符輸出流 寫出數據 Writer。

一、分別使用字節流、字符流復制文本文件

//創建字符輸入流對象
FileReader fr = new FileReader("IODemo.java");
//創建字符輸出流對象
FileWriter fw = new FileWriter("d:\\IODemo.java");
//一次讀寫一個字符
/*
int ch;
while((ch = fr.read()) != -1) {
	fw.write(ch);
	fw.flush();
}*/
//一次讀寫一個字符數組
int len;//用于存儲讀到的字符個數
char[] chs = new char[1024];
while((len = fr.read(chs)) != -1) {
	fw.write(chs,0,len);
	fw.flush();
}
//釋放資源
fw.close();
fr.close();
//創建字節輸入流對象
FileInputStream fis = new FileInputStream("IODemo.java");
//創建字節輸出流對象
FileOutputStream fos = new FileOutputStream("d:\\IODemo.java");

//一次讀寫一個字節
/*int by;
while((by = fis.read()) != -1) {
	fos.write(by);
}*/
//一次讀寫一個字節數組
int len;//存儲讀到的字節個數
byte[] bys = new byte[1024];
while((len = fis.read(bys)) != -1) {
	fos.write(bys,0,len);
}


//釋放資源
fos.close();
fis.close();

二、分別使用字節流、字符流復制圖片文件

1.字符流可以復制圖片,但是打不開,報錯

/**
* 字符流
* @throws FileNotFoundException
* @throws IOException
*/
private static void method() throws FileNotFoundException, IOException {
	//創建字符輸入流對象
	FileReader fr = new FileReader("圖片.jpg");
	//創建字符輸出流對象
	FileWriter fw = new FileWriter("d:\\圖片.jpg");
	//一次讀寫一個字符數組
	int len;//用于存儲讀到的字符個數
	char[] chs = new char[1024];
	while((len = fr.read(chs)) != -1) {
		fw.write(chs,0,len);
		fw.flush();
	}
	//釋放資源
	fw.close();
	fr.close();
}

2.字節流可以復制圖片,正常使用

/**
* 字節流
 * @throws FileNotFoundException
 * @throws IOException
 */
private static void method2() throws FileNotFoundException, IOException {
	//創建字節輸入流對象
	FileInputStream fis = new FileInputStream("圖片.jpg");
	//創建字節輸出流對象
	FileOutputStream fos = new FileOutputStream("d:\\圖片.jpg");
	
	//一次讀寫一個字節數組
	int len;//用于存儲讀到的字節個數
	byte[] bys = new byte[1024];
	while((len = fis.read(bys)) != -1) {
		fos.write(bys,0,len);
	}
	
	//釋放資源
	fos.close();
	fis.close();
}


總結

  • 二進制文件只能使用字節流進行復制,圖片、視頻(使用windows自帶記事本打開讀不懂的)
  • 文本文件的復制既可使用字符流,也可以使用字節流

原文鏈接:https://blog.csdn.net/weixin_44804207/article/details/125724471

欄目分類
最近更新