我正在创建一个使用fstream
来读取/写入文件的File类。我在功能方面没有问题,而是关于fstream
对象的生命周期的最佳实践。
将fstream
对象存储为为每个新File(path)
创建的成员变量,并在每个File实例的生命周期内使用fstream
,是否更好?
或者,对于我可以在文件实例(readBytes()
,writeBytes()
,exists()
,isDirectory()
等)上调用的每个函数,我应该声明一个本地ifstream/ofstream
,做需要做的事情,当函数存在时,它们会超出范围并自动关闭?
在第一种情况下,我担心如果我有许多文件“打开”,那么同时激活许多流将会受到惩罚。
在第二种情况下,连续创建和销毁fstream
个对象似乎效率低下。
任何有此事可以评论的人都会非常感激!
谢谢, 乔恩。
答案 0 :(得分:0)
你已经把两个问题钉在了头上。通常,最有效的方法是保持文件(打开),直到您冒着用完文件描述符的风险。在某些系统上,文件描述符不会立即回收,因此您需要通过在用完之前关闭一些文件来限制对描述符的使用。
如果你知道更多关于哪些文件被更频繁地读/写的信息,那些文件只能以大块的形式读/写等,你可以关闭那些必须再次打开它们的惩罚相对较小的文件。 / p>