Flutter中path.join无法拼接字符串仅返回最后一项的问题
问题原因与解决方法
问题根源
你的xmlRelativePath是以/开头的,这在路径规则里属于绝对路径标识。path.join的逻辑是:一旦遇到绝对路径参数,就会直接忽略前面所有传入的路径项,只返回这个绝对路径。这就是为什么不管前面传什么,最终结果都是/xmlfiles/myfile.xml。
解决方法
把相对路径开头的/去掉,让它成为真正的相对路径:
String xmlRelativePath = 'xmlfiles/myfile.xml'; // 移除开头的斜杠
修改后再用path.join就能正常拼接所有路径项:
xmlFullPath = path.join(_docsDir, xmlRelativePath ); // 输出:[你的应用文档目录路径]/xmlfiles/myfile.xml xmlFullPath = path.join('ARRRRGGG',_docsDir, xmlRelativePath ); // 输出:ARRRRGGG/[你的应用文档目录路径]/xmlfiles/myfile.xml
补充说明
path.join的设计是遵循文件系统的路径语义,绝对路径本身就代表从根开始的完整路径,不需要和前面的路径拼接。而字符串插值只是简单的字符串拼接,不会处理路径的语义规则,虽然这次看起来“正常”,但如果_docsDir末尾本身带有/,拼接后会出现//这样的无效路径分隔符,而path.join会自动处理这类问题,所以更推荐使用path.join,只要确保相对路径不以根分隔符开头即可。
内容的提问来源于stack exchange,提问作者AndyMo
相关产品推荐
相关产品推荐

