QT中的文件操作
C语言中通过fopen/fread/fwrite/fclose进行文件操作
C++中通过fstream/>>/<</close进行文件操作
Linux中通过open/read/write/clos进行文件操作
Qt中同样可以使用上述文件操作
但是Qt同样封装了自己的一套文件操作,,在编写Qt程序时,推荐使用Qt自己提供的文件操作,和Qt的容器(如Qstring等)更加适配、
Qt提供QFile类来实现文件操作
继承体系
QFile类是用来实现文件操作的类
QTemporaryFile是一个临时文件类,当QFie销毁时,QTemporaryFile自动删除
QSaveFile是用于在写文件时,自动的把写的内容先写到临时文件中,不会破坏原有的文件,等写入操作完成后,将旧的文件删除,用新的文件替换旧的文件
QFile---文件类
对文件进行操作时,先创建QFile类
需要指定文件路径和父对象
然后通过QFile类重写的open进行文件打开
mode是打开方式,分为读方式打开,写方式打开,追加写方式打开等
打开文件后就可以进行读写操作
如:read()---由QIODevice提供
第一个是传入数组和数组大小,将读到的内容写入数组
第二个是将读到的内容以字节数组方式返回
第三个是一个读取文件所有数据,以字节数组方式返回
write()
第一个是直接指定要写入的字符数组和数组大小
第二个是直接传入要写入的数组
第三个是直接传入要写入字节数组
完成读写操作后就需要进行文件关闭---释放文件描述符,避免文件描述符表满了
close()
例:
通过菜单栏实现文件的打开,保存,通过多行编辑框实现文件的数据的写入和显示
在头文件声明文件打开和保存信号的槽函数,将QPlainTextEdit作为一个成员变量用来存储创建的QPlainTextEdit的指针,便于向多行输入框进行读写
设置布局
连接槽函数
在源文件进行定义实现槽函数
打开文件
保存文件
此时可以打开文件,将文件的数据显示到多行输入框,或者将多行输入框的数据保存到新建文件内
总结
对文件操作的流程是,通过弹出打开/保存文件对话框
QString path=QFileDialog::getOpenFileName(this)
QString path=QFileDialog::getSaveFileName(this)
获取要操作的文件的路径
在通过QFlie类创建对应文件类
QFile file(path)
再通过open()以读/写方式打开,需接收返回值,判断是否打开成功
若是读文件则调用用文件类调用readAll(),通过QString接收读取的数据---为QByteArrary类型,会自动转换为QString类型
若是写文件则调用文件类的write(),将要写入的数据传入wirte函数,需要转换为QByteArrary类型
QFileInfo---文件和目录信息
QFielInfo是Qt提供的一个用于获取文件相关属性的类,如文件名,文件大小,文件修改日期等
常用方法
方法 | 说明 |
isDir() | 检查该文件是否有目录 |
isExecutable() | 检查该文件是否是可执行文件 |
fileName() | 获得文件名 |
completeBaseName() | 获取完整的文件名 |
suffix() | 获取文件后缀名 |
completeSuffix() | 获取完整的文件后缀 |
size() | 获取文件大小 |
isFile() | 判断是否为文件 |
fileTime() | 获取文件创建时间,修改时间,最近访问时间等 |
例:
创建一个继承自QWidget的文件,在ui界面创建一个按钮,通过点击按钮弹出打开文件对话框,获取文件路径,通过文件路径创建QFileInfo类
转到clicked槽函数进行实现,打印文件的相关属性