QFile ::复制静态函数不复制文件

时间:2015-01-01 23:08:28

标签: c++ qt

我想使用以下代码复制QFile的文本文件:

void MainWindow::on_pushButton_4_clicked()
{
    QFile::copy("C:/p/text.txt", "C:/p/text1.txt");
}

构建它时没有错误,但是当我运行程序时,没有任何反应。

以下是完整的源代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QfileDialog>
#include <QFile>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

int currentIndex = 0;

void MainWindow::on_pushButton_2_clicked()
{
    ui->lineEdit->setText(QFileDialog::getExistingDirectory());
}

void MainWindow::on_pushButton_clicked()
{
    currentIndex ++;
    ui->stackedWidget->setCurrentIndex(currentIndex);
}

void MainWindow::on_pushButton_3_clicked()
{
    currentIndex --;
    if(currentIndex < 0)
    {
        currentIndex ++;
    }
    ui->stackedWidget->setCurrentIndex(currentIndex);
}

void MainWindow::on_pushButton_4_clicked()
{
    QFile::copy("C:/p/text.txt", "C:/p/text1.txt");
}

什么可能导致这种奇怪的行为?

1 个答案:

答案 0 :(得分:0)

我注意到了同样的问题,似乎copy()的实现并不好。它以某种方式认为你没有足够的许可来复制,即使你有。某些Windows权限冲突。

没有好的解决方法,但您可能会尝试通过重做整个过程来复制文件(它有时会起作用):

  1. 用于阅读的开源文件
  2. 打开(创建)目标文件以进行书写。
  3. 将所有数据从第一个文件复制到第二个文件。
  4. 远非完美,但有时它有效。