Qt寫入檔案失敗,啊啊啊,原來是這個錯誤!

來源:互聯網
上載者:User

QFIle *localFile = new QFile(fileName);
if(!localFile->open(QFile::WriteOnly))
{
  qDebug()<<"open file error";
  QMessageBox::information(this,"","open file error");
  return ;
}
檔案建立和開啟都是成功的。

if(bytesReceived < totalBytes)
{
  bytesReceived += tempConnection->bytesAvailable();//tempConnection是個QTcpSocket
  QByteArray inBlock = tempConnection->readAll();
  qint64 len=localFile->write(inBlock);
  QMessageBox::information(this,"",inBlock);
    
}

整個過程是TCP用戶端傳送過來的檔案,TCP服務端接收這個檔案並且把它儲存下來。服務端把檔案建立了,也正常開啟了,然後往裡面寫可是沒有寫進去。但是localFile->write(inBlock)的傳回值,也就是寫入的位元組數恰恰是檔案內容的位元組數,這不是奇怪嗎?它說寫進去了,可我開啟檔案查看的時候卻什麼也沒有!我用QMessageBox顯示inBlock中要寫入檔案的內容,是對的,而且write的傳回值len也是對的,可開啟檔案卻是空的?搞了一晚上了,就是查不出錯誤?

原來錯誤是:接收檔案成功後,我沒有關閉檔案,即忘記調用localFile.close()了!我擦!!!!!!!!!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.