qt文件操作

二、文件操作

2.1、QFile

QFile 类提供了 一个用于读/写文件的接口,它可以用来读/写文本文件、二进制文件和 Qt 资源的 I/0 设备。

一般在构建 QFile 对象时便指定文件名,当然也可以使用 setFileName ()进行设置。可以使用 exists() 来检查文件是否存在使用 remove()来删除一个文件 。

一个文件可以使用 open() 打开,使用 close()关闭,使用 flush()刷新 ,文件的读写可以使用 read ()、 readLine ()、 readAll ()和 write (),可以使用自size()函数来获取文件的大小,使用 seek ()来定位到文件 的任意位置,使用 pos ()来获取当前的位置,使用 atEnd ()来判断是否到达了文件的末尾 。

还是可以用以下学过FILE,fstream这些来进行文件操作

2.2、打开并写入文件
文件操作流程 打开>写入/读取>关闭

访问一个设备以前,需要使用 open ()函数打开该设备,而且必须指定正确的打开模式,不同的打开模 式之间可以使用“|”符号同时使用。

打开设备后可以使用 write()或者 putChar()来进行写人,可以使用seek函数进行文件指针移动(如果 有),使用read ()、 readLine ()或者 readAll ()进行读取,最后使用 close()关闭设备。

    /*
     * ReadOnly = 0x0001,       //只读,文件不存在就报错
        WriteOnly = 0x0002,     //只写,文件不存在就创建新的
        ReadWrite = ReadOnly | WriteOnly,       //读写,文件不存在就报错
        Append = 0x0004,        //追加,文件不存在就创建新的,文件指针在末尾
        Truncate = 0x0008,      //只写,文件存在就清空里面的内容,重写,文件不存在就创建新的
        Text = 0x0010,          //以文本方式打开
    */



    QFile file("D:/test/1.txt");
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))//打开方式
    {
        qDebug() << file.errorString();
    }
    else
    {
        qDebug() << "打开成功!";
    }
    file.write("hello thank you!");  //可能会有字符集问题
    file.close();

2.3、读取里面所有内容
QFile file("D:/test/1.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) 
{
	qDebug() << file.errorString();
}
else
{
	qDebug() << "打开成功!";
}

//QString str= file.readAll();	//用qstring存一下
//qDebug()<<str;


while(!file.atEnd())
{
	QByteArray line=file.readLine();
	qDebug()<<line;
}
file.close();

2.4、其他操作
获取的文件大小:size()
更改文件的名字:rename("新名字")
删除文件:remove()
获取一行中的某个位子的字符:先用readLine()读完这行,然后通过 string的mid函数处理
mid(5,1)从第五个位置,获取1个字符
移动文件指针:seek(5)

2.5、QIOdevice类

QIODevice 类是 Qt 所有 I/O 设备的基础类 ,为QFIle等类提供一个抽象接口

继承图,QFile这些都是他的子类

posted @ 2022-10-06 22:25  宣哲  阅读(176)  评论(0编辑  收藏  举报