web-dev-qa-db-ja.com

Dartでファイルの名前を取得するにはどうすればよいですか?

簡単な方法でファイルの名前を取得できないことがわかりました:(

ダーツコード:

File file = new File("/dev/Dart/work/hello/app.Dart");

ファイル名の取得方法app.Dart

このためのAPIが見つからないので、私が行うことは次のとおりです。

var path = file.path;
var filename = path.split("/").last;

もっと簡単な解決策はありますか?

23
Freewind

パスパッケージ を使用できます:

import 'Dart:io';
import 'package:path/path.Dart';

main() {
  File file = new File("/dev/Dart/work/hello/app.Dart");
  String filename = basename(file.path);
}
43

ファイルのパスから新しい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'
}
4
Shailen Tuli

Dartバージョン以降2.6が発表され、フラッターバージョンで利用可能になりました1.12以上、extensionメソッドを使用できます。これにより、この問題に対してより読みやすくグローバルなソリューションが提供されます。

file_extensions.Dart

import 'Dart:io';

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

namegetterがすべてのファイルオブジェクトに追加されます。任意のファイルで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';
2
Saman Salehi

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);
}
0
krupesh Anadkat