page contents

C++ close()关闭文件方法详解

调用 open() 方法打开文件,是文件流对象和文件之间建立关联的过程。那么,调用 close() 方法关闭已打开的文件,就可以理解为是切断文件流对象和文件之间的关联。

我们知道,调用 open() 方法打开文件,是文件流对象和文件之间建立关联的过程。那么,调用 close() 方法关闭已打开的文件,就可以理解为是切断文件流对象和文件之间的关联。注意,close() 方法的功能仅是切断文件流与文件之间的关联,该文件流并会被销毁,其后续还可用于关联其它的文件。

close() 方法的用法很简单,其语法格式如下:

void close( )

可以看到,该方法既不需要传递任何参数,也没有返回值。

举个例子:



  1. #include <fstream>

  2. using namespace std;

  3. int main()

  4. {

  5. const char *url="https://six.club/articles";

  6. ofstream outFile("url.txt", ios::out);

  7. //向 url.txt 文件中写入字符串

  8. outFile.write(url, 30);

  9. //关闭已打开的文件

  10. outFile.close();

  11. return 0;

  12. }

运行程序,在该程序同目录下会生成一个 url.txt 文件,其内部存储的数据为:

https://six.club/articles

有些读者可能发现,即便上面程序中不调用 close() 方法,也能成功向 url.txt 文件中写入 url 字符串。这是因为,当文件流对象的生命周期结束时,会自行调用其析构函数,该函数内部在销毁对象之前,会先调用 close() 方法切断它与任何文件的关联,最后才销毁它。

强烈建议读者,使用 open() 方法打开的文件,一定要手动调用 close() 方法关闭,这样可以避免程序发生一些奇葩的错误!


当文件流对象未关联任何文件时,调用 close() 方法会失败,其会为文件流设置 failbit 状态标志,该标志可以被 fail() 成员方法捕获。例如:



  1. #include <iostream>

  2. #include <fstream>

  3. using namespace std;

  4. int main()

  5. {

  6. const char *url="https://six.club/articles";

  7. ofstream outFile;

  8. outFile.close();

  9. if (outFile.fail()) {

  10. cout << "文件操作过程发生了错误!";

  11. }

  12. return 0;

  13. }

程序执行结果为:

文件操作过程发生了错误!


attachments-2021-05-EwZ9t6nX60a79f2fca213.jpg

  • 发表于 2021-05-21 19:55
  • 阅读 ( 733 )
  • 分类:C/C++开发

0 条评论

请先 登录 后评论
小柒
小柒

1470 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章