天天看點

dart系列之:如絲滑般柔順,操作檔案和目錄

目錄

簡介

File

讀取整個檔案

以流的形式讀取檔案

随機通路

檔案的寫入

處理異常

總結

檔案操作是IO中非常常見的一種操作,那麼對應dart語言來說,操作檔案是不是很簡單呢?實際上dart提供了兩種讀取檔案的方式,一種是一次性全部讀取,一種是将檔案讀取為流。

一次性讀取的缺點是需要将檔案内容一次性全部載入到記憶體中,如果遇到檔案比較大的情況,就會比較尴尬。是以還需要流式讀取檔案的方式。一起來看看dart中這兩種檔案的讀取方式吧。

事實上dart中有很多地方都有File這個類,這裡我們要講解的File類是dart:io包中的。

File代表一個整體的檔案,他有三個構造函數,分别是:

其中最常用的就是第一個構造函數。

我們可以這樣來構造一個檔案:

有了檔案之後,就可以調用File中的各種讀取方法。

檔案讀取本身有兩種形式,一種是文本,一種是二進制。

如果是文本檔案,File提供了readAsString的方法,将整個檔案讀取為字元串。

我們可以這樣使用:

另外,我們還可以一行一行的對檔案進行讀取:

結果傳回的是一個List,list中表示檔案每行的内容。

上面兩個方法是異步的方法,File還提供了兩個同步的方法:

如果檔案是二進制,那麼可以使用readAsBytes或者同步的方法readAsBytesSync:

dart中表示二進制有一個專門的類型叫做Uint8List,他實際上表示的是一個int的List。

還是剛剛的檔案,我們看下怎麼以二進制的形式進行讀取:

上面我們講到的讀取方式,都是一次性讀取整個檔案,缺點就是如果檔案太大的話,可能造成記憶體空間的壓力。

是以File為我們提供了另外一種讀取檔案的方法,流的形式來讀取檔案.

相應的定義方法如下:

我們看一個基本的使用:

一般情況下檔案是順序通路的,但是有時候我們需要跳過某些前面的資料,直接跳轉到目标位址,則需要對檔案進行随機通路。

dart提供了open和openSync兩個方法來進行随機檔案讀寫:

RandomAccessFile提供了對檔案的随機讀寫方法。非常好用。

寫入和檔案讀取一樣,可以一次性寫入或者獲得一個寫入句柄,然後再寫入。

一次性寫入的方法有四種,分别對應字元串和二進制:

句柄形式可以調用openWrite方法,傳回一個IOSink對象,然後通過這個對象進行寫入:

預設情況下寫入是會覆寫整個檔案的,但是可以通過下面的方式來更改寫入模式:

雖然dart中所有的異常都是運作時異常,但是和java一樣,要想手動處理檔案讀寫中的異常,則可以使用try,catch:

以上就是dart中的檔案操作了。

本文已收錄于 http://www.flydean.com/23-dart-file/ 最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現! 歡迎關注我的公衆号:「程式那些事」,懂技術,更懂你!