Rust 文件路径和访问权限的澄清

dan*_*-Ai 3 rust rust-cargo

对 Rust 非常陌生,正在寻找有关项目目录之外的 rust 文件路径的说明。我希望从桌面读取 .txt 文件大致如下所示:

fs::read_to_string("./Desktop/test.txt");
Run Code Online (Sandbox Code Playgroud)

然而,这似乎不起作用。这是列出的文件路径的问题还是 Rust 只允许访问项目目录中的文件?如果这是默认情况,如何允许访问系统中当前工作目录之外的其他位置的文件?假设该项目位于文档中,我们想要访问桌面上的一些文本文件。

找到答案了,看来我正在寻找的路径是这样的:

fs::read_to_string("/Desktop/test.txt");
Run Code Online (Sandbox Code Playgroud)

好像是“。” 正在当前目录中查找。

har*_*mic 6

当您打开以 开头的路径时./,它是相对于当前工作目录的。

假设程序本身不更改工作目录,则该目录将是用户启动可执行文件时所在的目录。

请注意,它不一定是项目目录:当您开发程序时,您可能会通过以下方式运行它cargo run,但是当它准备好时,您很可能会将目标可执行文件复制到路径中的目录中。工作目录可以与放置可执行文件的目录完全不同。

您的程序可以通过调用找到当前工作目录std::env::current_dir

如果你想要一个不依赖于工作目录的路径,你可以使用绝对路径,即。从...开始/

在这方面,Rust 与任何其他编程语言没有什么不同。特别是,不会打开项目目录中的文件。