【问题标题】:Files being created in the wrong folder在错误的文件夹中创建文件
【发布时间】:2014-06-10 17:10:54
【问题描述】:

提供一点上下文:我正在编写一个使用文本文件和 BMP 文件的程序。对于文本文件,我提供了一个类来管理它们,并且我使用 EasyBMP 进行 BMP 操作。 我遇到的问题是除非我提供完整路径,否则文件是在错误的文件夹中创建的。

例子:

#include "EasyBMP.h"
int main(){
    BMP picture;
    picture.SetSize(640,480);
    picture.WriteToFile("picture.BMP");
return 0;
}

预期结果:在我的项目文件夹 (C:\Users[user]\Documents\C++\TP 1) 的某处创建了 640x480 BMP 文件

实际结果:在 Eclipse 文件夹 (C:\Users[user]\Documents\Eclipse) 中创建 640x480 BMP 文件

我写入磁盘的任何其他文件也会发生同样的情况。 它曾经在不同的项目上运行良好,所以我猜我在某个地方遗漏了一些愚蠢的东西,但我一直无法找到解决方案。

编辑:完全相同的代码适用于不同的项目。

【问题讨论】:

    标签: c++ eclipse path fstream


    【解决方案1】:

    程序会将文件写入工作目录。那是因为您使用了相对路径,而相对路径是相对于工作目录的。

    要么在代码中指定完整路径,要么确保在运行程序时将工作目录设置为所需的值。

    【讨论】:

    • 你想把文件写到哪里?工作目录,还是exe文件所在的目录?
    • 显然我不知道的神奇词是“工作目录”。不知道是什么,google了一下,问题解决了。为了帮助我的无知,我如何写入带有exe文件的目录?
    • 这取决于平台。但是,您确定要这样做吗?在大多数系统上,可执行文件通常存储在只读目录中。通常控制台应用程序会写入它们的工作目录。这是一个非常成熟的惯例。你的程序到底在做什么?
    【解决方案2】:

    如果您未指定完整路径名,则文件将存储在进程的当前文件夹中。您可以在 Eclipse 中更改它(告诉您在运行进程时是否从哪个文件夹运行)。

    如果您总是希望将文件存储在您的 EXE 所在的位置,或者 EXE 周围的某个位置,您可以自己找到该文件夹​​(main 的第一个参数是 EXE 文件的位置)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-02
      • 2011-03-27
      • 2012-08-22
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      相关资源
      最近更新 更多