如何在带有dart的路径字符串中处理“〜”

时间:2014-03-10 18:32:13

标签: dart dart-io

我不知道如何使用路径扩展“〜”。我希望使用路径函数,目录/文件类会自动处理它。

import "dart:io";
import 'package:path/path.dart';

void main() {
  print(absolute("~"));
  var d = new Directory("~");
  print(d.absolute.path);
}

打印

/private/tmp/dummy/dummy/bin/~
/private/tmp/dummy/dummy/bin/~

2 个答案:

答案 0 :(得分:2)

就像@mezoni在评论中所说的那样,到处都不支持。 有些图书馆内置了支持,有些则没有。

解决方法:

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

...

if(io.Platform.isWindows) {
  print(path.absolute(io.Platform.environment['USERPROFILE'])); // not tested
} else {
  print(path.absolute(io.Platform.environment['HOME']));
}

另见Access to user environment variable

答案 1 :(得分:1)

这取决于具体情况。在您的示例中,您可以使用以下代码。

import "dart:io";
import "package:file_utils/file_utils.dart";

void main() {
  var home = FilePath.expand("~/music");
  var dir = new Directory(home);
  print(dir.absolute.path);
}

如果您想查找某些文件,可以使用其他代码。

import "package:file_utils/file_utils.dart";

void main() {
  var songs = FileUtils.glob("~/music/*{.mp3,.flac}");
  for(var song in songs) {
    print(song);
  }
}