1. 检测一个路径是否存在:
QDir dir("D:\\vc6");
if(!dir.exists())
{
QMessageBox::information(this,"提示","路径不存在");
}
else
{
QMessageBox::information(this,"提示","路径存在");
}
2. 创建一个目录:
QDir dir;
QString strpath = "D:\\vc66666666";
if(!dir.exists(strpath))
{
QMessageBox::information(this,"提示","路径不存在");
dir.mkdir(strpath);
}
else
{
QMessageBox::information(this,"提示","路径存在");
}
3. C++标准写文件:
ios::app = 0x08, //供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后
打开文件的方式在IOS类(流式I/O的基类)中定义,有如下几种方式:
ios::in
为输入(读)而打开文件,文件不存在则创建(ifstream)默认的打开方式
ios::out
为输出(写)而打开文件,文件不存在则创建,若文件已存在则清空原内容
(ofstream默认的打开方式)
ios::ate
文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用
ios::app
供写使用,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,
指针位置总在最后
ios::trunc
在读写前,先将文件长度截断为0(默认)
ios::nocreate
文件不存在时产生错误,常和in或app联合使用
ios::noreplace
文件存在时产生错误,常和out联合使用
ios::binary
二进制格式文件
这些方式是能够以“或”运算(“|”)的方式进行组合使用。
文件保护方式选择项
filebuf::openprot
默认的兼容共享方式
filebuf::sh_none
独占,不共享
filebuf::sh_read
读共享
filebuf::sh_write
写共享
写:
#include <fstream>
std::mutex m_utex;
void addlog(char *ptrcontext)
{
std::unique_lock<std::mutex> m_lock(m_utex);
//追加写文件,如果没有文件就自动创建
std::ofstream logfile("D:\\vc66666666\\1.txt", std::ios::app);
if (logfile.is_open())
{
logfile << ptrcontext;
logfile << "\n";
}
logfile.close();
m_lock.unlock();
}
读:
std::fstream readfile("D:\\vc66666666\\1.txt",std::ios::in);
char buf[256] = {0};
while(readfile.getline(buf,256))
{
qDebug()<<buf;
}
readfile.close();
4. QFile
写文件
QFile file("D:\\vc66666666\\2.txt",this);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;
static int anum =100;
QTextStream out(&file);
out << "The magic number is: " << anum++ << "\n";
file.close();
读文件:
QFile file("D:\\vc66666666\\2.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
m_label->setText(line);
}
另一种方式:
写
QFile file("D://2222222222222.txt");
if(file.open(QFile::WriteOnly))
{
QString strTmp = "我是你爸爸\r\n";
file.write( strTmp.toUtf8());
strTmp = "我是你爷爷\r\n";
file.write( strTmp.toUtf8());
}
file.close();
读:
QFile readfile1("D://2222222222222.txt");
if(readfile1.open(QFile::ReadOnly))
{
int i = 0;
while(!readfile1.atEnd())
{
QByteArray str = readfile1.readLine();
qDebug()<<str.data();
i++;
}
qDebug()<<"读取行数:"<<i;
}
readfile1.close();