2013-07-17 103 views
2

我要去複製使用QFile::copy功能一個文件,但這個函數總是返回false和errorString說:QFile :: copy說「無法打開源文件輸入」?

"Cannot open D:/tmp/buf34.txt for input" 

我試圖運行此程序改變了管理員權限,但一無所獲。我的代碼是非常簡單的:

QString source = url.toLocalFile(); 
    QString destination = _dir.absolutePath() 
      + QString("/%1").arg(QFileInfo(source).fileName()); 
    qDebug()<<"Cp from :" << source << " to : "<< destination; 
    QFile file(source); 
    qDebug()<<file.copy(destination); 
    qDebug()<<file.errorString(); 

編輯: 我而QListView佔據了QFileSystemModel。我嘗試將一個文件從此ListView拖放到QLabel。對於QLabel,設置目標路徑。在下降事件中,我嘗試複製文件。

+0

如何添加'qDebug()<< 「源存在:」 << QFileInfo(源).exists() ;'看看源文件是否存在? – 2013-07-17 18:27:46

+0

不,我確定源文件在目標中不存在。該錯誤表示源文件無法打開。 – saeed

+0

源文件如何到達那裏?它是否由其他程序編寫,仍然可以打開文件? – 2013-07-17 18:31:21

回答

2

QFile::copy使用QFile::open但覆蓋錯誤消息open會給你無益的"Cannot open %1 for input"你有。

所以,你應該嘗試的文件打開自己拿到的是原始的錯誤消息:

qDebug()<<file.open(QFile::ReadOnly); 
qDebug()<<file.errorString(); 
+0

哦,謝謝你!現在錯誤是:**文件名,目錄名稱或卷標語法不正確。**。 'QUrl :: toLocalFile'在字符串的末尾添加「\ r \ n」。所以'source'是fileAddress +「\ r \ n」! – saeed

+0

我剛剛從最後刪除了「\ r \ n」,現在文件已成功複製!但你知道爲什麼會發生這種情況嗎? – saeed

+0

@saeed我沒有看到'QUrl :: toLocalFile'的源代碼中可能會添加「\ r \ n」到文件名的任何內容。它可能已被添加到其他地方。 – alexisdm