11.文件操作

1.相关类处理

		QFile、QTextStream、QFileInfo
		QFile:文件基本操作
		QTextStream:文本流--会自动处理编码转换,解决一些乱码问题
		QFileInfo:操作文件信息

2.QFile:
2.1 继承关系

	QObject--QIODevice--QFileDevice--QFile

QIODevice:QT对输入输出设备抽象,提供了操作设备的一系列接口。
	
接口:
	QFile(const QString & name)  //使用文件名构造一个QFile对象,文件名可以包含路径和文件名
	void	setFileName(const QString & name)  //如果构造没指定,也可以通过这个接口指定一下
	bool	exists() //判断文件是否存在
	bool 	open(OpenMode mode) //从QIODevice继承,
		OpenMode取值:
			QIODevice::ReadOnly
			QIODevice::WriteOnly
			QIODevice::ReadWrite
			...
			
	bool	remove()  //删除文件
	bool	rename(const QString & newName)	  //重命名文件
	qint64	read(char * data, qint64 maxSize)
	QByteArray	read(qint64 maxSize)  //读取最大maxSize字节并返回一个QByteArray
	QByteArray	readAll()  //读取缓冲区所有数据并返回一个QByteArray

	qint64	write(const char * data, qint64 maxSize)
	qint64	write(const QByteArray & byteArray)
	
	qint64	pos() const  //得到当前读写指针的位置
	bool 	seek(qint64 pos)  //重新设置读写指针位置
	
	bool QFileDevice::resize(qint64 sz)  
		重设文件大小,可用于清空文件,比如resize(0)
		
Signals:
	void readyRead()
		当文件有数据时候,会触发此信号

2.2 编程实例
a.创建一个read.txt文件,在里面写入英文内容。使用QFile类读取文件中内容,
并显示到界面组件。打开文件使用绝对路径。
b.将英文内容换成中文,再次读取,看是否会成功。
c.转换文件编码格式为utf-8,再次读取。

3.QTEXTSTREAM

QTextStream(QIODevice * device)
	QString	read(qint64 maxlen)
	QString	readAll()
	QTextStream &	operator<<(任意类型)
	
	QTextStream会自动将 Unicode 编码同操作系统的编码进行转换,这一操作对程序员是透明的。
	系统本地编码使用如下方法告知QTextStream。
    QTextCodec *code = QTextCodec::codecForName("utf-8");
    QTextCodec::setCodecForLocale(code);	
	
	编程实例:
	创建一个write.txt文件,使用QTextStream类往文件写入内容,提前指定系统编码。

4.QFILEINFO:方便的获取文件的某些属性

QFileInfo(const QString & file)
	QString	absoluteFilePath() //返回文件绝对路径,包含文件名
	QString	absolutePath() //不包含文件名
	QString	baseName() const  //文件名,不包含扩展名
	bool	exists() const  //是否存在
	bool	isFile()
	bool	isDir()
	bool	isSymLink()
	...
	qint64	size() const  //文件大小

编程实例:文件拷贝器
窗口上放置一个按钮和一个进度条部件,点击按钮后,
打开对话框选择源文件,选择后再打开对话框选择
目标文件存放位置和名称,然后进行拷贝操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值