【问题标题】:How to get all file names in current directory?如何获取当前目录中的所有文件名?
【发布时间】:2012-08-11 08:23:53
【问题描述】:

我的目标是构建一个程序来重命名当前工作目录中的所有文件,这样它们就没有任何空格、任何特殊字符或任何重音字符(例如 É 将变为 E)。我打算使用 int rename(const char *oldname, const char *newname); 。我的问题是如何获取当前工作目录中的文件?我想将我正在创建的可执行文件放在一个包含错误名称文件的文件夹中并运行它,然后所有文件都被重命名。

独立于平台的解决方案会更好,否则我使用的是 Windows 7 Enterprise 32bit。

这个问题不是重复的,因为我不知道opendir ("c:\\src\\"); 的路径,它是执行程序的任何目录。

【问题讨论】:

  • boost::filesystem 有一个directory_iterator 什么的。
  • 我很困惑,因为我认为我必须使用 Boost 库,但我在这个问题中表示它已被弃用。 stackoverflow.com/questions/6108650/…所以不需要提升?
  • @Celeritas Boost.Filesystem 尚未被弃用。问题是关于一个已被弃用的特定功能。使用 Boost.Filesystem,它比其他方式更容易使用。

标签: c++ file rename


【解决方案1】:

这是一个示例代码:

http://bytes.com/topic/c/answers/869208-list-files-directory

本质上,您使用这些 API:FindFirstFileFindNextFile

有关跨平台解决方案,请参阅 findfirst()findnext()

【讨论】:

    【解决方案2】:

    一个选项是使用 opendir(".") ,这将打开当前目录。

    【讨论】:

    • 目前的C++标准似乎没有方便的接口来读取目录中的所有文件。未来版本应添加此功能。 unix 系统具有处理文件系统的所有 C 接口。 Unix 实际上非常擅长这一点,它通过 File 的抽象来表示所有文件系统对象。
    猜你喜欢
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    相关资源
    最近更新 更多