广告
返回顶部
首页 > 资讯 > 移动开发 >详解Flutter如何读写文本文件
  • 914
分享到

详解Flutter如何读写文本文件

Flutter读写文本文件Flutter读写文件 2022-11-13 05:11:48 914人浏览 薄情痞子
摘要

目录介绍示例 1:加载内容预览完整代码示例 2: Reading and Writing获取文件路径示例预览完整的代码和解释介绍 文本文件(具有 .txt扩展名)广泛用于持久存储信息

介绍

文本文件(具有 .txt扩展名)广泛用于持久存储信息,从数字数据到长文本。今天,我将介绍 2 个使用此文件类型的 Flutter 应用程序示例。

第一个示例快速而简单。它仅使用 rootBundle(来自 services.dart)从 assets 文件夹(或根项目中的另一个文件夹)中的文本加载内容,然后将结果输出到屏幕上。当您只需要读取数据而不需要写入数据时,这很有用。

第二个例子稍微复杂一点。它不仅可以读取用户输入的内容,还可以将用户输入的内容写入文本文件。您将学习如何使用File 异步方法, 包括readAsString和writeAsString。

示例 1:加载内容

预览

此示例包含一个文本小部件和一个浮动按钮。当这个按钮被按下时,函数 _loadData将被触发并从文件中加载内容。

将文本文件添加到您的项目中

在项目根目录的资产文件夹中创建一个名为data.txt的新文本文件(如果尚不存在,则创建一个),并向其添加一些虚拟内容,如下所示:

个人简介:华为云享专家,InfoQ签约作者,51CTO博客首席体验官,专注于前端技术的分享,包括Flutter,小程序,安卓,Vuejavascript。如果你迷茫,不妨来瞅瞅码农的轨迹,

不要忘记在pubspec.yaml文件中注册assets文件夹:

flutter:
  assets:
    - assets/

完整代码

将以下内容添加到您的main.dart

// main.dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'dart:async';
​
void main() {
  runApp(MyApp());
}
​
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: '坚果',
      home: HomePage(),
    );
  }
}
​
class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}
​
class _HomePageState extends State<HomePage> {
  String _data;
​
  // This function is triggered when the user presses the floating button
  Future<void> _loadData() async {
    final _loadedData = await rootBundle.loadString('assets/data.txt');
    setState(() {
      _data = _loadedData;
    });
  }
​
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('坚果'),
      ),
      body: Center(
          child: Container(
              width: 300,
              child: Text(_data != null ? _data : 'Nothing to show',
                  style: TextStyle(fontSize: 24)))),
      floatingActionButton:
          FloatingActionButton(onPressed: _loadData, child: Icon(Icons.add)),
    );
  }
}

示例 2: Reading and Writing

获取文件路径

出于安全原因,AndroidiOS 不允许我们在硬盘驱动器上的任何位置进行读写。我们需要将文本文件保存到Documents目录中,应用程序只能在该目录中访问其文件。只有在删除应用程序时才会删除这些文件。

文件目录是NSDocumentDirectory iOS和应用程序数据在Android上。要获取该目录的完整路径,我们使用path_provider包(这是 Flutter 的官方包)。

通过将path_provider及其版本添加到pubspec.yaml文件的依赖项部分来安装包,如下所示:

dependencies:
  path_provider: ^2.0.8

然后运行以下命令:

flutter pub get

并找到如下路径:

import 'package:path_provider/path_provider.dart';
​

​
Future<String> get _getDirPath async {
  final _dir = await getApplicationDocumentsDirectory();
  return _dir.path;
}

示例预览

此示例应用程序有一个 TextFiled,允许用户输入他/她的姓名以写入文本文件。它还包含一个文本小部件,显示从该文件读取的名称。

完整的代码和解释

在此示例中,我们不需要手动创建文本文件并将其添加到项目中。第一次写入数据时会自动创建。

这是我们的main.dart 中的代码:

// main.dart
import 'dart:convert';
​
import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:io';
import 'package:path_provider/path_provider.dart';
​
void main() {
  runApp(MyApp());
}
​
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: '坚果',
      home: HomePage(),
    );
  }
}
​
class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}
​
class _HomePageState extends State<HomePage> {
  // This will be displayed on the screen
  String _content;
​
  // Find the Documents path
  Future<String> _getDirPath() async {
    final _dir = await getApplicationDocumentsDirectory();
    return _dir.path;
  }
​
  // This function is triggered when the "Read" button is pressed
  Future<void> _readData() async {
    final _dirPath = await _getDirPath();
    final _myFile = File('$_dirPath/data.txt');
    final _data = await _myFile.readAsString(encoding: utf8);
    setState(() {
      _content = _data;
    });
  }
​
  // TextField controller
  final _textController = TextEditinGController();
  // This function is triggered when the "Write" buttion is pressed
  Future<void> _writeData() async {
    final _dirPath = await _getDirPath();
    
    final _myFile = File('$_dirPath/data.txt');
    // If data.txt doesn't exist, it will be created automatically
​
    await _myFile.writeAsString(_textController.text);
    _textController.clear();
  }
​
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('坚果'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(20),
        child: Column(
          children: [
            TextField(
              controller: _textController,
              decoration: InputDecoration(labelText: 'Enter your name'),
            ),
            ElevatedButton(
              child: Text('Save to file'),
              onPressed: _writeData,
            ),
            SizedBox(
              height: 150,
            ),
            Text(
                _content != null
                    ? _content
                    : 'Press the button to load your name',
                style: TextStyle(fontSize: 24, color: Colors.pink)),
            ElevatedButton(
              child: Text('Read my name from the file'),
              onPressed: _readData,
            )
          ],
        ),
      ),
    );
  }
}

以上就是详解Flutter如何读写文本文件的详细内容,更多关于Flutter读写文本文件的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解Flutter如何读写文本文件

本文链接: https://www.lsjlt.com/news/145654.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Flutter如何读写文本文件
    目录介绍示例 1:加载内容预览完整代码示例 2: Reading and Writing获取文件路径示例预览完整的代码和解释介绍 文本文件(具有 .txt扩展名)广泛用于持久存储信息...
    99+
    2022-11-13
    Flutter 读写文本文件 Flutter 读写文件
  • Flutter怎么读写文本文件
    这篇文章主要介绍“Flutter怎么读写文本文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter怎么读写文本文件”文章能帮助大家解决问题。介绍文本文件(具有 .txt扩展名)广泛用于持久...
    99+
    2023-06-30
  • VB.NET如何读写文本文件
    小编给大家分享一下VB.NET如何读写文本文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!工作需要,小编需要使用VB.NET读写文本文件操作。编程需要完成如下工...
    99+
    2023-06-17
  • flutter:文件系统目录、文件读写
    参考 参考:老孟 文件存储和网络请求 数据存储 Dart的 IO 库包含了文件读写的相关类,它属于 Dart 语法标准的一部分,所以通过 Dart IO 库,无论是 Dart VM 下的脚本还是 Fl...
    99+
    2023-10-27
    flutter ios android
  • Java文件读写详解
    目录读取文件写入文件复制文件删除文件总结读取文件 Java 中可以使用 FileInputStream 和 FileReader 两个类来读取文件: FileInputStream ...
    99+
    2023-05-20
    Java 文件读写 Java 读取文件 Java 文件的读和写
  • python文件处理--文件读写详解
    目录1.读取文件2.写入文件总结1. 读取文件 文件读取很简单,就三步。 第一:在Windows的记事本中直接输入“愿你出走半生归来仍是少年!” 第二:通过代码读取文件 步骤: 使用open()函数打开文件...
    99+
    2022-06-02
    python python文件读写
  • 详解python读写json文件
    python处理json文本文件主要是以下四个函数: 函数 作用 ...
    99+
    2022-11-12
    python读写文件 python读写json文件
  • 如何使用C#读写文本文件
    这篇文章将为大家详细讲解有关如何使用C#读写文本文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。读取txt文件 如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(...
    99+
    2023-06-15
  • JAVA文件读写操作详解
    目录一、读文件BufferedInputStream二、写文件BufferedOutputStream三、实际应用场景总结一、读文件BufferedInputStream Buffe...
    99+
    2022-11-13
    JAVA文件操作 JAVA读写操作
  • C++文件读写操作详解
    目录一、读写文本文件1.1 写文件1.2读文件二、读写二进制文件2.1 写文件2.2 读文件一、读写文本文件 1.1 写文件 写文件步骤如下: 包含头文件 #include <...
    99+
    2022-11-13
    C++ 读写文件
  • JavaZip文件读写操作详解
    输入流(读取): ZipInputStream是一种FileInputStream流,它可以直接读取Zip压缩包的内容: ┌───────────────────┐│   ...
    99+
    2022-11-13
    Java Zip文件读取 Java Zip文件写入
  • 详解C#如何实现读写ini文件
    目录介绍1.创建一个ini文件2.创建一个winform界面3.添加一个ini管理类4.添加winform代码介绍 INI文件格式由节、键、值组成。 节 [section] 参数 (...
    99+
    2022-11-13
    C# 读写ini文件 C# ini文件
  • VB.NET怎么读写文本文件
    这篇文章主要介绍VB.NET怎么读写文本文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!为了把text保存到文件,创建一个基于FileStream的StreamReader对象,然后调用Write方法把需要保存的t...
    99+
    2023-06-17
  • Python文本文件与csv文件如何读取与写入
    这篇“Python文本文件与csv文件如何读取与写入”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python文本文件与cs...
    99+
    2023-06-29
  • Node.js Streams文件读写操作详解
    Node.js 天生异步和事件驱动,非常适合处理 I/O 相关的任务。如果你在处理应用中 I/O 相关的操作,你可以利用 Node.js 中的流(stream)。因此,我们先具体看看流,理解一下它们是怎么简...
    99+
    2022-06-04
    详解 操作 文件
  • Android读写文件工具类详解
    本文实例为大家分享了Android读写文件工具类的具体代码,供大家参考,具体内容如下 public class Utils { private static String...
    99+
    2022-06-06
    工具类 工具 Android
  • Python文件读写open函数详解
    前言: open()函数的定义:def open(file, mode='r', buffering=None, encoding=None, errors=None...
    99+
    2022-11-11
    Python文件读写open函数 Python读写open
  • PythonYAML文件的读写操作详解
    目录YAML格式YAML文件YAML操作读取存储示例转字典转列表YAML是一种数据序列化格式,方便人类阅读,且容易和脚本语言交互。常用于配置文件,也用于数据存储或传输。 YAML格式...
    99+
    2022-11-11
    Python YAML文件 Python YAML读写
  • C++文件流读写操作详解
    目录1.打开文件1.1 fstream类型1.2 open()的函数原型1.3 打开方式1.4 打开文件的属性1.5 示例代码2.文本文件的读写2.1 写文件示例2.2 读文件示例2...
    99+
    2022-11-12
    C++文件流读写操作 C++文件流操作 C++文件流详解
  • 【PHP】文件写入和读取详解
    一.实现文件读取和写入的基本思路: 1.通过fopen方法打开文件:$fp =fopen(),fp为Resource类型 2.进行文件读取或者文件写入操作(这里使用的函数以1中返回的$fp作为参数)   调用fclose($fp)关闭关闭...
    99+
    2023-09-02
    php 数学建模 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作