當前位置:編程學習大全網 - 編程語言 - Flutter 之 文件操作(二十九)

Flutter 之 文件操作(二十九)

Dart的 IO 庫包含了文件讀寫的相關類,它屬於 Dart 語法標準的壹部分,所以通過 Dart IO 庫,無論是 Dart VM 下的腳本還是 Flutter,都是通過 Dart IO 庫來操作文件的,不過和 Dart VM 相比,Flutter 有壹個重要差異是文件系統路徑不同,這是因為Dart VM 是運行在 PC 或服務器操作系統下,而 Flutter 是運行在移動操作系統中,他們的文件系統會有壹些差異。

Android 和 iOS 的應用存儲目錄不同, PathProvider 插件提供了壹種平臺透明的方式來訪問設備文件系統上的常用位置。該類當前支持訪問兩個文件系統位置:

File代表壹個整體的文件,他有三個構造函數,分別是:

文件讀取本身有兩種形式,壹種是文本,壹種是二進制。

2.2.1 讀取文本內容

如果是文本文件,File提供了readAsString、readAsLines、readAsStringSync、readAsLinesSync方法,讀取文本內容

readAsString 壹次性讀取所有文本

readAsLines 壹行行的讀取文本

結果返回的是壹個List,list中表示文件每行的內容

readAsStringSync、readAsLinesSync同步讀取文本

2.2.2 讀取二進制內容

如果文件是二進制,那麽可以使用readAsBytes或者同步的方法readAsBytesSync:

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

上面提到的讀取方式,都是壹次性讀取整個文件,缺點就是如果文件太大的話,可能造成內存空間的壓力。

所以File為我們提供了另外壹種讀取文件的方法,流的形式來讀取文件.

示例

dart提供了open和openSync兩個方法來進行隨機文件讀寫:

寫入和文件讀取壹樣,可以壹次性寫入或者獲得壹個寫入句柄,然後再寫入。

壹次性寫入的方法有四種,分別對應字符串和二進制

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

默認情況下寫入是會覆蓋整個文件的,但是可以通過下面的方式來更改寫入模式:

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

我們還是以計數器為例,實現在應用退出重啟後可以恢復點擊次數。 這裏,我們使用文件來保存數據:

1.引入PathProvider插件;在pubspec.yaml文件中添加如下聲明:

執行 flutter pub get

2.實現如下

參考: /p/92b09aaecf17

https://book.flutterchina.club/chapter11/file_operation.html

  • 上一篇:極限編程的使用
  • 下一篇:為什麽很多人寧願拿著4000多的工資當白領,也不願意去月薪7000多的工廠?
  • copyright 2024編程學習大全網