我正在使用包 path.dart 中的 join 函数来构建文件路径。然而,它似乎没有连接字符串,只是返回最后一个。
例如:
import 'package:path/path.dart' as path;
String _docsDir = (await getApplicationDocumentDirectory()).path;
String xmlRelativePath = '/xmlfiles/myfile.xml';
String xmlFullPath = '';
xmlFullPath = path.join(,_docsDir, xmlRelativePath ); // outputs: /xmlfiles/myfile.xml
xmlFullPath = path.join('ARRRRGGG',_docsDir, xmlRelativePath ); // outputs: /xmlfiles/myfile.xml
但是如果我只是将它们粘贴到一个字符串中,它就可以正常工作:
xmlFullPath = '$_docsDir$xmlRelativePath'
这里真是让人摸不着头脑。我是否遗漏了一些明显的东西?
提前致谢。
path.join
不只是连接字符串。最后一个参数以路径分隔符开头,并被视为 absolute 路径(尽管您希望将其视为相对路径),因此它将覆盖前面的所有参数。这在 path.join
文档中进行了解释:
如果一部分是绝对路径,那么之前的任何内容都将被忽略:
p.join('path', '/to', 'foo'); // -> '/to/foo'
将
xmlRelativePath
更改为 not 以目录分隔符开头,或者不使用 path.join
,而是使用普通字符串连接,后跟 path.normalize
:
xmlFullPath = path.normalize(['ARRRRGGG', docsDir, xmlRelativePath].join('/'));