0

我正在编写一个 c++ 程序,这是任务:

我有一个string proj_Name和另一个字符串地址,我的程序旁边有一个名为 root 的文件夹。现在我必须proj_name在根文件夹中创建一个文件夹,并将地址中的所有内容复制到这个新文件夹中。

当使用 linux 终端创建目录或处理文件时,我键入mkdir proj_namecp [src] [dst]. 有人告诉我,要在我的程序中使用终端命令,我必须使用系统调用,但我不知道什么是系统调用或如何使用它。

除此之外,我可能会在根目录下创建更多项目文件夹,并且我必须能够访问我的程序中的每个文件夹。

如何使用 OOP 设计来处理这些文件和文件夹(例如,我proj_name从用户那里得到一个,我必须在根目录中找到相应的文件夹,然后对该项目执行一些任务)?

绝对我应该有一个_project_ class,但我不知道它需要什么成员变量。此外,有人告诉我,我可以像这样以递归方式复制文件夹:复制文件夹->打开它->为每个文件->复制文件->为每个文件夹从头开始执行此算法。

有人可以帮我吗?

提前致谢。

4

1 回答 1

1

我假设这是家庭作业,尽管您没有表明它是。三个解决方案浮现在脑海:

  1. 使用system()调用创建命令行字符串并执行它们。坦率地说,这很糟糕,原因有很多:(i)很难检查命令是否有效,(ii)很容易插入恶意代码(即黑客),以及(iii)它是非常特定于平台的。

  2. 正如您所提到的,您可以使用系统调用来复制文件、创建目录等。如果您在 UNIX 上工作,您可以看看这个问题,这可能会有所帮助。同样,这里的缺点是它非常特定于平台。

  3. 最后,您可以使用通用库,例如​​ Boost 文件系统,它是最好的(这三种解决方案中的),但如果您必须证明可以在 OO 中建模文件系统,则可能对您没有太大帮助。不过,通过 API 查看可能会为您提供一些关于各种对象如何在 OO 设计中组合在一起的线索。

于 2012-05-18T13:58:02.237 回答