我发现我无法以简单的方式获取文件的名称:(
飞镖码:
File file = new File("/dev/dart/work/hello/app.dart");
如何获取文件名app.dart
?
我没有为此找到API,所以我所做的是:
var path = file.path;
var filename = path.split("/").last;
有没有更简单的解决方案?
答案 0 :(得分:20)
您可以使用path package:
import 'dart:io';
import 'package:path/path.dart';
main() {
File file = new File("/dev/dart/work/hello/app.dart");
String filename = basename(file.path);
}
答案 1 :(得分:4)
截至2020年4月的作品
void main() {
var completePath = "/dev/dart/work/hello/app.dart";
var fileName = (completePath.split('/').last);
var filePath = completePath.replaceAll("/$fileName", '');
print(fileName);
print(filePath);
}
答案 2 :(得分:3)
从文件路径创建一个新的Path
对象,并使用其filename
属性获取文件的名称:
import 'dart:io';
void main() {
var file = new File('/dev/dart/work/hello/app.dart');
Path path = new Path(file.path);
print(path.filename); // 'app.dart'
print(path.directoryPath); // '/dev/dart/work/hello'
}
答案 3 :(得分:1)
如果不想使用路径 pub 包,可以使用 dart:io 中的 Uri 类,该类返回文件名及其扩展名:
String fileName = File(localFilePath).uri.pathSegments.last;
答案 4 :(得分:0)
由于Dart版本2.6
已发布,并且可用于版本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';
答案 5 :(得分:0)
如果你从资产中读取
println
结果
<service android:name=".RetroShareServiceAndroid" android:label="RetroShare Service" android:process=":rs>
<!-- Qt Application to launch -->
<meta-data android:name="android.app.lib_name" android:value="retroshare-service"/>
<!-- Ministro -->
<meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
<meta-data android:name="android.app.repository" android:value="default"/>
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
<meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
<!-- Deploy Qt libs as part of package -->
<meta-data android:name="android.app.bundle_local_qt_libs" android:value="1"/>
<meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/>
<meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/>
<!-- Run with local libs -->
<meta-data android:name="android.app.use_local_qt_libs" android:value="1"/>
<meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
<meta-data android:name="android.app.load_local_libs" android:value="plugins/platforms/android/libqtforandroid.so:plugins/bearer/libqandroidbearer.so"/>
<meta-data android:name="android.app.load_local_jars" android:value="jar/QtAndroid.jar:jar/QtAndroidExtras.jar:jar/QtAndroidBearer.jar"/>
<meta-data android:name="android.app.static_init_classes" android:value=""/>
<!-- Messages maps -->
<meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
<meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
<meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
<!-- Messages maps -->
<!-- Background running -->
<meta-data android:name="android.app.background_running" android:value="true"/>
<!-- Background running -->
</service>
在 print import 'dart:convert';
import 'dart:io';
void main() async {
assetsGenerator();
}
void assetsGenerator({String assetsDir='/assets/images/'}) async {
var assetsPaths = Directory(Directory.current.path + assetsDir);
try {
var assetsList = assetsPaths.list();
await assetsList.forEach((element) {
String imageName = element.path.split('/').last;
String imagePath = assetsDir.split('/')[1] +
'/' +
assetsDir.split('/')[2] +
'/' +
imageName;
print(imagePath);
});
} catch (error) {
print(error.toString());
}
}
变量中获取图像名称
assets/images/pexels-photo-2102416.jpeg
assets/images/pexels-photo.jpeg
assets/images/pexels-photo-7988087.jpeg
assets/images/pexels-photo-5052877.jpeg
assets/images/pexels-photo-326501.jpeg
assets/images/imac-apple-mockup-app-38544.jpeg
答案 6 :(得分:0)
@Alexandre Ardhuin 的回答。 path 库中的文档:
/// Gets the part of [path] after the last separator.
///
/// p.basename('path/to/foo.dart'); // -> 'foo.dart'
/// p.basename('path/to'); // -> 'to'
///
/// Trailing separators are ignored.
///
/// p.basename('path/to/'); // -> 'to'
String basename(String path) => context.basename(path);
/// Gets the part of [path] after the last separator, and without any trailing
/// file extension.
///
/// p.basenameWithoutExtension('path/to/foo.dart'); // -> 'foo'
///
/// Trailing separators are ignored.
///
/// p.basenameWithoutExtension('path/to/foo.dart/'); // -> 'foo'
String basenameWithoutExtension(String path) =>
context.basenameWithoutExtension(path);
那么,让我们试试 basenameWithoutExtension
函数