Qt 以编程方式覆盖现有文件
我有一个QDialogBox,其中有一个上传文件的选项。 我可以上传文件并将其保存到文件夹中。它很好用 但如果文件夹中已经存在一个文件,我不知道如何处理这种情况 我想警告用户,同名文件已经存在 在这种情况下,我可以使用Windows API吗?(因为当我们手动保存现有文件时,会收到一条警告,我如何使用它?)Qt 以编程方式覆盖现有文件,qt,pyqt,Qt,Pyqt,我有一个QDialogBox,其中有一个上传文件的选项。 我可以上传文件并将其保存到文件夹中。它很好用 但如果文件夹中已经存在一个文件,我不知道如何处理这种情况 我想警告用户,同名文件已经存在 在这种情况下,我可以使用Windows API吗?(因为当我们手动保存现有文件时,会收到一条警告,我如何使用它?) 如果有人能给我指出那个文档,那就太好了。如果不使用QFileDialog,您可以使用QDir::entryList()来获取目录中的文件名 QDir dir("/path/to/direc
如果有人能给我指出那个文档,那就太好了。如果不使用QFileDialog,您可以使用
QDir::entryList()
来获取目录中的文件名
QDir dir("/path/to/directory");
QStringList fileNames = dir.entryList();
然后遍历文件名,可以看到是否有同名的文件。如果你需要,我也可以举个例子。它是C++,但很容易适应Python。< /P>
编辑:Smasho刚刚建议使用QDir::exists()方法。您可以使用此方法检查目录中是否存在文件名,而不是像我建议的那样进行迭代
if(dir.exists(uploadedFileName))
如果不使用QFileDialog,可以使用
QDir::entryList()
获取目录中的文件名
QDir dir("/path/to/directory");
QStringList fileNames = dir.entryList();
然后遍历文件名,可以看到是否有同名的文件。如果你需要,我也可以举个例子。它是C++,但很容易适应Python。< /P>
编辑:Smasho刚刚建议使用QDir::exists()方法。您可以使用此方法检查目录中是否存在文件名,而不是像我建议的那样进行迭代
if(dir.exists(uploadedFileName))
如果不使用QFileDialog,可以使用
QDir::entryList()
获取目录中的文件名
QDir dir("/path/to/directory");
QStringList fileNames = dir.entryList();
然后遍历文件名,可以看到是否有同名的文件。如果你需要,我也可以举个例子。它是C++,但很容易适应Python。< /P>
编辑:Smasho刚刚建议使用QDir::exists()方法。您可以使用此方法检查目录中是否存在文件名,而不是像我建议的那样进行迭代
if(dir.exists(uploadedFileName))
如果不使用QFileDialog,可以使用
QDir::entryList()
获取目录中的文件名
QDir dir("/path/to/directory");
QStringList fileNames = dir.entryList();
然后遍历文件名,可以看到是否有同名的文件。如果你需要,我也可以举个例子。它是C++,但很容易适应Python。< /P>
编辑:Smasho刚刚建议使用QDir::exists()方法。您可以使用此方法检查目录中是否存在文件名,而不是像我建议的那样进行迭代
if(dir.exists(uploadedFileName))
如果您使用的是,confirmOverwrite
在默认情况下处于激活状态,因此,如果getSaveFileName()
返回一个非空的QString,则表示用户接受覆盖该文件。另一种方法是,得到一个空的QString。
然后,您可以检查文件是否存在,并在这种情况下删除它,但您知道用户对此没有意见 如果您使用的是,confirmOverwrite
在默认情况下被激活,因此,如果getSaveFileName()
返回一个非空的QString,则表示用户接受覆盖该文件。另一种方法是,得到一个空的QString。
然后,您可以检查文件是否存在,并在这种情况下删除它,但您知道用户对此没有意见 如果您使用的是,confirmOverwrite
在默认情况下被激活,因此,如果getSaveFileName()
返回一个非空的QString,则表示用户接受覆盖该文件。另一种方法是,得到一个空的QString。
然后,您可以检查文件是否存在,并在这种情况下删除它,但您知道用户对此没有意见 如果您使用的是,confirmOverwrite
在默认情况下被激活,因此,如果getSaveFileName()
返回一个非空的QString,则表示用户接受覆盖该文件。另一种方法是,得到一个空的QString。
然后,您可以检查文件是否存在,并在这种情况下删除它,但您知道用户对此没有意见 保存文件时,始终存在潜在的争用条件。首先检查文件是否存在是不安全的,因为在检查和实际写入文件之间,其他一些进程可能会创建具有相同名称的文件 为了避免出现问题,必须以独占方式打开该文件,并且如果该文件已经存在,它将立即失败 如果你想把事情做好,请看以下两个答案: