Flutter:获取文件的文件名

Flutter: Get the filename of a File

我认为这会非常简单,但似乎无法理解。我有一个 File file 并且它有一个路径 file.path 吐出类似 /storage/emulated/0/Android/data/my_app/files/Pictures/ca04f332.png 的东西但我似乎找不到任何东西可以得到 ca04f332.png.

您可以使用 basename function from the dart path library:

import 'package:path/path.dart';

File file = new File("/dir1/dir2/file.ext");
String basename = basename(file.path);
# file.ext

由于 Dart 版本 2.6 已经发布并且可以用于 flutter 版本 1.12 及更高版本,您可以使用 extension 方法。它将为这个问题提供更具可读性和全局性的解决方案。

file_extensions.dart :

import 'dart:io';

extension FileExtention on FileSystemEntity{
  String get name {
    return this?.path?.split("/")?.last;
  }
}

name getter被添加到所有文件对象中。您可以简单地在任何文件上调用 name

main() {
  File file = new File("/dev/dart/work/hello/app.dart");
  print(file.name);
}

阅读 document 了解更多信息。

注: 由于 extension 是一项新功能,它还没有完全集成到 IDE 中,可能无法自动识别。您必须在任何需要的地方手动导入 extension。只需确保已导入扩展文件:

import 'package:<your_extention_path>/file_extentions.dart';
File file = new File("/storage/emulated/0/Android/data/my_app/files/Pictures/ca04f332.png"); 
String fileName = file.path.split('/').last;

print(fileName);

输出=ca04f332.png

获取名称或任何其他文件处理的简单方法operations.I推荐使用此插件:https://pub.dev/packages/file_support

main() {
  String filename= FileSupport().getFileNameWithoutExtension(<File Object>);
}