Qt文件操作 QFile的使用

文件QFile

    QFile类提供了一个用于读/写文件的接口,是一个可以用来读/写文本文件二进制文件Qt资源的I/O设备。QFile可以单独使用,也可以和QTextStream或者QDataStream一起使用,这样会更方便。一般在构建QFile对象时便指定文件名,当然也可以使用setFileName()在其他任何时间进行设置。无论在哪种操作系统上,文件名路径中的文件分隔符都需要使用‘/’符号。可以使用exists()来检查文件是否存在,remove()来删除一个文件。更多与文件系统相关的高级操作在QFileInfo和QDir类中提供。

  1. 一个文件可以使用open()来打开,使用close()来关闭,使用flush()来刷新;
  2. 文件的数据读/写一般使用 QDataStream 或者 QTextStream来完成,不过也可以使用继承自QIODevice类的一些函数,比如read()、readLine()、readAll()和write();
  3. 一次只操作一个字符的getChar()、putChar()和ungetChar()等函数;
  4. 可以使用size()函数来获取文件的大小;
  5. 使用seek()来定位到文件的任意位置;
  6. 使用pos()来获取当前的位置,使用atEnd()来判断是否到达了文件的末尾。
文件信息QFileInfo

    QFileInfo类提供了与系统无关的文件信息,包括文件的名称和在文件系统中的位置(路径),文件的访问权限以及它是否是一个目录或者符号链接等。QFileInfo也可以获取文件的大小和最近一次修改/读取的时间等等,还可以获取Qt资源的相关信息。

  1. QFileInfo可以使用相对(relative)路径或者绝对(absolute)路径来指向一个文件;
  2. 使用isRelative()函数可以判断一个QFileInfo对象使用的是相对路径还是绝对路径,还可以使用makeAbsolute()来将一个相对路径转换为绝对路径;
  3. QFileInfo指向的文件可以在QFileInfo对象构建时设置,或者在以后使用setFile()来设置。
  4. 可以使用exists()来查看文件是否存在;
  5. 使用size()可以获取文件的大小;
  6. 文件的类型可以使用isFile()、isDir()和isSymLink()来获取;
  7. symLinkTarget()函数可以返回符号链接指向的文件的名称。
  8. 可以分别使用path()和fileName()来获取文件的路径和文件名;
  9. 可以使用baseName()来获取文件名中的基本名称;
  10. 使用suffix()来获取文件名的后缀,使用completeSuffix()来获取复合后缀。
  11. 文件的日期可以使用created()、lastModified()和lastRead()来返回;
  12. 访问权限可以使用isReadable()、isWritable()和isExecutable()来获取;
  13. 文件的所有权可以使用owner()、ownerId()、group() 和groupId()来获取;
  14. 可以使用permission()函数将文件的访问权限和所有权一次性读取出来。
示例代码
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //以只写的方式打开,如果文件不存在,那么会创建该文件。
    QFile file("myfile.txt");
    if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        qDebug() << file.errorString();
    }
    file.write("hello Qt!,OFile test!");
    file.close();

    //获取文件信息
    QFileInfo info(file);
    qDebug()<<"绝对路径:"<<info.absoluteFilePath();
    qDebug()<<"文件名:"<<info.fileName();
    qDebug()<<"基本名称:"<<info.baseName();
    qDebug()<<"后缀:"<<info.suffix();
    qDebug()<<"创建时间:"<<info.created();
    qDebug()<<"大小:"<<info.size();

    //以只读方式打开
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebug() <<file.errorString();
    }
    qDebug()<<"文件内容:"<<file.readAll();
    qDebug()<<"当前位置:"<<file.pos();
    file.seek(0);

    QByteArray  array;
    array = file.read(5);

    qDebug()<<"前5个字符:"<<array
           <<"当前位置:"<<file.pos();

    file.seek(15);
    array = file.read(5);
    qDebug()<<"第16~20个字符:"<<array;
    file.close();
    return a.exec();
}

说明: 本文档大部分内容借鉴霍亚飞的《QtCreator快速入门》,在此表示感谢!

你可能感兴趣的:(QT)