close()关闭文件方法

简介: 我们知道,调用 open() 方法打开文件,是文件流对象和文件之间建立关联的过程。那么,调用 close() 方法关闭已打开的文件,就可以理解为是切断文件流对象和文件之间的关联。注意,close() 方法的功能仅是切断文件流与文件之间的关联,该文件流并会被销毁,其后续还可用于关联其它的文件。close() 方法的用法很简单,其语法格式如下:void close( )可以看到,该方法既不需要传递任何参数,也没有返回值。举个例子: #include <fstream> using namespace std; int main() {

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

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

void close( )

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

举个例子:

#include <fstream>
    using namespace std;
    int main()
    {
        const char *url="http://c.biancheng.net/cplus/";
        ofstream outFile("url.txt", ios::out);
        //向 url.txt 文件中写入字符串
        outFile.write(url, 30);
        //关闭已打开的文件
        outFile.close();
        return 0;
    }

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

http://c.biancheng.net/cplus/

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

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

值得一提的是,《C++处理输入输出错误》一节中介绍了 4 种流状态,它们也同样适用于文件流。当文件流对象未关联任何文件时,调用 close() 方法会失败,其会为文件流设置 failbit 状态标志,该标志可以被 fail() 成员方法捕获。例如:

#include <iostream>
    #include <fstream>
    using namespace std;
    int main()
    {
        const char *url="http://c.biancheng.net/cplus/";
        ofstream outFile;
        outFile.close();
        if (outFile.fail()) {
            cout << "文件操作过程发生了错误!";
        }
        return 0;
    }

程序执行结果为:

文件操作过程发生了错误!
相关文章
|
6月前
|
开发框架 .NET
阅读器关闭时尝试调用Read无效时的解决方法
阅读器关闭时尝试调用Read无效时的解决方法
|
6月前
|
网络协议 Linux API
Linux网络编程:shutdown() 与 close() 函数详解:剖析 shutdown()、close() 函数的实现原理、参数说明和使用技巧
Linux网络编程:shutdown() 与 close() 函数详解:剖析 shutdown()、close() 函数的实现原理、参数说明和使用技巧
496 0
|
6月前
timedatectl 如何关闭
【5月更文挑战第24天】timedatectl 如何关闭
74 0
|
6月前
|
Java 测试技术
使用try-catch-finally关闭资源更优雅的关闭try-with-resource
使用try-catch-finally关闭资源更优雅的关闭try-with-resource
86 1
|
6月前
关闭文件
关闭文件。
38 2
|
缓存 Linux
流的打开和关闭
流的打开和关闭
144 0
|
Java 数据库连接
还在用try-finally中关闭各种资源,你不累吗?
相信大多数人在使用Java的时候,经常会使用到try-finally去关闭各种打开的资源,比如数据库连接,文件流等。于是,我们的代码经常就会像这个样子:
|
开发者 Python
关闭文件|学习笔记
快速学习 关闭文件
106 0
|
Oracle 关系型数据库 Linux
[20180211]11g关闭AMM.txt
[20180211]11g关闭AMM.txt --//指点别人的系统关闭AMM,使用hugepages遇到问题,主要问题是对方设置如下参数在spfile文件中: *.
1311 0
|
网络协议 C语言 Windows
关于close和shutdown
我们知道TCP是全双工的,可以在接收数据的同时发送数据。假设有主机A在和主机B通信,可以认为是在两者之间存在两个管道。就像这样:A ---------> BA
842 0