Flutter:获取文件的文件名

a2mppw5e  于 2022-12-05  发布在  Flutter
关注(0)|答案(7)|浏览(786)

我想这应该是很简单的,但是似乎不能得到这个,我有一个File file,它有一个路径file.path,它会吐出类似/storage/emulated/0/Android/data/my_app/files/Pictures/ca04f332.png的东西,但是我似乎找不到任何东西来得到ca04f332.png

7nbnzgx9

7nbnzgx91#

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

6fe3ivhb

6fe3ivhb2#

由于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被添加到所有文件对象中。

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';
wvyml7n5

wvyml7n53#

直接道:
File file = File('/foo/bar/baz/my_image.jpg');
String fileName = file.path.split(Platform.pathSeparator).last; // my_image.jpg
使用分机:

1.创建扩展名:

extension FileEx on File {
  String get name => path.split(Platform.pathSeparator).last;
}

2.用途:

File file = File('/foo/bar/baz/my_image.jpg');
String fileName = file.name; // my_image.jpg
kulphzqa

kulphzqa4#

简单的方法来获得名称或任何其他文件处理操作。我推荐使用这个插件:https://pub.dev/packages/file_support

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

vc9ivgsu5#

您可以使用扩展方法无需使用任何包

创建如下方法

extension FileNameExtension on File {
  String getFileName() {
    String fileName = path.split('/').last;
    return fileName;
  }
}

实施

File file = File("yourpath/example.pdf");
file.getFileName() // result =>  example.pdf
pgccezyw

pgccezyw6#

我遇到了同样的问题。在Web上,应用程序在另一个文件夹资产内创建文件夹资产。我已经将文件从子资产文件夹移动到父资产文件夹。enter image description here

ve7v8dk2

ve7v8dk27#

您可以使用dart path library中的basename函数:

import 'package:path/path.dart';

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

相关问题