首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在程序文件中访问没有完整路径的文件

如何在程序文件中访问没有完整路径的文件
EN

Stack Overflow用户
提问于 2022-02-26 00:00:11
回答 1查看 352关注 0票数 0

我在一个WinUI3项目中使用c++/winrt,我试图让应用程序拉出一个文本文件,用户可以从中选择一个选项。我试图到达的文件在项目文件夹中,并包含在项目中。目前,我已将文件路径设置为我的设备,以便它从我的目录中提取文本文件。我希望应用程序能够从程序文件中读取,而不是当前编码的长文件路径。我试图更改文件的相对路径,并使用fstream函数读取文件。我也试过使用“飞机/飞机. that”,但也没用。

下面是代码的一个片段。

代码语言:javascript
复制
fstream aircraftFile;
string info;

void MainWindow::loadPlatformData()
ifstream aircraftFile; //File Object for list
aircraftFile.open("C:\\Users\\TimmyK\\Documents\\GitHub\\sentinel3\\Sentinel3\\Aircrafts\\Aircrafts.txt", ios::in);
EN

回答 1

Stack Overflow用户

发布于 2022-03-03 04:34:44

我的猜测是,您正在编写一个UWP项目,这就是为什么对您文件的完全路径访问失败的原因。UWP限制了每个Microsoft对文件系统的访问。

对于UWP项目,在文件属性中将文件标记为Content Yes,以便将其放置到应用程序的布局包中。通常,“当前工作目录”指向打包程序的安装位置。您可以使用以下方法获得到此目录的完整路径:

代码语言:javascript
复制
auto installdir = Windows.ApplicationModel::Current().InstalledLocation();
std::wstring str = installdir.Path().c_str();

对于Win32“经典”桌面应用程序,没有特定的打包或安装解决方案,因此有很多不同的方法。在Visual中,启动调试器或运行程序时,“当前工作目录”将是项目目录,但如果从命令行运行EXE,则它将位于另一个目录中。

要查找每个IInspectable正在运行的EXE目录,请使用GetModuleFileName

代码语言:javascript
复制
wchar_t exePath[MAX_PATH] = {};
DWORD nc = GetModuleFileNameW(nullptr, exePath, MAX_PATH);
if (nc > MAX_PATH || nc == 0)
{
    // Error condition
}

一个典型的模式是查看EXE文件夹,然后“遍历”目录查找资产文件。这是我们在DirectX示例中为Win32做的大量工作。见FindMedia

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71272949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档