自定义文件类中的fstream对象的生命周期

时间:2012-03-30 12:56:05

标签: c++ fstream

我正在创建一个使用fstream来读取/写入文件的File类。我在功能方面没有问题,而是关于fstream对象的生命周期的最佳实践。

fstream对象存储为为每个新File(path)创建的成员变量,并在每个File实例的生命周期内使用fstream,是否更好?

或者,对于我可以在文件实例(readBytes()writeBytes()exists()isDirectory()等)上调用的每个函数,我应该声明一个本地ifstream/ofstream,做需要做的事情,当函数存在时,它们会超出范围并自动关闭?

在第一种情况下,我担心如果我有许多文件“打开”,那么同时激活许多流将会受到惩罚。

在第二种情况下,连续创建和销毁fstream个对象似乎效率低下。

任何有此事可以评论的人都会非常感激!

谢谢, 乔恩。

1 个答案:

答案 0 :(得分:0)

你已经把两个问题钉在了头上。通常,最有效的方法是保持文件(打开),直到您冒着用完文件描述符的风险。在某些系统上,文件描述符不会立即回收,因此您需要通过在用完之前关闭一些文件来限制对描述符的使用。

如果你知道更多关于哪些文件被更频繁地读/写的信息,那些文件只能以大块的形式读/写等,你可以关闭那些必须再次打开它们的惩罚相对较小的文件。 / p>