1. 程式人生 > >黑馬程式設計師 IO流學習筆記一

黑馬程式設計師 IO流學習筆記一

----------android培訓java培訓、java學習型技術部落格、期待與您交流!----------

JavaI/O

IO的發展

I/O是機器獲取或交換資訊的主要渠道。

JDK1.4開始引入了NIO(以塊為單位傳輸資料,新增非同步通訊)。

JDK1.7又添加了新特性NIO.2為該語言增加了非同步通道功能和新的檔案系統API

IO操作類分為四組

  1. 基於位元組操作的 I/O介面:InputStreamOutputStream

  2. 基於字元操作的 I/O介面:WriterReader

  3. 基於磁碟操作的 I/O介面:File

  4. 基於網路操作的 I/O介面:Socket

前兩組根據資料格式,後兩組根據傳輸方式。我們關注的就是如何提高它的執行效率了,而資料格式和傳輸方式是影響效率最關鍵的因素了。

基於位元組操作的I/O介面

一個是操作資料的方式是可以組合使用的,如:

OutputStreamout = new BufferedOutputStream(new ObjectOutputStream(newFileOutputStream("fileName"));

流最終會寫到磁碟或者網路中(其實從上面的類圖中我們發現,寫網路實際上也是寫檔案,只不過寫網路還有一步需要處理就是底層作業系統再將資料傳送到其它地方而不是本地磁碟)。

例:請利用FileInputStream和FileOutputStream類的相關方法實現檔案拷貝。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteFileCopy {

	public static void main(String[] args) throws IOException {
		new ByteFileCopy("ByteFileCopy.java", "ByteFileCopy2.txt");
		copyByteFile();
	}
	private static String resFile;//檔名
	private static String disFile;//拷貝後的檔名
	ByteFileCopy(String resFile,String disFile){
		ByteFileCopy.resFile = resFile;
		ByteFileCopy.disFile = disFile;
	}
	public static  void copyByteFile() throws IOException{
		FileInputStream fileIn = new FileInputStream(resFile);//建立檔案讀取流物件
		FileOutputStream fileOut = new FileOutputStream(disFile);////建立檔案寫入流物件
		byte[] bufIn = new byte[1024];//位元組緩衝區
		int len = 0;
		while ((len = fileIn.read(bufIn))!=-1) {
			fileOut.write(bufIn,0,len);//寫入資料
		}
		fileIn.close();//關閉讀取流
		fileOut.close();//關閉寫入流
	}
}

總結:IO操作類分為四組:1 InputStreamOutputStream;2 WriterReader;3 File;4 Socket。

----------android培訓java培訓、java學習型技術部落格、期待與您交流!----------

相關推薦

黑馬程式設計師 IO學習筆記

----------android培訓、java培訓、java學習型技術部落格、期待與您交流!---------- JavaI/O IO的發展 I/O是機器獲取或交換資訊的主要渠道。 從JDK1.4開始引入了NIO(以塊為單位傳輸資料,新增非同步通訊)。 從J

黑馬程式設計師------IO----複製

將C盤檔案1.txt,複製到D盤。 步驟:1:在D盤裡面建立一個1.txt檔案,用於接受C盤裡面的檔案的資料     2;: 用FileReader fr = new FileReader("c:\\1.txt");,把C盤1.txt檔案關聯起來   &

黑馬程式設計師-----IO學習

------- android培訓、java培訓、期待與您交流! ---------- IO的學習 字元流中的基本父類:Writer和Reader Writer中有OutputStreamWriter中的FileWriter用於操作檔案。 FileWriter fw=new

黑馬程式設計師——IO-File類

------- android培訓、java培訓、期待與您交流! ---------- File類 1.      File類封裝了一個路徑,可以資料夾路徑, 檔案路徑或是一個不存在的路徑 2.      IO流通過File類可以操作資料夾 構造方法 1.      F

黑馬程式設計師_java基礎學習筆記之(建構函式&構造程式碼塊&靜態程式碼塊)的區別

在基礎學習中,我常常會概念模糊,特作此學習筆記,進行一下對比,思路自然就清晰了。 建構函式 建構函式定義:建構函式是與類名相同,但沒有返回值的函式。 例子: class Person {     //建構函式     public Person() {} } 作用:

黑馬程式設計師——java基礎學習筆記——第二天

1..常量與變數: 常量表示不能改變的數值。Java中常量的分類: 1.整數常量。所有整數2.小數常量。所有小數3.布林型常量。較為特有,只有兩個數值。true false。4.字元常量。將一個數字字母或者符號用單引號( ' ' )標識。5.字串常量。將一個或者多個字元

IO學習筆記)之FileWriter與FileReader

IO流用來處理裝置之間的資料傳輸 Java對資料的操作是通過流的方式 Java用於操作流的物件都在IO包中 流按照操作資料分為兩種:位元組流和字元流 流按流向分為:輸入流和輸出流 輸入流和輸出流是相對於記憶體裝置而言 因為記憶體速度快,程式在記憶體中執行,資料從外設(硬碟)讀取到記憶體中為輸入,資料由記憶體

黑馬程式設計師——IO輸入與輸出(

--------------------- <a href="http://edu.csdn.net/heima" target="blank">android培訓</a>、<a href="http://edu.csdn.net/heima

黑馬程式設計師——IO的進一步學習

                                            ------- android培訓、java培訓、期待與您交流! ---------- 今天視訊主要學習了,緩衝區在IO中的運用,以及裝飾模式與 字元流和位元組流的轉換。 import

Java IO學習總結:輸入輸出

Java流類圖結構:   流的概念和作用 流是一組有順序的,有起點和終點的位元組集合,是對資料傳輸的總稱或抽象。即資料在兩裝置間的傳輸稱為流,流的本質是資料傳輸,根據資料傳輸特性將流抽象為各種類,方便更直觀的進行資料操作。 IO流的分類 根據處理資料型別的不同分為:字元流和位元組

IO學習筆記(二)之BufferedWriter與BufferedReader及例項Demo

在之前的學習筆記(http://blog.csdn.net/megustas_jjc/article/details/72853059)中,FileWriter與FileReader的Demo使用的中轉資料buf實際就是緩衝區,是由我們自己建立的。 緩衝區可以提高效率,Java對緩衝區進行了封裝,封裝成了物

Android程式設計師的Flutter學習筆記

作為忠實與較資深的Android汪, 最近抽出了一些時間研究了一下Google的親兒子Flutter, 尚屬皮毛, 只能算是個簡單的記錄吧. Google自2017年第一次提出Flutter, 到2018年Beta, 再加之RN的各種風波與問題, 使得Flutter的熱度不斷上升, 國內不少公司都公佈Flut

黑馬程式設計師——Java集合框架()之迭代器、Collection層次結構等

-----------android培訓、java培訓、java學習型技術部落格、期待與您交流!------------ 集合框架概述 一、什麼是集合框架   1.什麼是集合?   集合是指把具有相同性質的一類東西匯聚成一個整體,簡單說就是指儲存資料的一個容器。集

黑馬程式設計師——Java語言基礎(

-----------android培訓、java培訓、java學習型技術部落格、期待與您交流!------------     對於Java初學者,學好Java語言基礎是非常重要的,這將影響將來程式設計的程式碼質量與效率。那麼Java語言基礎內容包括哪些呢?Java基礎內

黑馬程式設計師——Java面向物件()之匿名物件、程式碼塊、static關鍵字等

   a)子類只繼承父類的預設(預設)建構函式,即無形參建構函式。如果父類沒有預設建構函式,那子類不能從父類繼承預設建構函式。    b)子類從父類處繼承來的父類預設建構函式,不能成為子類的預設建構函式。    c)在建立物件時,先呼叫父類預設建構函式對物件進行初始化,然後呼叫子類自身自己定義的建構函

【成長】程式設計師的成長學習筆記(長更)

筆記來源於“極客時間”陳皓的程式設計師專欄,訂閱專欄可掃碼文章末尾圖。 本文章目的是為了提煉專欄每篇文章的一些結論,以便於回閱思考。對於這些結論的論證有興趣的可以去訂閱專欄。 陳皓·左耳聽風 | 極客時間專欄 本文現更新進度為第2篇

Java程式設計師的JavaScript學習筆記(彙總目錄)

終於完結了,歷時半個月。 內容包括: JavaScript面向物件特性分析,JavaScript高手必經之路。 jQuery原始碼級解析。 jQuery EasyUI原始碼級解析。 稍微休息下,開始搞移動裝置的html+css+javascript。

黑馬程式設計師—Objective-C學習—封裝、繼承、多型

三大特性:成員變數的封裝、繼承、多型 一、封裝 寫成員變數時,不要寫@public,應使用set方法。成員變數儘量不要用@public,不讓外界直接訪問應提供一個方法給外界設定和訪問成員變數的值。即set方法和getf方法。 1、set方法 a、作用:提供一個方法給外界

黑馬程式設計師--Java基礎--集合(

------- android培訓、java培訓、期待與您交流! ---------- 第一部分:集合框架概述 集合的由來:物件用於封裝特有資料,物件多了需要儲存;如果物件的個數不確定,就使用集合容器進行儲存。 Java中有兩種儲存物件:陣列和集合。 它們的區別在於:

黑馬程式設計師--C語言自學筆記---02基礎語法

1.   關鍵字 2.   識別符號 :由字母、數字、下劃線和美元符號組成,不能以字母開頭。 識別符號命名規範: 1)        名稱要有意義,不要隨便命名成aaaa,bbbb等,要命名成userName,uName等; 2)        採用駝峰命名法:即形如