2016-05-06 40 views
0

写入文件时出现问题,问题是: 如果我编写目录“:/Files/Scores.txt”,它将不会写入任何内容,而是从同一目录读取数据。 但是,如果我使用这个目录“D:/TicTacToe/TicTacToe/Scores.txt”它写和读,但我会给我的教练游戏,路径将不会相同,该文件不会打开,任何想法?!写入Qt中的文件

我写代码:

void Write (QString file) 
{ 
QFile sfile(file); 
if(!sfile.open(QFile::ReadOnly |QFile::Text)) 
{ 
    return; 
} 
QTextStream in(&sfile); 
QString lscores =sfile.readAll() ; 
sfile.close(); 
if(!sfile.open(QFile::WriteOnly |QFile::Text)) 
{ 
    return; 
} 
lscores="  "+Xscore+"\t"+"  "+Oscore+"\n"+lscores; 
QTextStream out(&sfile); 
out <<lscores; 
sfile.close(); 
} 
+0

您是否尝试过使用相对路径而不是绝对路径? – AeroBuffalo

+2

以':/'开头的文件路径是为Qt的资源系统保留的。这些文件是二进制本身的一部分,因此是只读的。您可以阅读关于资源系统的更多信息[此处](http://doc.qt.io/qt-5/resources.html)。 – MrEricSir

+0

@AeroBuffalo你能为我解释更多吗?什么是淡漠? –

回答

0

资源文件(你把.qrc文件上的)是只读的,因为MrEricSir提及。如果你想与您的应用程序的一些配置/乐谱文件比如,你可以使用的QApplication :: applicationDirPath()

QString settingsFile = QApplication::applicationDirPath() % QLatin1Literal("/scores.txt"); 

这种方式,您将有您的应用程序目录中的文件始终是绝对路径。

您还可以使用​​和QDesktopServices::DataLocation参数来获取应用程序的数据位置。

+0

这是工作,谢谢: ) –