我的程序无法在窗口驱动器上写入
My program can't write on windows drive
我有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文件夹操作找到。(或环境变量)
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 更改 ICDBurn 窗口 API 中的默认刻录驱动器
- 我的程序无法在窗口驱动器上写入
- 如何关闭Windows资源管理器窗口与打开文件夹从某个驱动器