dart:io
庫中File
類的用法介紹如下。
對文件係統上文件的引用。
File
包含可以對其執行操作的path。您可以使用從 FileSystemEntity 繼承的屬性 parent 獲取文件的父目錄。
使用路徑名創建一個新的File
對象,以從您的程序訪問文件係統上的指定文件。
var myFile = File('file.txt');
File
類包含用於操作文件及其內容的方法。使用此類中的方法,您可以打開和關閉文件、讀取和寫入文件、創建和刪除文件以及檢查文件是否存在。
讀取或寫入文件時,您可以使用流(使用 openRead )、隨機訪問操作(使用 open )或方便的方法,例如 readAsString ,
此類中的大多數方法都以同步和異步對的形式出現,例如 readAsString 和 readAsStringSync 。除非您有特定原因使用方法的同步版本,否則請首選異步版本以避免阻塞您的程序。
如果路徑是鏈接
如果 path 是符號鏈接,而不是文件,則 File
的方法對鏈接的最終目標進行操作,但在鏈接上操作的 delete 和 deleteSync 除外。
從文件中讀取
以下代碼示例使用異步 readAsString 方法將文件中的全部內容作為字符串讀取:
import 'dart:async';
import 'dart:io';
void main() {
File('file.txt').readAsString().then((String contents) {
print(contents);
});
}
讀取文件的更靈活和有用的方法是使用 Stream 。使用 openRead 打開文件,這將返回一個流,該流以字節塊的形式提供文件中的數據。讀取流以處理可用的文件內容。您可以連續使用各種轉換器將文件內容處理為所需的格式,或準備輸出。
您可能希望使用流來讀取大文件、使用轉換器操作數據或與其他 API 兼容,例如 WebSocket s。
import 'dart:io';
import 'dart:convert';
import 'dart:async';
void main() async {
final file = File('file.txt');
Stream<String> lines = file.openRead()
.transform(utf8.decoder) // Decode bytes to UTF-8.
.transform(LineSplitter()); // Convert stream to individual lines.
try {
await for (var line in lines) {
print('$line: ${line.length} characters');
}
print('File is now closed.');
} catch (e) {
print('Error: $e');
}
}
寫入文件
要將字符串寫入文件,請使用 writeAsString 方法:
import 'dart:io';
void main() async {
final filename = 'file.txt';
var file = await File(filename).writeAsString('some content');
// Do something with the file.
}
您還可以使用 Stream 寫入文件。使用 openWrite 打開文件,它會返回一個 IOSink,您可以將數據寫入該文件。請務必使用IOSink.close 方法關閉水槽。
import 'dart:io';
void main() {
var file = File('file.txt');
var sink = file.openWrite();
sink.write('FILE ACCESSED ${DateTime.now()}\n');
// Close the IOSink to free system resources.
sink.close();
}
異步方法的使用
為避免程序意外阻塞,有幾個方法是異步的並返回 Future 。例如,獲取文件長度的 length 方法返回 Future 。等待未來準備好後得到結果。
import 'dart:io';
void main() async {
final file = File('file.txt');
var length = await file.length();
print(length);
}
除了長度之外,exists、lastModified、stat 和其他方法都是異步的。
其他資源
-
Library 之旅的Files and directories 部分。
-
Write Command-Line Apps 是關於編寫 命令行 應用程序的教程,其中包含有關文件和目錄的信息。
- 實現的類型
相關用法
- Dart FileList.first用法及代碼示例
- Dart FileList.length用法及代碼示例
- Dart FileSystemEntity用法及代碼示例
- Dart FileSystemEntity.resolveSymbolicLinks用法及代碼示例
- Dart File.renameSync用法及代碼示例
- Dart FileSystemEntity.resolveSymbolicLinksSync用法及代碼示例
- Dart FileList.elementAt用法及代碼示例
- Dart File.rename用法及代碼示例
- Dart FileList.last用法及代碼示例
- Dart Finalizer.attach用法及代碼示例
- Dart Finalizable用法及代碼示例
- Dart Finalizer用法及代碼示例
- Dart FixedSizeListIterator.current用法及代碼示例
- Dart Finalizer.detach用法及代碼示例
- Dart FixedSizeListIterator.moveNext用法及代碼示例
- Dart Future用法及代碼示例
- Dart Float32List.view用法及代碼示例
- Dart Future.doWhile用法及代碼示例
- Dart Future.any用法及代碼示例
- Dart Future.value用法及代碼示例
- Dart Float32x4List.sublist用法及代碼示例
- Dart Function.apply用法及代碼示例
- Dart Future.wait用法及代碼示例
- Dart Future.whenComplete用法及代碼示例
- Dart Future.catchError用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 File class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。