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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...