我如何才能在 flutter 中只读取一个文件内容的间隔?
How I can read only a interval of a file content in flutter?
我正在处理一个文件,以便在 flutter 中将信息存储在应用程序中。出于示例目的考虑一个文件 .txt,其中包含以下项目作为字符串:
[ value 1, value 2, value 3, value 4, ... value 500, ]
我的应用程序在读取时应该非常快,我正在寻找一种方法来只读取此文件的某个范围,例如从第 0 项到第 20 项。你有办法做到这一点 without 将文件的整个值放入 var 中?我想在读到极限后立即停止阅读。
目前我用 path provider:
这样做
Future<String> load() async {
final Directory directory = await getApplicationDocumentsDirectory();
final File file = File('${directory.path}/names.txt');
return await file.readAsString();
}
如果您只想读取文件的一部分,您需要 random access, and thus you need to use File.open
/File.openSync
to obtain a RandomAccessFile
:
var file = File('path/to/file');
var randomAccessFile = file.openSync();
try {
var bytes = randomAccessFile.readSync(20); // Read the first 20 bytes.
...
} finally {
randomAccessFile.closeSync();
}
或者,您可以使用 File.openRead
创建一个 Stream
来读取指定文件的一部分。
我正在处理一个文件,以便在 flutter 中将信息存储在应用程序中。出于示例目的考虑一个文件 .txt,其中包含以下项目作为字符串:
[ value 1, value 2, value 3, value 4, ... value 500, ]
我的应用程序在读取时应该非常快,我正在寻找一种方法来只读取此文件的某个范围,例如从第 0 项到第 20 项。你有办法做到这一点 without 将文件的整个值放入 var 中?我想在读到极限后立即停止阅读。 目前我用 path provider:
这样做Future<String> load() async {
final Directory directory = await getApplicationDocumentsDirectory();
final File file = File('${directory.path}/names.txt');
return await file.readAsString();
}
如果您只想读取文件的一部分,您需要 random access, and thus you need to use File.open
/File.openSync
to obtain a RandomAccessFile
:
var file = File('path/to/file');
var randomAccessFile = file.openSync();
try {
var bytes = randomAccessFile.readSync(20); // Read the first 20 bytes.
...
} finally {
randomAccessFile.closeSync();
}
或者,您可以使用 File.openRead
创建一个 Stream
来读取指定文件的一部分。