【发布时间】:2018-07-23 14:05:33
【问题描述】:
我正在尝试使用QDataStream 读取从QT application 创建的现有文件,我正在使用C# 读取它,但我无法正常工作。
这是我用于读取文件的 C# 代码:我没有收到任何错误,只是一个空白 MessageBox。
如何使用 C# 使用 QDataStream 读取在QT 创建的文件?
FileStream readStream;
string msg = null;
try {
readStream = new FileStream(@"C:/MyUsers/SomeFolder/UserNameList.txt", FileMode.Open);
BinaryReader readBinary = new BinaryReader(readStream);
msg = readBinary.ReadString();
MessageBox.Show(msg);
readStream.Close();
}
catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
这是用于在QT 中写入文件的代码。
QFile UsersNameListFile ("C:/MyUsers/SomeFolder/UserNameList.txt");
QString userName = "SomeName";
QHash<QString, QString> listOfUsers;
if(!listOfUsers.contains(userName))
{
listOfUsers.insert(userName, "Some Text");
if (UsersNameListFile.open(QIODevice::WriteOnly))
{
QDataStream writeToFile(&UsersNameListFile);
writeToFile.setVersion(QDataStream::Qt_5_1);
writeToFile << listOfUsers;
UsersNameListFile.flush();
UsersNameListFile.close();
}
}
【问题讨论】:
-
如果要读取另一个不使用Qt的程序,则使用QDataStream保存是不正确的,因为格式高度依赖Qt,并且在版本和版本之间,QDataStream使用的格式可以差异很大。
-
非常感谢您的澄清。不幸的是,当创建 QT 应用程序时,不需要像现在一样从另一个应用程序读取文件。
-
我的建议是你重写你的 C++ 代码,因为 QDataStream 在 Qt 之外是不可移植的,或者为 C# 使用 Qt 包装器
-
见stackoverflow.com/questions/33741691/…,使用QtSharp,如果你的软件要大量我会推荐一个更新系统
-
您是否有任何理由不能使用
QtC#绑定来读取/处理文件?
标签: c# qt io qdatastream