java學習筆記IO之位元組輸入輸出流

来源:http://www.cnblogs.com/xuzhaocai/archive/2017/12/20/8068436.html
-Advertisement-
Play Games

IO位元組輸入輸出流 OutputStream:位元組輸出流 該抽象類是所有位元組輸出流的超類; 定義了一些共性的成員方法: 1.寫入一個位元組 2.寫入位元組數組 3.寫入位元組數組的一部分 4.刷新輸出流,並強制寫出所有緩衝的輸出位元組 5.關閉輸出流並釋放與之有關的所有系統資源 FileOutputStre ...


IO位元組輸入輸出流

OutputStream:位元組輸出流

  該抽象類是所有位元組輸出流的超類;

  定義了一些共性的成員方法:

    1.寫入一個位元組

void write(int b);//b表示位元組

    2.寫入位元組數組

void write(byte[]  b);//寫入一個位元組數組

    3.寫入位元組數組的一部分

void write(byte[] b,int off, int len);//off 表示起始索引,len表示寫幾個

    4.刷新輸出流,並強制寫出所有緩衝的輸出位元組

void flush();

    5.關閉輸出流並釋放與之有關的所有系統資源

void close();

FileOutputStream :文件位元組輸出流 extends OutputStream

  作用:

    把記憶體中的位元組數據,寫入到文件中保存

  構造方法:

    1.創建一個指向File對象表示的文件中寫入數據的文件輸出流

 

FileOutputStream(File  file);

    2.創建一個指定名稱的文件中寫入數據的輸出文件流

FileOutputStream(String  name);//通俗說就是個文件路徑名

  構造方法的作用(也就是他乾什麼事)

    1.會根據構造方法的參數,創建一個文件,如果沒有設置追加寫的值,文件已經存在的話,就會覆蓋

    2.創建一個FileOutputStream對象

    3.將這個對象指向目的地

  IO讀寫的過程:

java程式--->JVM--->OS(操作系統)--->調用方法進行讀寫文件

  FileOutputStream的使用步驟:

    

1.創建對象,在構造方法中綁定寫入數據的目的地
2.調用對象中的方法write,把數據寫入到文件中
3.釋放資源

 

  註意:

    位元組流操作的是位元組,所以會直接把位元組寫入到文件中;

    字元流操作的是字元,先會將字元寫到記憶體的緩衝區中,進行轉換,轉換為位元組,再使用底層的位元組流將數據寫入到文件中

  字元輸出流使用實例1

1 FileOutputStream  fos= new FileOutputStream("a.txt");//a.txt相對路徑,相對項目目錄下
2 fos.write(97);//寫入一個位元組
3 fos.close();//關閉流並釋放資源

  使用實例2:

FileOutputStream fos= new FileOutputStream(new File('a.txt'));//構造方法中傳遞一個File文件對象
byte[]  b="你好".getBytes();//使用String類方法將字元串轉換成位元組數組
fos.write(b);//寫入一個位元組數組
fos.close();//關閉資源

  追加寫與換行

    1.追加寫:boolean  append 參數追加寫開關,true是追加,false是不追加,預設是false

    

FileOutputStream(File file, boolean  append);
FileOutputStream(String pathname,boolean append);

    2.換行

    win系統:\r\n

    linux:/n

    mac:\r

    可以使用System類的靜態方法動態獲取換行符

  

System.getProperty("line.separator");

InputStream:位元組輸入流,該抽象類是所有位元組輸入流的超類

  共性的成員方法:

    1.讀取一個位元組並返回,沒有位元組返回-1

int  read();

    2.讀取一定量的位元組數,並存儲到位元組數組中,返回讀取到的位元組數

int  read(byte[]  b);

    3.關閉輸入流並釋放與之有關的所有系統資源

void close();

FileInputStream:文件位元組輸入流 java.lang.FileInputStream  extends  InputStream

  作用:將文件中的數據,以位元組的形式讀取到記憶體中

  構造方法:

    

FileInputStream(File  file);//數據源使用File對象
FileInputStream(String  pathname);//數據源是一個文件路徑

 

  構造方法的作用:

    1.創建一個位元組輸入流的對象

    2.會將這個對象指向構造方法中要讀取的數據源

  FileInputStream使用步驟:

1.創建對象,綁定構造方法中的數據源
2.調用位元組輸入流的方法read,來讀取文件
3.釋放資源

  FileInputStream讀取單位元組實例:

1 //創建對象,綁定源文件
2 FileInputStream  fis= new FileInputStream("a.txt");//a.txt是存在的
3 //讀取單位元組。
4 int len=0;
5 while((len=fis.read())!=-1){
6   System.out.println((char)len);//這裡的輸出就只能是單位元組字元,不能是中文,因為一個中文2個位元組,讀一個位元組就輸出會亂碼;  
7 }
8 //關閉流資源
9 fis.close();

  FileInputStream讀取位元組數組實例:

  

//創建輸入流對象
FileInputStream  fis=new FileInputStream(new File("a.txt"));
//創建要接收位元組的數組
byte[]  b= new byte[1024];//這裡一般是1024或者其整數倍
int  len =0;//這裡的len是每次讀取的有效個數

while((len= fis.read(b))!=-1){
    
    System.out.println(new String(b,0,len));//這裡使用String類的構造方法,b是位元組數組,0是開始索引,len是個數    
}
/*
註意:
1.位元組數組的作用:起到緩衝的作用,一次讀取多個位元組存在數組中,提高效率,這個位元組數組的長度一般定義為1024或者是1024的倍數
2返回值int是什麼:每次讀取的有效位元組個數
*/

 

 

 

 

 

 

 

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 判斷字元串是否是這樣組成的,第一個必須是字母,後面可以是字母、數字、下劃線,總長度為5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test("a1a__a1a__a1a__a1a__"); var reg = /^[a-zA-Z][a-z ...
  • 1.高效的通信組件(優秀的非同步socket框架) 2.快速存儲(redis等) 3.消息路由功能(消息分發) 4.健康監測(heartbeat),故障轉移 5.廣播(broadcast),發佈(publish),訂閱(subscript),確認(ack)功能 6.授權 ...
  • 本篇主要是來分享從頭開始搭建一個dubbo+zookeeper平臺的過程,其中會簡要介紹下dubbo服務的作用。 首先,看下一般網站架構隨著業務的發展,邏輯越來越複雜,數據量越來越大,交互越來越多之後的常規方案演進歷程。 其次,當服務越來越多之後,我們需要做哪些服務治理? 最後,是dubbo的架構圖 ...
  • 1、前言 PHP加密方式分為單項散列加密,對稱加密,非對稱加密這幾類。 像常用的MD5、hash、crypt、sha1這種就是單項散列加密,單項散列加密是不可逆的。 像URL編碼、base64編碼這種就是對稱加密,是可逆的,就是說加密解密都是用的同一秘鑰。 除此外就是非對稱加密,加密和解密的秘鑰不是 ...
  • module定義 對於可復用的函數集,可以對其進行分組,整合到一個或者若幹個.py文件中,而在python中,一個.py文件就叫做一個模塊。變數,函數。 module註意點 為了避免命名衝突,python中引入目錄組織的方式,這裡稱之為包(package) 每個包下都會有一個__init__.py文 ...
  • 一、Java開發環境概述 1、JDK:Java開發工具包(Java Development Kit),包括java編譯器、java運行時環境和常用的類庫 2、JRE:Java運行時環境(Java Runtime Environment) 二、跨平臺特性 1、平臺指的是操作系統(Windows,Lin ...
  • 編者按:README:此代碼為用戶登陸界面,添加了尋求幫助選項。1.學習了基本數據類型,string, int,以及while迴圈,continue, break, if, elif, else條件語句,“x".format(x)變數替代2.上網搜的dictionary用法,由於用的是python3 ...
  • 學而不思則罔,思而不學則殆。 mybatis 增刪改查,用到了MyEclipse中自帶的Junit4做單元測試,沒啥難度,作為練習。關於jar包和目錄結構請參考上一篇,這裡直接上代碼。 下一篇會寫關於配置文件優化,聯合查詢,以及使用註解的方式,客官們不要著急! ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...