7

Dart で、ファイルのルート ディレクトリと相対パスがわかっている場合、そのファイル インスタンスを作成する方法を教えてください。

Directory root = new Directory("/root");
String relativePath = "logs/users.log";

のファイル インスタンスを作成するusers.log方法

Java では、非常に単純です。

new File(root, relativePath);

しかし、Dart では、そのような簡単な解決策を見つけることができません。

4

3 に答える 3

6

これは私が見つけた最も簡単な解決策です

import 'package:path/path.dart' as path;

...

String filePath = path.join(root.path, relativePath);
filePath = path.normalize(filePath);
File f = new File(filePath);
于 2014-03-03T14:26:13.247 に答える
2

参加/home/name/../name2て譲る/home/name2

編集:

ヒントをくれたGünterZöchbauerに感謝します。
Linuxボックスはのようなパスを処理できるよう/home/name/../name2です.

Windows マシンでPath.normalizeは、 を使用する必要があり、ヘッドの余分な/ Path.normalizeプリペンドを削除する必要があります。

または、新しい Path.Context() を使用します。

import 'package:path/path.dart' as Path;
import 'dart:io' show Platform,Directory;

to_abs_path(path,[base_dir = null]){
  Path.Context context;
  if(Platform.isWindows){
    context = new Path.Context(style:Path.Style.windows);
  }else{
    context = new Path.Context(style:Path.Style.posix);
  }
  base_dir ??= Path.dirname(Platform.script.toFilePath());
  path = context.join( base_dir,path);
  return context.normalize(path);
}
于 2016-03-21T10:21:50.440 に答える