QT read/write from QDataStream
I think i am having a fundamental misunderstanding of how all of this works, I am trying to combine 2 hexfiles in my QDataStream and then output them to a new QFile.
QFile filea( file1 );
QFile fileb( file2 );
QByteArray ba;
QDataStream ds(ba);
ds << filea.readAll();
ds << fileb.readAll();
QFile result("C:/Users/Aaron/Desktop/mergedfile.txt");
result.open(QIODevice::ReadWrite);
result.write(ba);
The result is just an empty file, any suggestions?
c++ qt qt5 qdatastream
add a comment |
I think i am having a fundamental misunderstanding of how all of this works, I am trying to combine 2 hexfiles in my QDataStream and then output them to a new QFile.
QFile filea( file1 );
QFile fileb( file2 );
QByteArray ba;
QDataStream ds(ba);
ds << filea.readAll();
ds << fileb.readAll();
QFile result("C:/Users/Aaron/Desktop/mergedfile.txt");
result.open(QIODevice::ReadWrite);
result.write(ba);
The result is just an empty file, any suggestions?
c++ qt qt5 qdatastream
add a comment |
I think i am having a fundamental misunderstanding of how all of this works, I am trying to combine 2 hexfiles in my QDataStream and then output them to a new QFile.
QFile filea( file1 );
QFile fileb( file2 );
QByteArray ba;
QDataStream ds(ba);
ds << filea.readAll();
ds << fileb.readAll();
QFile result("C:/Users/Aaron/Desktop/mergedfile.txt");
result.open(QIODevice::ReadWrite);
result.write(ba);
The result is just an empty file, any suggestions?
c++ qt qt5 qdatastream
I think i am having a fundamental misunderstanding of how all of this works, I am trying to combine 2 hexfiles in my QDataStream and then output them to a new QFile.
QFile filea( file1 );
QFile fileb( file2 );
QByteArray ba;
QDataStream ds(ba);
ds << filea.readAll();
ds << fileb.readAll();
QFile result("C:/Users/Aaron/Desktop/mergedfile.txt");
result.open(QIODevice::ReadWrite);
result.write(ba);
The result is just an empty file, any suggestions?
c++ qt qt5 qdatastream
c++ qt qt5 qdatastream
edited Nov 26 '18 at 3:10
eyllanesc
84k103562
84k103562
asked Aug 2 '18 at 21:19
Aaron ManillAaron Manill
84
84
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
You have the following errors:
If you are only going to read a file, you must open it with the ReadOnly mode, if you are going to write it you must use WriteOnly, in your case you do not have it with filea, fileb and result.
The QByteArray you are using it to read the data of the filea and fileb files, and then write it to result, so it must be read and write. You are using the following QDataStream constructor:
QDataStream::QDataStream(const QByteArray &a)
Constructs a read-only data stream that operates on byte array a. Use
QDataStream(QByteArray*, int) if you want to write to a byte array.
Since QByteArray is not a QIODevice subclass, internally a QBuffer is
created to wrap the byte array.
And since the QByteArray is read only because it is not the appropriate constructor, you must use the other constructor:
QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode mode)
Constructs a data stream that operates on a byte array, a. The mode
describes how the device is to be used.
Alternatively, you can use QDataStream(const QByteArray &) if you just
want to read from a byte array.
Since QByteArray is not a QIODevice subclass, internally a QBuffer is
created to wrap the byte array.
Using the above we obtain the following:
QFile filea( file1 );
QFile fileb( file2 );
QFile result("C:/Users/Aaron/Desktop/mergedfile.txt");
if(filea.open(QIODevice::ReadOnly) && fileb.open(QIODevice::ReadOnly) && result.open(QIODevice::WriteOnly)){
QByteArray ba;
QDataStream ds(&ba, QIODevice::ReadWrite);
ds << filea.readAll();
ds << fileb.readAll();
result.write(ba);
result.flush();
}
Thank you very much!
– Aaron Manill
Aug 2 '18 at 21:56
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f51662308%2fqt-read-write-from-qdatastream%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You have the following errors:
If you are only going to read a file, you must open it with the ReadOnly mode, if you are going to write it you must use WriteOnly, in your case you do not have it with filea, fileb and result.
The QByteArray you are using it to read the data of the filea and fileb files, and then write it to result, so it must be read and write. You are using the following QDataStream constructor:
QDataStream::QDataStream(const QByteArray &a)
Constructs a read-only data stream that operates on byte array a. Use
QDataStream(QByteArray*, int) if you want to write to a byte array.
Since QByteArray is not a QIODevice subclass, internally a QBuffer is
created to wrap the byte array.
And since the QByteArray is read only because it is not the appropriate constructor, you must use the other constructor:
QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode mode)
Constructs a data stream that operates on a byte array, a. The mode
describes how the device is to be used.
Alternatively, you can use QDataStream(const QByteArray &) if you just
want to read from a byte array.
Since QByteArray is not a QIODevice subclass, internally a QBuffer is
created to wrap the byte array.
Using the above we obtain the following:
QFile filea( file1 );
QFile fileb( file2 );
QFile result("C:/Users/Aaron/Desktop/mergedfile.txt");
if(filea.open(QIODevice::ReadOnly) && fileb.open(QIODevice::ReadOnly) && result.open(QIODevice::WriteOnly)){
QByteArray ba;
QDataStream ds(&ba, QIODevice::ReadWrite);
ds << filea.readAll();
ds << fileb.readAll();
result.write(ba);
result.flush();
}
Thank you very much!
– Aaron Manill
Aug 2 '18 at 21:56
add a comment |
You have the following errors:
If you are only going to read a file, you must open it with the ReadOnly mode, if you are going to write it you must use WriteOnly, in your case you do not have it with filea, fileb and result.
The QByteArray you are using it to read the data of the filea and fileb files, and then write it to result, so it must be read and write. You are using the following QDataStream constructor:
QDataStream::QDataStream(const QByteArray &a)
Constructs a read-only data stream that operates on byte array a. Use
QDataStream(QByteArray*, int) if you want to write to a byte array.
Since QByteArray is not a QIODevice subclass, internally a QBuffer is
created to wrap the byte array.
And since the QByteArray is read only because it is not the appropriate constructor, you must use the other constructor:
QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode mode)
Constructs a data stream that operates on a byte array, a. The mode
describes how the device is to be used.
Alternatively, you can use QDataStream(const QByteArray &) if you just
want to read from a byte array.
Since QByteArray is not a QIODevice subclass, internally a QBuffer is
created to wrap the byte array.
Using the above we obtain the following:
QFile filea( file1 );
QFile fileb( file2 );
QFile result("C:/Users/Aaron/Desktop/mergedfile.txt");
if(filea.open(QIODevice::ReadOnly) && fileb.open(QIODevice::ReadOnly) && result.open(QIODevice::WriteOnly)){
QByteArray ba;
QDataStream ds(&ba, QIODevice::ReadWrite);
ds << filea.readAll();
ds << fileb.readAll();
result.write(ba);
result.flush();
}
Thank you very much!
– Aaron Manill
Aug 2 '18 at 21:56
add a comment |
You have the following errors:
If you are only going to read a file, you must open it with the ReadOnly mode, if you are going to write it you must use WriteOnly, in your case you do not have it with filea, fileb and result.
The QByteArray you are using it to read the data of the filea and fileb files, and then write it to result, so it must be read and write. You are using the following QDataStream constructor:
QDataStream::QDataStream(const QByteArray &a)
Constructs a read-only data stream that operates on byte array a. Use
QDataStream(QByteArray*, int) if you want to write to a byte array.
Since QByteArray is not a QIODevice subclass, internally a QBuffer is
created to wrap the byte array.
And since the QByteArray is read only because it is not the appropriate constructor, you must use the other constructor:
QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode mode)
Constructs a data stream that operates on a byte array, a. The mode
describes how the device is to be used.
Alternatively, you can use QDataStream(const QByteArray &) if you just
want to read from a byte array.
Since QByteArray is not a QIODevice subclass, internally a QBuffer is
created to wrap the byte array.
Using the above we obtain the following:
QFile filea( file1 );
QFile fileb( file2 );
QFile result("C:/Users/Aaron/Desktop/mergedfile.txt");
if(filea.open(QIODevice::ReadOnly) && fileb.open(QIODevice::ReadOnly) && result.open(QIODevice::WriteOnly)){
QByteArray ba;
QDataStream ds(&ba, QIODevice::ReadWrite);
ds << filea.readAll();
ds << fileb.readAll();
result.write(ba);
result.flush();
}
You have the following errors:
If you are only going to read a file, you must open it with the ReadOnly mode, if you are going to write it you must use WriteOnly, in your case you do not have it with filea, fileb and result.
The QByteArray you are using it to read the data of the filea and fileb files, and then write it to result, so it must be read and write. You are using the following QDataStream constructor:
QDataStream::QDataStream(const QByteArray &a)
Constructs a read-only data stream that operates on byte array a. Use
QDataStream(QByteArray*, int) if you want to write to a byte array.
Since QByteArray is not a QIODevice subclass, internally a QBuffer is
created to wrap the byte array.
And since the QByteArray is read only because it is not the appropriate constructor, you must use the other constructor:
QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode mode)
Constructs a data stream that operates on a byte array, a. The mode
describes how the device is to be used.
Alternatively, you can use QDataStream(const QByteArray &) if you just
want to read from a byte array.
Since QByteArray is not a QIODevice subclass, internally a QBuffer is
created to wrap the byte array.
Using the above we obtain the following:
QFile filea( file1 );
QFile fileb( file2 );
QFile result("C:/Users/Aaron/Desktop/mergedfile.txt");
if(filea.open(QIODevice::ReadOnly) && fileb.open(QIODevice::ReadOnly) && result.open(QIODevice::WriteOnly)){
QByteArray ba;
QDataStream ds(&ba, QIODevice::ReadWrite);
ds << filea.readAll();
ds << fileb.readAll();
result.write(ba);
result.flush();
}
answered Aug 2 '18 at 21:41
eyllanesceyllanesc
84k103562
84k103562
Thank you very much!
– Aaron Manill
Aug 2 '18 at 21:56
add a comment |
Thank you very much!
– Aaron Manill
Aug 2 '18 at 21:56
Thank you very much!
– Aaron Manill
Aug 2 '18 at 21:56
Thank you very much!
– Aaron Manill
Aug 2 '18 at 21:56
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f51662308%2fqt-read-write-from-qdatastream%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown