我的程序无法在窗口驱动器上写入

My program can't write on windows drive

本文关键字:驱动器 窗口 程序 我的      更新时间:2023-10-16

我有windows 8.1 x64,我不能在我的windows驱动器上写文件。当我运行以下代码时,什么也没有发生:

void MainWindow::on_actionBackup_Database_triggered()
{
    QFile en1;
    en1.copy("En1.txt","C:\En1.txt");
}

现在如果我把这段代码改成:

void MainWindow::on_actionBackup_Database_triggered()
{
    QFile en1;
    en1.copy("En1.txt","E:\En1.txt");  // change C to E
}

代码将正常工作。为什么会这样?注意我的C盘是我的操作系统盘

复制函数返回一个boolean值,表示复制是否成功。

您应该使用它来查看它是否成功复制,并处理不成功的情况。

不复制的原因很可能是c:驱动器上的文件权限。您可以更改它,但是如果可能的话,您最好选择另一个目录。

http://doc.qt.io/qt - 4.8 -/- qfile.html #复制

bool QFile::copy(const QString &新名称)

将当前由fileName()指定的文件复制到一个名为newName的文件。如果成功返回true;否则返回false。

注意,如果一个名为newName的文件已经存在,copy()返回false(即QFile不会覆盖它)。

源文件在复制前被关闭。

C:的根目录受到操作系统的保护,因为那里有重要的(和隐藏的)文件。

程序需要以管理员身份运行,或者在其他地方编写。ProgramData是一个更合适的位置-它们有csid,可以使用shell文件夹操作找到。(或环境变量)