Linux下QT QFile写方式打开文件失败

春之晓者 2011-07-12 08:02:29
原来的程序是在windows下写的,没问题,移植到linux下后(linux版本是rhel6),以append方式打开txt文件,出现错误,而用只读方式打开就没问题.而文件的权限是有读写权限的.
代码如下:

if (!file.open(QIODevice::Append| QIODevice::Text)) //以追加方式打开文件
{
QMessageBox::warning(this, "打开文件错误", QString::fromLocal8Bit("以追加方式打开文件失败!"));
return;
}

这里始终会报错.
还望高手指点一二,谢谢

整个函数代码如下,以供参考

/**************************************************************
*服务器管理用户信息插入用户信息子函数
*函数功能:获取用户ID,名字,密码,检查有效性,如果合法则插入用户信息
*入口参数:无
*出口参数:无
*************************************************************/
void ServerWin::insertUserInfo()
{
ui->oprstatus->setText("处理一条添加用户信息操作");
UserInfo userinfo;
userinfo.id=ui->addIdLine->text();
userinfo.password=ui->addPasswordLine->text();
userinfo.srtName=ui->addUserNameLine->text();
insertButtonOk=true;
if(this->checkInputInfo()!=0) //检查用户信息的有效性
{
insertButtonOk=false;
return ;
}
insertButtonOk=false;
QFile file(":/userinfo.txt");
QTextStream in(&file);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) //以只读方式打开文件
{
QMessageBox::warning(this, "打开文件错误", QString::fromLocal8Bit("以只读方式打开文件失败!"));
return;
}
//qDebug()<<"以只读方式文件打开成功";
while (!in.atEnd()) { //遍历用户ID
int i=0;
QString info=in.readLine();
for(i=0;i<info.length();i++)
{
if(info.at(i)==' ')
{
break;
}
}
QString id=info.left(i); //获取用户ID
if((QString::localeAwareCompare(userinfo.id,id))==0) //如果有相同的用户ID,则提示错误
{
QMessageBox::warning(this, "添加用户信息错误", QString::fromLocal8Bit("此ID号已经存在,请重新输入用户信息!"));
return;
}
}
file.close();

if (!file.open(QIODevice::Append| QIODevice::Text)) //以追加方式打开文件
{
QMessageBox::warning(this, "打开文件错误", QString::fromLocal8Bit("以追加方式打开文件失败!"));
return;
}
//qDebug()<<"以追加方式文件打开成功";
QTextStream out(&file);
out <<userinfo.id <<' '<< userinfo.srtName <<' '<< userinfo.password<<"\n"; //添加用户信息
QMessageBox::warning(this, "提示", QString::fromLocal8Bit("此条用户信息添加成功"));
file.close();
}

...全文
2150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuliand1 2013-07-07
  • 打赏
  • 举报
回复
楼主能问下是怎么解决的吗?我也遇到了同样的问题~拜谢啊~
春之晓者 2011-07-12
  • 打赏
  • 举报
回复
解决了,以前用资源的方式访问的,资源好像是没法写的.

[Quote=引用 5 楼 zmlovelx 的回复:]

file.exists() 判断下文件存不存在,不存在就是你路径的问题。
[/Quote]
帅得不敢出门 2011-07-12
  • 打赏
  • 举报
回复
file.exists() 判断下文件存不存在,不存在就是你路径的问题。
帅得不敢出门 2011-07-12
  • 打赏
  • 举报
回复
QFile file(":/userinfo.txt");
路径不对吧
QFile file("userinfo.txt"); 用当前路径或者全路径
春之晓者 2011-07-12
  • 打赏
  • 举报
回复
还是出现有错误的,整了两天了,都是这个错误.

[Quote=引用 2 楼 zmlovelx 的回复:]

open(QIODevice::WriteOnly|QIODevice::Append| QIODevice::Text) 试试。
[/Quote]
帅得不敢出门 2011-07-12
  • 打赏
  • 举报
回复
open(QIODevice::WriteOnly|QIODevice::Append| QIODevice::Text) 试试。
春之晓者 2011-07-12
  • 打赏
  • 举报
回复
在线等....

24,853

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧