Трепетание: удаление определенного количества символов файла .txt

#flutter #dart #text-files

#трепетание #дротик #текстовые файлы

Вопрос:

В настоящее время я экспериментирую с File классом для записи String объектов в текстовый файл, который локально хранится на устройстве. Мне уже удалось создать текстовый файл и записать в него с помощью этого writeAsString метода. Я также могу добавлять String к нему объекты, передавая FileMode.append их в качестве необязательного параметра mode . Однако я столкнулся с вопросом: что, если я захочу удалить несколько строк или количество символов из того же текстового файла? Есть ли способ сделать это?

Вот код, который я написал до сих пор:

 import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';

void main() {

  runApp(
    MaterialApp(
      title: 'Reading and Writing Files',
      home: FlutterDemo(),
    ),
  );
}

class FlutterDemo extends StatefulWidget {
  @override
  _FlutterDemoState createState() => _FlutterDemoState();
}

class _FlutterDemoState extends State<FlutterDemo> {


  _createAndWrite(String text) async {
    final Directory directory = await getApplicationDocumentsDirectory();
    final File file = File('${directory.path}/test1.txt');
    await file.writeAsString(text);
  }

  _writeAgain(String text) async {
    final Directory directory = await getApplicationDocumentsDirectory();
    final File file = File('${directory.path}/test1.txt');
    await file.writeAsString(text, mode: FileMode.append);
  }

  Future<String> _read() async {
    String text;
    try {
      final Directory directory = await getApplicationDocumentsDirectory();
      final File file = File('${directory.path}/test1.txt');
      text = await file.readAsString();
    } catch (e) {
      print("Couldn't read file");
    }

    print(text);

    return text;
  }

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Reading and Writing Files')),
      body: Center(
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: [
            FlatButton(
              onPressed: (){
                _createAndWrite("this is working");
              },
              child: Text(
                "Create and write",
                style: TextStyle(color: Colors.white),
              ),
              color: Colors.blue,
              height: 60,
              minWidth: 80,
            ),
            FlatButton(
              onPressed: _read,
              child: Text(
                "Print onn the console",
                style: TextStyle(color: Colors.white),
              ),
              color: Colors.blue,
              height: 60,
              minWidth: 80,
            ),
            FlatButton(
              onPressed: (){
                _writeAgain(" you added something new");
              },
              child: Text(
                "Create and writen / Write again",
                style: TextStyle(color: Colors.white),
              ),
              color: Colors.blue,
              height: 60,
              minWidth: 80,
            ),
          ],
        ),
      ),
    );
  }
}