Flutter:path.join 未连接字符串

问题描述 投票:0回答:1

我正在使用包 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'

这里真是让人摸不着头脑。我是否遗漏了一些明显的东西?

提前致谢。

flutter join path
1个回答
0
投票

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('/'));
© www.soinside.com 2019 - 2024. All rights reserved.