【问题标题】:Reading from text files until String max length从文本文件中读取直到字符串最大长度
【发布时间】:2021-01-02 20:55:47
【问题描述】:

我是 Dart 编码的新手,所以请多多包涵。我从 Flutter API 中搜索了如何使用 readAsString() 函数读取文件。它表示它将读取文件的全部内容并将其作为字符串返回。但是,是否存在某种只能读取的字符串最大大小?我无法在线找到 Dart 中字符串的最大大小。谢谢。

下面是代码,如果你想看的话:

import 'dart:async';
import 'dart:io';

import 'package:path_provider/path_provider.dart';

class Storage {
  Future<String> get localPath async {
    final directory = await getApplicationDocumentsDirectory();
    return directory.path;
  }

  Future<File> get localFile async {
    final path = await localPath;
    return File('$path/data.txt');
  }

  Future<List<String>> read() async {
    try {
      final file = await localFile;
      String contents = await file.readAsString(); //the important part
      return contents.split(";");
    } catch (exception) {
      return null;
    }
  }

  void write(List data) async {
    final file = await localFile;
    String toWrite = "";
    for (int i = 0; i < data.length; i++) {
      toWrite += data.elementAt(i) + ";";
    }
    file.writeAsString(toWrite);
  }
}

【问题讨论】:

  • 使用String contents = await file.readAsString();,你想限制contents 的长度吗?如果是,你想一开始就分开吗?
  • 就像下面的评论一样,我想知道它是否能够使用 readAsString() 读取无限大的字符串。

标签: flutter dart


【解决方案1】:

也许你想要类似的东西:

var myFileStream = File('path/to/file').openRead();
var firstChars = myFileStream.take(1024);

这会将文件的内存部分限制为前 1024 个字符。

(我认为。:)

【讨论】:

  • 感谢您的回答,我的意思是它可以读取的最大文件大小。前任。 readAsString() 函数只返回超过字符串大小之前的前 x 个字符。
  • 不,字符串“直到内存不足”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 2012-04-27
  • 1970-01-01
  • 2011-03-23
  • 2015-03-08
  • 2022-01-13
  • 1970-01-01
相关资源
最近更新 更多