主要是为了读写配置文件。WINDOWS下没问题了,但是在linux下就只能读,写不了,就是覆盖不了源文件,
后来换了个思路,先删除,后写入,结果还是不行,删除不了。。貌似也不是权限的问题。
但是在其他目录下,还是能创建一个文件的,就是不能通过代码覆盖和删除。
希望高手给点思路,或者是解决的方法。谢谢
这段代码主要是针对IP的读写的。读就是上面这段是没有问题的。下面那段写不了
QSettings *ConfigIni = new QSettings("/etc/eth0-setting",QSettings::IniFormat,0);
ui->ipInfoLineEdit->setText(ConfigIni->value("IP").toString());//IP地址
ui->maskInfoLineEdit->setText(ConfigIni->value("Mask").toString()); //子网掩码
ui->gatewayInfoLineEdit->setText(ConfigIni->value("Gateway").toString());//子网掩码
ui->dnsInfoLineEdit->setText(ConfigIni->value("DNS").toString());//DNS
ui->macInfoLineEdit->setText(ConfigIni->value("MAC").toString());//mac
===================================================================*/
void ipset::ipconfig_set_infile()
{
//删除原有配置文件
QDir rmfile;
rmfile.remove("/home/eth0-setting");//windows下可以不要这两句。可以覆盖原文件。
QSettings *ipConfigIni = new QSettings("/home/eth0-setting",QSettings::IniFormat,0);
//QSettings *ipConfigIni = new QSettings("/home/eth_setting",QSettings::IniFormat,0);
ipConfigIni->setIniCodec("UTF-8"); //设置文件格式为UTF-8
ipConfigIni->setValue("IP",ui->ipInfoLineEdit->text());//写入配置文件中Ip配置参数
ipConfigIni->setValue("Mask",ui->maskInfoLineEdit->text());//写入配置文件中Mask配置参数
ipConfigIni->setValue("Gateway",ui->gatewayInfoLineEdit->text());//写入配置文件中Gateway配置参数
ipConfigIni->setValue("DNS",ui->dnsInfoLineEdit->text());
ipConfigIni->setValue("MAC",ui->macInfoLineEdit->text());
delete ipConfigIni;
}
------解决方案--------------------
为什么要在/home 下直接写文件呢?
你ls看一下,home是root的,其它用户是不能写的。
你可以尝试以root权限运行你的程序,应该没问题的。
------解决方案--------------------
lz,何不换种思路呢! 其实要重新写入这些配置很简单啦,例如
写入的配置文件如下
- C/C++ code
writeConfig->beginGroup("STATION"); writeConfig->setValue("officeName", Appconfig::officeName ()); writeConfig->setValue("stationName", Appconfig::stationName ()); writeConfig->setValue("stationid", Appconfig::stationId ()); writeConfig->endGroup();