• 9178阅读
  • 2回复

QT如何读文件??? [复制链接]

上一主题 下一主题
离线liuxiangqian
 
只看楼主 正序阅读 楼主  发表于: 2008-11-22
— 本帖被 XChinux 从 Qt Installing & Deployment 移动到本区(2008-11-30) —
请问各位:QT读取文件用的是哪个类函数,我想实现根据QLlineEdit显示的路径将文件读取,然后发送出去,但是不知道如何读取???
    还有如何接收呢??

请给个建议。谢谢!!
[ 此贴被XChinux在2008-11-30 09:59重新编辑 ]
努力+方法=成功
离线zonewone
只看该作者 2楼 发表于: 2008-11-26
你把名字也发过去,就不用考虑qt是否能这么处理了。

QFile Sendfile(fileName);                                                                                                                                 
  Sendfile.open(QIODevice::ReadOnly); 

.......[/quote]
离线liuxiangqian
只看该作者 1楼 发表于: 2008-11-23
感谢关注:现在我刚刚弄明白点东西,希望与大家分享!

QFile Sendfile(fileName);                                                                                                                                 
  Sendfile.open(QIODevice::ReadOnly); 

这是打开文件的一个例子;用QFile::open可以打开,对文件的操作看QFile 这个类,希望对初学者有点用!!

不过还有一个疑问?
fileName是个文件的本机路径名??如果是这样的话,我将该路径名发送到远端,write函数能够正确命名接受文件吗??
void  Sender::ReceiveFile()            //接收文件
  {
          int  filesize  =  0;
          int  readsize  =  0;
          QDataStream  in(clientConnection);

          in  >>  filesize;
          in  >>  fileName;

          QFile  file(fileName);

          if  (!file.open(QFile::WriteOnly  |  QFile::Append))
          {
                  QMessageBox::warning(this,"error","can  not  open  the  \
file!");
                  return;
          }
                                                                            \


          while  (1)
          {
                if(  clientConnection->isReadable())
        {
                      if(readsize  +  2048 
{
                              buf  =  new  char[2048];
                              clientConnection->read(buf,  2048);
                              file.write(buf,  2048);
                              readsize  +=  2048;
                              delete  []buf;
                              if(readsize  ==  filesize)  break;
                      }
                      else
                      {
                              int  blocksize  =  filesize  -  readsize; \

                              buf  =  new  char[blocksize];
                              clientConnection->read(buf,  blocksize);
                              file.write(buf,  blocksize);
                              readsize  +=  blocksize;
                              delete  []buf;
        if(readsize  ==  filesize)  break;
                      }
                      else
                      {
                              int  blocksize  =  filesize  -  readsize; \

                              buf  =  new  char[blocksize];
                              clientConnection->read(buf,  blocksize);
                              file.write(buf,  blocksize);
                           readsize  +=  blocksize;
                              delete  []buf;
                              if(readsize  ==  filesize)  break;
                      }

                }

          }
努力+方法=成功
快速回复
限100 字节
 
上一个 下一个