草庐IT

FileSystems

全部标签

c++ - Windows map 文件系统

Windows资源管理器可以将驱动器盘符与文件系统或文件系统中的目录相关联。我如何从Windows7和Vista下的C++程序执行此操作?我对visualstudio文档和网络的搜索没有找到执行此操作的API调用。有人知道吗? 最佳答案 SetVolumeMountPoint功能似乎可以满足您的需求。您会发现很多relatedfunctions(磁盘管理、卷管理等)在MSDN(您作为Windows开发人员最好的friend,有时称为“Microsoft开发人员网络”或“Windows开发人员中心”)。

c++ - 使用 FILE_FLAG_DELETE_ON_CLOSE 标志创建文件

在描述我的问题之前,这里是我正在编写的程序(IHExplorer.exe)的描述:这是一个C++应用程序。IHExplorer应用程序看起来尽可能像Windows资源管理器窗口。但有一个异常(exception),那就是从这个资源管理器窗口中启动文件会首先将它们解密到用户的临时文件夹,然后启动与文件扩展名关联的应用程序并在关闭时删除文件。我遇到的问题是文件关闭时自动删除。这是一个场景:用户在IHExplorer中双击加密的.txt文件。IHExplorer解密内存中的.txt文件,然后使用::CreateFile将其写入%TEMP%,它返回文件的句柄(IHExplorer必须至少保持此

c++ - 有什么方法可以知道目录是否包含子目录?

我正在用C++工作。有什么方法可以知道一个目录是否包含子目录?CFileFind似乎必须搜索全部文件。如果唯一的子目录在列表的末尾并且有很多文件,则非常耗时。例如:目录A包含99995个文件和FindNextFileList末尾的一个子目录。我是否尝试了99995次,然后说:是的,它包含子目录? 最佳答案 Microsoft的RaymondChen写了一篇可能适用于此的帖子:Computingthesizeofadirectoryismorethanjustaddingfilesizes.本质上,他解释说像目录大小这样的信息不能存储

c++ - boost::filesystem 递归获取每个文件的大小

当参数是目录时,为什么这段代码会抛出错误?使用boost::recursive_directory_iterator和使用std::cout语句,我可以看到它从不打印目录;只有文件。但是,当我尝试调用boost::filesystem::file_size()时,会抛出一个错误,基本上是说我正在尝试获取目录的文件大小。错误(参数是"/home"):terminatecalledafterthrowinganinstanceof'boost::filesystem::filesystem_error'what():boost::filesystem::file_size:Operatio

c++ - 测试文件路径的等效性

程序中有两个字符串。它们每个都包含一些文件或文件夹的路径。如何在C++中检查这些路径是否指向同一个文件/文件夹?我可以使用WindowsAPI来执行此操作吗? 最佳答案 您可能会使用BoostFilesystem.它具有跨平台的额外优势;这显然也是一个潜在的优势。请注意下面加粗的API引用,以备您查看:GetFileInformationByHandle。equivalentboolequivalent(constpath&p1,constpath&p2);boolequivalent(constpath&p1,constpath&

c++ - 如何从其他线程停止 ReadDirectoryChangesW

我使用下一个代码来了解某个文件夹中的文件何时更改:HANDLEhDir=::CreateFile(path,FILE_LIST_DIRECTORY,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_OVERLAPPED,NULL);FILE_NOTIFY_INFORMATIONreturnData[1024];DWORDreturnDataSize=0;while(ReadDirectoryChangesW(hDir,ret

c++ - 如何使用 boost::fs 只加载 30 个最新文件而不是整个目录?

刚开始使用boost。使用它来加载图像集合。问题是文件夹中的图像数量会继续增加,我最终不想将它们全部添加到我的显示程序中。我在OSX上使用C++。如何调整此示例代码以仅加载目录顶部或底部的30张图像?只加载最新的文件会很棒,但我会满足于只改变它。不幸的是,在我的循环中只是说(it示例代码:fs::pathpPhoto(photobooth_texture_path);for(fs::directory_iteratorit(pPhoto);it!=fs::directory_iterator();++it){if(fs::is_regular_file(*it)){//--Perhap

c++从无文件系统执行代码

首先,很难想出一个标题,它有点模棱两可,但是哦,好吧。好吧,我有一个混合的c++和asm引导加载程序。我可以将它复制到我的mbr上并运行它。我遇到的唯一问题是mbr非常小。我假设它的目的是只调用驱动器上其他地方编写的外部代码。我的问题是,我不确定如何访问它。我的意思是我可以把数据放在那里,我只是不知道如何以编程方式访问该数据,因为本质上驱动器不会有“文件系统”,只有任意代码。我在网上搜索过,但真正的底层开发教程似乎很少。如果有的话,我什至准备好使用C++库。 最佳答案 好老BIOScalls,用于个人电脑。如果您的主板不是PC-您需

c++ - 在C程序中抽象文件系统的方法

我正在用SDL启动一个程序,它显然需要为文件系统加载资源。我希望程序中的文件调用独立于平台。我最初的想法是定义一个基于系统类型在预处理器中定义的宏(我们称它为PTH路径),然后在使用它的程序中进行文件调用。例如SDL_LoadBMP(PTH("data","images","filename"));将简单地转换为与文件系统相关的内容。如果宏是执行此操作的可接受方式,那么此类宏会是什么样子(我如何检查正在使用的系统,在宏中连接字符串?)如果不是,那么公认的做法是什么? 最佳答案 BoostFilesystemmodule可能是你最好的

c++ - 是否有异步方式知道文件已更改?

我想异步监视文件的任何更改。那就是当文件被修改/删除时,我想在我的程序中有一个回调(可能来自内核)。该文件只是一个纯文本文件。我知道可以使用轮询机制来做到这一点,但我正在寻找一种基于事件的解决方案。我阅读了有关inotify的信息,但看起来它需要修补我的内核。如果解决方案符合POSIX标准,那就更好了。 最佳答案 Inotify早在2005年就被合并到Linux内核中,所以除非您使用的是非常的旧系统,否则您应该能够开箱即用。我认为不存在针对此的POSIX兼容解决方案。MacOSX有FSEvents.同时检查manpage用于inot