Flutter开发之——文件及文件夹操作,阿里面试官必问

Flutter文件操作指南

目录操作

遍历目录

await for(FileSystemEntity fileSystemEntity in fileList){
  print('$fileSystemEntity');
}

说明:

  • Directory(path).list()中有一个可选参数recursive,默认值为false,表示只遍历当前目录
  • 设置为true时表示遍历当前目录及子目录

判断文件类型

await for(FileSystemEntity fileSystemEntity in fileList){
  print('$fileSystemEntity');
  FileSystemEntityType type = FileSystemEntity.typeSync(fileSystemEntity.path);
}

文件类型:

  • file:文件
  • directory:文件夹
  • link:链接文件
  • notFound:未知

重命名文件夹

_dirRename() async{
  Directory documentsDirectory = await getApplicationDocumentsDirectory();
  String path = '${documentsDirectory.path}${Platform.pathSeparator}dirName';
  
  var dir = Directory(path);
  var dir3= await dir.rename('${dir.parent.absolute.path}${Platform.pathSeparator}dir3');
}

删除文件夹

_deleteDir() async {
  Directory documentsDirectory = await getApplicationDocumentsDirectory();
  String path = '${documentsDirectory.path}${Platform.pathSeparator}dir3';
  
  var dir = await Directory(path).delete();
}

说明:

  • delete中有一个可选参数recursive,默认值为false,为false时如果删除的文件夹下还有内容将无法删除,抛出异常
  • 设置为true时,删除当前文件夹及文件夹下所有内容

文件操作

创建文件

_createFile() async {
  Directory documentsDirectory = await getApplicationDocumentsDirectory();
  String path = '${documentsDirectory.path}${Platform.pathSeparator}dirName${Platform.pathSeparator}file.txt';
  
  var file = await File(path).create(recursive: true);
}

说明:

  • create中有一个可选参数recursive,默认值为false,为false时只创建文件,文件夹路径不存在抛出异常
  • 设置为true时,创建文件及不存在的路径文件夹

写入数据

_write2File() async{
  Directory documentsDirectory = await getApplicationDocumentsDirectory();
  String path = '${documentsDirectory.path}${Platform.pathSeparator}dirName${Platform.pathSeparator}file.txt';
  
  var file=File(path);
  if (file.existsSync()) {
    file.writeAsString('写入数据文件'); //写入字符串
    //file.writeAsBytes(Utf8Encoder().convert("写入数据文件"));//写入bytes数据
    //file.openWrite(mode: FileMode.append).write('追加到末尾'); //向末尾追加内容
  }
}

读取数据

_readFile() async{
  Directory documentsDirectory = await getApplicationDocumentsDirectory();
  String path = '${documentsDirectory.path}${Platform.pathSeparator}dirName${Platform.pathSeparator}file.txt';
  
  var file=File(path);
  if (file.existsSync()) {
    List lines = await file.readAsLines();
    lines.forEach((element) {
      print('$element');
    });
  }
}

删除文件

_deleteFile() async{
  Directory documentsDirectory = await getApplicationDocumentsDirectory();
  String path = '${documentsDirectory.path}${Platform.pathSeparator}dirName${Platform.pathSeparator}file.txt';
  
  var file=File(path);
  if (file.existsSync()) {
    file.delete();
  }
}

JSON文件操作

示例JSON数据

[
  {
    "desc": "开发环境搭建。",
    "title": "第一章"
  },
  {
    "desc": "语法知识学习",
    "title": "第二章"
  },
  {
    "desc": "组件学习",
    "title": "第三章"
  }
]

读取JSON文件

_loadAsset(BuildContext context) async{
  var jsonStr = await DefaultAssetBundle.of(context).loadString('assets/json/data.json');
  var list = json.decode(jsonStr);
  print(list);
}

开发工具推荐

在iOS应用开发过程中,使用AppUploader可以极大简化应用上传到App Store的流程。这款工具提供了直观的界面和便捷的操作方式,特别适合处理证书管理、描述文件配置等复杂任务。开发者可以专注于代码编写,而将繁琐的发布流程交给AppUploader处理。

对于Flutter开发者来说,结合AppUploader可以更高效地完成iOS端的应用发布工作。它支持自动识别项目配置,减少了手动设置可能出现的错误,让应用发布变得更加轻松。

你可能感兴趣的:(http,udp,https,websocket,网络安全,网络协议,tcp/ip)