Qfile 类介绍_第1页
Qfile 类介绍_第2页
Qfile 类介绍_第3页
Qfile 类介绍_第4页
Qfile 类介绍_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

今天学习QT的文件操作1、QIODevice直接继承自QObjectQIODevice类是输入/输出设备的基类。QIODevice为设备提供了公共实现和抽象接口用于读写块数据。QIODevice是一个抽象类,不能被实例化。被Q3Socket,Q3SocketDevice,QAbstractSocket,QBuffer,QFile,QLocalSocket,QNetworkReply,QProcess继承.=2、QFile继承自QIODeviceQFile类是一个操作文件的输入/输出设备。QFile是用来读写二进制文件和文本文件的输入/输出设备。QFile可以自己单独被使用,但是如果和QDataStream或QTextStream一起使用将更加方便。文件名通常可以通过构造函数来传递,但也可以使用setName()来设置。目录分隔符在任何操作系统下都使用“/,“/不被支持。你可以通过exists()来检查一个文件是否存在并且可以通过remove()来移去一个文件。更多操作系统相关的高级文件系统操作QT提供了QFileInfo和QDir类.文件可以用open()来打开、用close()来关闭、用flush()来刷新。数据通常可以使用QDataStream或者QTextStream进行读写,但你也可以使用read(),readLine(),readAll(),write()读写。QFile也支持getChar(),putChar(),和ungetChar()size()可以返回文件的大小。你可以通过使用pos()函数得到当前文件位置或者使用seek()移到一个新的文件位置。如果你到了文件的末尾,atEnd()返回真。例1:一行一行读取文件c-sharpview plaincopy1. #include2. #include3. #include4. #include5. intmain(intargc,char*argv)6. 7. QCoreApplicationa(argc,argv);8. /中文支持9. QTextCodec*codec=QTextCodec:codecForName(UTF-8);10. QTextCodec:setCodecForCStrings(codec);11. 12. QFilefile(/home/administrator/testdir/test.txt);13. if(!file.open(QIODevice:ReadOnly|QIODevice:Text)14. qDebug()Cantopenthefile!endl;15. 16. while(!file.atEnd()17. QByteArrayline=file.readLine();18. QStringstr(line);19. qDebug()str;20. 21. returna.exec();22. 使用QTextStream读取文件cppview plaincopy1. #include2. #include3. #include4. #include5. intmain(intargc,char*argv)6. 7. QCoreApplicationa(argc,argv);8. /中文支持9. QTextCodec*codec=QTextCodec:codecForName(UTF-8);10. QTextCodec:setCodecForCStrings(codec);11. /QTextCodec:setCodecForTr(codec);12. /QTextCodec:setCodecForLocale(codec);13. QFilefile(/home/administrator/testdir/test.txt);14. if(!file.open(QIODevice:ReadOnly|QIODevice:Text)15. qDebug()Cantopenthefile!endl;16. 17. QTextStreamin(&file);18. while(!in.atEnd()19. QStringline=in.readLine();20. qDebug()line;21. 22. returna.exec();23. QDataStream 重载了运算符了读数据cppview plaincopy1. #include2. #include3. #include4. #include5. intmain(intargc,char*argv)6. 7. QCoreApplicationa(argc,argv);8. /中文支持9. QTextCodec*codec=QTextCodec:codecForName(UTF-8);10. QTextCodec:setCodecForCStrings(codec);11. /QTextCodec:setCodecForTr(codec);12. /QTextCodec:setCodecForLocale(codec);13. QFilefile(/home/administrator/testdir/test.txt);14. if(!file.open(QIODevice:ReadWrite|QIODevice:Text)15. qDebug()Cantopenthefile!endl;16. 17. QTextStreamstream(&file);18. QStringline_in;19. /while(!stream.atEnd()20. /line_in=stream.readLine();21. /qDebug()line_in;22. /23. /stream.seek(stream.pos();24. stream.seek(file.size();/将当前读取文件指针移动到文件末尾25. intcount=0;26. while(count10)27. streamQObject:trUtf8(新建行:)+count/n;28. 29. stream.seek(0);/将当前读取文件指针移动到文件开始30. while(!stream.atEnd()31. line_in=stream.readLine();32. qDebug()line_in;33. 34. returna.exec();35. 3、QDir QDir类提供了访问目录结构和他们的内容。 QDir类提供了访问目录结构和它们的内容的与平台无关的方式。QDir用来操作路径名称、关于路径和文件的访问信息和操作底层文件系统。QDir使用相对或绝对文件路径来指向一个文件。绝对路径是从目录分隔符“/”或者带有一个驱动器标识(除了在Unix下)。如果你总是使用“/”作为目录分隔符,Qt将会把你的路径转化为符合底层的操作系统的。相对文件名是由一个目录名称或者文件名开始并且指定一个相对于当前路径的路径。例如绝对路径: QDir(/home/administrator/soft); QDir(D:/software); 我们可以使用isRelative()或isAbsolute()函数确认QDir是用的相对路径还是绝对路径。使用makeAbsolute()来转换相对路径的QDir转换成绝对路径的QDir.c-sharpview plaincopy1. #include2. #include3. #include4. #include5. #include6. #include7. intmain(intargc,char*argv)8. 9. QCoreApplicationa(argc,argv);10. QTextCodec*codec=QTextCodec:codecForName(GB2312);11. QTextCodec:setCodecForLocale(codec);12. QTextCodec:setCodecForCStrings(codec);13. QTextCodec:setCodecForTr(codec);14. 15. QDird(D:/);16. d.setFilter(QDir:Files|QDir:Hidden|QDir:NoSymLinks|QDir:AllDirs);/列出文件,列出隐藏文件(在Unix下就是以.开始的为文件),不列出符号链接(不支持符号连接的操作系统会忽略)17. d.setSorting(QDir:Size|QDir:Reversed);/按文件大小排序,相反的排序顺序18. constQFileInfoListlist=d.entryInfoList();/返回这个目录中所有目录和文件的QFileInfo对象的列表19. QFileInfoList:const_iteratoriterator=list.begin();20. qDebug()目录和文件的数量:d.count();/返回找到的目录和文件的数量21. qDebug()fileName/t/t/tsize/t/t/t;22. while(iterator!=list.end()23. qDebug()(*iterator).fileName()/t/t/t(*iterator).size();24. iterator+;25. 26. qDebug()当前目录:d.current();/返回应用程序当前目录。27. qDebug()当前目录的绝对路径d.currentPath();/返回应用程序当前目录的绝对路径。28. /constQListlist=d.entryList();/返回这个目录中所有目录和文件的名称的列表29. /QList:const_iteratoriterator=list.begin();30. /while(iterator!=list.end()31. /qDebug()(*iterator);32. /iterator+;33. /34. 35. returna.exec();36. 运行结果:4、QFileInfoQFileInfo类提供了一个与平台无关的文件信息.QFileInfo提供了关于系统中的文件名称和位置,访问权限和是否是符号链接,文件大小和上次修改/读写时间等,也能被用于Qt资源文件。QFileInfo能通过相对/绝对路径指向一个文件。 可以使用isFile(),isDir(),isSymLink().symLinkTarget()函数提供符号链接的目标文件。在Unix(包括Mac OSX)的符号链接具有与目标文件相同的大小(),因为Unix透明地处理符号链接;同样,打开一个符号连接使用的QFile有效地打开链接的目标.在Windows中,符号链接(快捷方式)的lnk文件。它大小()的是,符号链接(而不是链接的目标)的大小,打开一个符号连接使用的QFile并打开。lnk文件。例如cppview plaincopy1. #include2. #include3. #include4. 5. intmain(intargc,char*argv)6. 7. QCoreApplicationa(argc,argv);8. QFileInfoinfo1(E:/meego/vi_command.lnk);9. qDebug()info1.isSymLink();10. qDebug()info1.absoluteFilePath();11. qDebug()info1.size();12. qDebug()info1.symLinkTarget();13. qDebug()*;14. QFileInfoinfo2(info1.symLinkTarget();15. qDebug()info2.isSymLink();16. qDebug()info2.absoluteFilePath();17. qDebug()info2.size();18. 19. returna.exec();20. 运行结果:cppview plaincopy1. #include2. #include3. #include4. #include5. 6. intmain(intargc,char*argv)7. 8. QCoreApplicationa(argc,argv);9. 10. QTextCodec*codec=QTextCodec:codecForName(GB2312);11. QTextCodec:setCodecForLocale(codec);12. QTextCodec:setCodecForCStrings(codec);13. QTextCodec:setCodecForTr(codec);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论