1、根据软件目录路径来操作文件
QString fileName = QCoreApplication::applicationDirPath();
fileName = fileName + "/abc.json";
QFile file(fileName );
if(!file.open(QIODevice::ReadWrite))//如果abc文件不存在就创建
{
qDebug() << "File open error";
exit(1);
}
else
{
qDebug() <<"File open!";
}
file.resize(0);
2、使用用户目录来操作文件
QString strAppInfoLocation = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
QDir *photo = new QDir;
bool exist = photo->exists(strAppInfoLocation);
if(!exist)
{
photo->mkdir(strAppInfoLocation);//没有文件夹就创建文件夹
}
QString strPresetFilePath = strAppInfoLocation + "/abc.json";
QFile file(strPresetFilePath);
if(!file.open(QIODevice::ReadWrite))//没有文件就创建文件
{
qDebug() << "File open error";
exit(1);
}
else
{
qDebug() <<"File open!";
}
file.resize(0);
3、打开一个指定的目录,和Windows中的ShellExecute一样功能,只显示文件,没有打开或者保存按钮
QDesktopServices::openUrl(QUrl("file:///E:/", QUrl::TolerantMode));
4、拷贝文件
//使用
void MainWindow::Add_single()
{
int sum = 0;
QString Path = QFileDialog::getOpenFileName(this,
tr("Open File"),
tr(""),
"Files(*.txt)",
0);
QString file_name = Path;
//要拷贝的文件名称
while(1)
{
if(file_name.indexOf("/") >= 0)
{
sum = file_name.indexOf("/");
file_name = file_name.right(file_name.length() - sum - 1);
}
else
{
break;
}
}
QString Path2 = QCoreApplication::applicationDirPath();
Path2 = Path2 + "/file/" + file_name;
if (!Path.isNull())
{
copyFileToPath(Path,Path2,true);//文件位置,需要拷贝到的位置,如果有文件要先删除
}
}
//拷贝文件:
bool MainWindow::copyFileToPath(QString sourceDir ,QString toDir, bool coverFileIfExist)
{
toDir.replace("\\","/");
if (sourceDir == toDir)
{
return true;
}
if (!QFile::exists(sourceDir))
{
return false;
}
QDir *createfile = new QDir;
bool exist = createfile->exists(toDir);
if (exist)
{
if(coverFileIfExist)
{
createfile->remove(toDir);//删除
}
}
//目标位置需要有相同名称的文件
if(!QFile::copy(sourceDir, toDir))
{
return false;
}
return true;
}