我需要获取文件夹中子文件夹的所有路径(使用WinAPI和C++。)到目前为止,我找到的唯一解决方案是递归调用FindFirstFile/FindNextFile但是在具有更深层次结构的文件夹上执行此操作需要花费大量时间。所以我想知道,只是为了获取文件夹名称,是否有更快的方法? 最佳答案 如果你真的只需要子文件夹,你应该能够使用FindFirstFileExsearchoptions过滤掉非目录。文档建议这只是一个建议标志,但您的文件系统可能支持此优化-试一试。FindExSearchLimitToDirectoriesThisisa
我有带FAT32和NTFS分区的HDD(比如1TB),我不知道上面存储了哪些文件,但在需要时我想快速访问大文件,比如超过500MB。我不想扫描我的整个硬盘,因为它非常耗时。我需要快速的结果。我想知道是否有任何我可以直接调用的NTFS/FAT32API-我的意思是如果它们有一些关于存储文件的元数据那么它会更快。我想用C++和C#编写我的程序。编辑如果扫描HDD是唯一的选择,那么我能做些什么来确保最佳性能。比如-我可以跳过扫描系统文件夹,因为我只对用户数据感兴趣。 最佳答案 如果您愿意自己做一些很多的额外工作来加快速度,您也许能够完成一
本质上,我需要实现一个程序来充当用户空间文件系统,它实现非常简单的操作,例如查看磁盘上的内容、将文件复制到本地文件系统或从本地文件系统复制文件到我的文件系统(包含在一个名为“disk01”的文件并从我的文件系统中删除文件。我基本上是在寻找一个跳板或一些关于我可以从哪里开始的提示,因为我不确定如何创建我自己的“磁盘”并将其他文件放入其中,这是一项家庭作业。只是一个正在寻找方向的C++学生。编辑:我知道这个概念已经在多个不同的地方使用,例如“VFS”或虚拟文件系统,有点像zip文件(您只能通过可以处理zip文件的程序查看内容)。我基本上是在尝试编写自己的程序,类似于zip或winrar或其
我正在开始一个新项目,需要选择一个构建系统。我讨厌必须手动将每个C++源文件添加到我的构建规则中,因为这种事情应该在2016年之前实现自动化,并且在重构时会导致额外的繁忙工作(重命名头文件中的类、源文件和构建系统文件...)。当我看到这篇文章时,我开始使用CMake递归文件通配:SpecifysourcefilesgloballywithGLOB?这表明globbing是邪恶的,因为CMake使用两个阶段进行构建(cmake和make),而在正常使用中用户只重新运行第二阶段(make)。乍一看,Bazel还允许文件通配。与Bazel一起使用是邪恶的吗?在代码库上运行find这样的扩展问
有没有人遇到过满足这些要求的优秀文件系统虚拟化库?跨平台:至少是Win32和Linux,最好是OSX支持协议(protocol):中小企业FTPSFTP本地FS基于URL与客户端工厂的抽象C++接口(interface):smb://[用户[:密码]@]主机/共享/路径...ftp://[用户[:密码]@]主机/路径...sftp://[用户[:密码]@]主机/路径...文件://路径...提供以下方法:列出目录,最好返回具有类似structstat属性的条目移动复制删除数据奖励:低级文件访问接口(interface)(打开、读取、写入、关闭...)我见过一些满足这些要求的子集的好库(
有没有办法检测单个文件的文件系统大小限制(例如fat32上的4gb)?它必须在Windows操作系统上运行,但最好是一个可移植的解决方案。检测文件系统类型可能是一种变通方法,但我也不知道您该怎么做。有人可以帮我吗?提前谢谢你托拜厄斯 最佳答案 您可以使用GetVolumeInformation在Windows上检测文件系统类型 关于c++-如何检测单个文件的文件系统大小限制,我们在StackOverflow上找到一个类似的问题: https://stackov
我正在尝试比较两个目录并找出里面有哪些不同的文件。所以我使用boost::filesystem::recursive_directory_iterator将每个目录的所有内容添加到相应的vector中。然后我按字母顺序对每个vector进行排序并开始比较路径。问题是它包含“基本”路径,我不希望这样,例如:Version1/Assets/info.txtVersion2/Assets/info.txt那些路径比较不同,但我希望它们比较相同。澄清一下,我什至还没有检查二进制文件,到目前为止只是路径名。我会这样比较它们:/Assets/信息.txt我已经浏览了几个小时的boost文档,我相信
由于GoogleNaCl是C++,我能否以某种方式访问文件系统?如果我要创建游戏或桌面应用程序,那是非常需要的。 最佳答案 由于安全限制,NaCl不允许您打开磁盘上的任何文件夹。但是,它确实授予访问沙盒、混淆文件系统的能力。您可以查看最新SDK中的PONG示例,了解如何使用FileSystemAPI的示例。此外,此页面是了解文件系统工作原理的良好起点:https://developers.google.com/native-client/beta-docs/fileIO~主 关于c+
有几个关于获取experimental/filesystem的问题在最新版本的GCC和Clang中编译:experimental::filesystemlinkererror但是现在filesystem已被接受为c++17所以不再需要experimental或-lstdc++fs旗帜,对吧?错我什至不能#include在任一clang++的头部版本或g++当我试穿时:http://melpon.org/wandbox我还需要一些其他论据吗?-lstdc++fs就给我experimental版本,如何包含官方接受的版本? 最佳答案 C
我遇到这样一种情况,其中2个不同的进程(我的C++,其他由JAVA中的其他人完成)是某个共享数据文件的写入者和读取者。所以我试图通过编写这样的类来避免竞争条件(编辑:此代码已损坏,这只是一个示例)classReadStatus{boolcanRead;public:ReadStatus(){if(filesystem::exists(noReadFileName)){canRead=false;return;}ofstreamnoWriteFile;noWriteFile.open(noWriteFileName.c_str());if(!noWriteFile.is_open()){