簡単な方法でファイルの名前を取得できないことがわかりました:(
ダーツコード:
File file = new File("/dev/Dart/work/hello/app.Dart");
ファイル名の取得方法app.Dart
?
このためのAPIが見つからないので、私が行うことは次のとおりです。
var path = file.path;
var filename = path.split("/").last;
もっと簡単な解決策はありますか?
パスパッケージ を使用できます:
import 'Dart:io';
import 'package:path/path.Dart';
main() {
File file = new File("/dev/Dart/work/hello/app.Dart");
String filename = basename(file.path);
}
ファイルのパスから新しい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'
}
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);
}
詳細については、 ドキュメント をお読みください。
注:extension
は新機能であるため、まだIDEに完全に統合されておらず、自動的に認識されない場合があります。 extension
を必要な場所に手動でインポートする必要があります。拡張ファイルがインポートされていることを確認してください。
import 'package:<your_extention_path>/file_extentions.Dart';
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);
}