Tauri中resourceDir()返回路径异常:多出\\?\\前缀的问题
Tauri resourceDir() 返回路径带\?\前缀的处理方案
这个\?\前缀是Windows系统的扩展长度路径标识,用来支持超过260字符的长路径,Tauri底层依赖Rust的路径处理逻辑,会自动给路径加上这个前缀,属于正常行为,Windows系统完全能识别并使用这个路径,不会影响功能。
如果需要把路径转换成常规格式(比如要展示给用户、和其他不支持长路径前缀的工具兼容),可以在JS层直接做字符串截取:
修改你的前端代码如下:
import { resourceDir } from "@tauri-apps/api/path"; export default function App() { return ( <> <button onClick={async () => { let resourceDirPath = await resourceDir(); // 移除Windows的扩展路径前缀 if (resourceDirPath.startsWith('\\\\?\\')) { resourceDirPath = resourceDirPath.slice(4); } console.log(resourceDirPath); }} > Click </button> </> ); }
如果是在Rust后端处理路径,也可以用Path::display()方法获取不带前缀的字符串示例:
use tauri::api::path::resource_dir; use std::path::Path; #[tauri::command] fn get_resource_dir() -> String { let dir = resource_dir().expect("Failed to get resource dir"); dir.display().to_string() }
注意:如果只是用Tauri自身的文件系统API操作这个路径,完全不需要处理前缀,带前缀的路径是有效的,不会出问题。
内容的提问来源于stack exchange,提问作者mycatgib
相关产品推荐
相关产品推荐

