赞
踩
目录
5. 复制文件 QFile::copy(”原地址,要复制的位置”)
7. 写入文件 wirte() 、QTextStream()
8. 读取文件 QByteArray、 QTextStream
官方文档:
- A QDir is used to manipulate path names, access information regarding paths and files, and manipulate the underlying file system. It can also be used to access Qt's resource system.
- Qt uses "/" as a universal directory separator in the same way that "/" is used as a path separator in URLs. If you always use "/" as a directory separator, Qt will translate your paths to conform to the underlying operating system.
- A QDir can point to a file using either a relative or an absolute path. Absolute paths begin with the directory separator (optionally preceded by a drive specification under Windows). Relative file names begin with a directory name or a file name and specify a path relative to the current directory.
- //绝对路径absolute path
- QDir("/home/user/Documents")
- QDir("C:/Users")
-
- //相对路径relative path
- QDir("images/landscape.png")
代码示例
- //创建对象
- QDir dir_1;
- //.标识当前当前文件夹
- //相对路径下创建名为csvFile的文件夹
- dir_1.mkdir("./csvFile");
-
- //exists()方法检测文件目录是否存在
- //检测是否有名为csvFile的文件,存在返回true,否则false。
- if(dir_1.exists("./csvFile")){
- qDebug()<<"文件目录已存在"<<endl;
- }
运行结果:debug文件夹下生成对应文件
代码示例
- QDir dir_2;
- dir_2.mkpath("./test/csvFile");
-
- if(dir_2.exists("./test/csvFile")){
- qDebug()<<"文件目录已存在"<<endl;
- }
运行结果:
- QDir dir_3;
- dir_3.rmdir("./csvFile");
- QDir dir_3;
- dir_3.rmpath("./test/csvFile");
dir.removeRecursively("./test/csvFile");
- QDir dirOld(oldPath);
- dirOld.rename(oldPath, newPath);
官方文档:
- QFile is an I/O device for reading and writing text and binary files and resources. A QFile may be used by itself or, more conveniently, with a QTextStream or QDataStream.
- The file name is usually passed in the constructor, but it can be set at any time using setFileName(). QFile expects the file separator to be '/' regardless of operating system. The use of other separators (e.g., '\') is not supported.
- You can check for a file's existence using exists(), and remove a file using remove(). (More advanced file system related operations are provided by QFileInfo and QDir.)
- The file is opened with open(), closed with close(), and flushed with flush(). Data is usually read and written using QDataStream or QTextStream, but you can also call the QIODevice-inherited functions read(), readLine(), readAll(), write(). QFile also inherits getChar(), putChar(), and ungetChar(), which work one character at a time.
- The size of the file is returned by size(). You can get the current file position using pos(), or move to a new file position using seek(). If you've reached the end of the file, atEnd().
QIODevice::ReadOnly | 以只读方式打开文件 |
QIODevice::WriteOnly | 只写方式 |
QIODevice::ReadWrite | 读写方式 |
QIODevice::Append | 追加模式打开,新写入文件的数据添加到文件尾部 |
QIODevice::Truncate | 截取方式打开文件,文件原有的内容全部被删除 |
QIODevice::Text | 文本方式打开文件,读取时“\n”被自动翻译为换行符 |
代码示例
- QFile f("./test/xxx.csv");
- if(!f.open(QIODevice::Append))
- {
- qDebug()<<"创建成功啦"<<endl;
- }else{
- qDebug()<<"创建失败啦"<<endl;
- }
- QFile f("./test/xxx.csv");
- if(f.exists())
- {
- qDebug()<<"文件存在"<<endl;
- }else{
- qDebug()<<"文件不存在"<<endl;
- }
- QFile f("./test/xxx.csv");
- if(f.remove())
- {
- qDebug()<<"删除成功"<<endl;
- }else{
- qDebug()<<"删除失败"<<endl;
- }
- QFile f("./test/xxx.csv");
- f.rename("新名称");
QFile::copy("./test/xxx.csv","./test/xxx2.csv");
代码示例
- QFile f("./test/xxx.csv");
- QFileInfo info(f);
- qDebug()<<"文件名"<<info.fileName()<<endl;
- qDebug()<<"基本名称"<<info.baseName()<<endl;
- qDebug()<<"后缀"<<info.suffix()<<endl;
- qDebug()<<"创建时间"<<info.birthTime()<<endl;
- qDebug()<<"大小"<<info.size()<<endl;
运行结果:
/*
件名 "xxx.csv"
基本名称 "xxx"
后缀 "csv"
创建时间 QDateTime(2023-09-27 15:45:01.484 中国标准时间 Qt::LocalTime)
大小 3
*/
什么是CSV文件?
- CSV文件以纯文本格式存储的表格数据(数字和文本)。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
- CSV全称Comma-Separated Values,即逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号。最常见的分隔符是逗号或制表符。CSV文件可以被认为是一个“平面文件数据库”。
- CSV数据交换格式是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用,最常用于程序之间传输表格数据。大部分程序都支持某种CSV变体,至少是作为一种可选择的输入或输出格式。
- CSV没有通用标准规范,不同的程序间CSV的标准有差异很常见,因此,术语“CSV”泛指具有以下特征的任何文件:
- 纯文本,使用某个字符集,比如ASCII、Unicode、UTF-8或GB2312;
- 由记录组成(典型的是每行一条记录);
- 每条记录被分隔符分隔为字段;
- 每条记录都有同样的字段序列。
- CSV文件格式非常简单,被几乎所有的电子表格(如Excel、WPS、Numbers 表格)和数据库管理系统支持。许多编程语言都有可利用的库来支持CSV文件。
代码示例
- //创建对象
- QFile f("./test/xxx.csv");
- //打开文件:以读写方式
- f.open(QIODevice::ReadWrite );
-
- //方式1
- QByteArray qba = "A,B,C,D,E,F,G\rG,F,E,D,C,B,A";
- f.write(qba);
-
- //方式2
- QTextStream qts(&f);
- QString str1="1,2,3,4,5,6,7";
- QString str2="1,2,3,4,5,6,7";
- QString str3="A,B,C,D,E,F,G";
- //endl为换行
- qts<< str1 <<endl << str2 <<str3;
-
- //关闭文件,否则文件会被锁定导致其他软件无法打开
- f.close();
运行结果如下:
/*
wirte() 方式写入:
QTextStream()方式写入:
*/
代码示例
- //方式1
- QByteArray array2 = f.readAll();
- qDebug() << array2;
-
- //方式2
- QTextStream in(&f);
- while (!f.atEnd()) {
- QString line = f.readLine();
- qDebug() << line;
- }
运行结果:
/*
方式1:
"1,2,3,4,5,6,7\n1,2,3,4,5,6,7\nA,B,C,D,E,F,G”
方式2:
"1,2,3,4,5,6,7\n" "1,2,3,4,5,6,7\n" "A,B,C,D,E,F,G"
*/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。