how to write an opened file in a loop to a new file in a different folder using fwrite?
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi everyone,
I open a file in a loop using fopen. I make some modifications and then I want to write the file to a new folder but I get the error that the identifier is not valid.
Loop starts >
OpenFile = fopen('BetaWeatherFile.epw','r');
DuplicateATemporary = fopen('temporary.epw','w');
.....
modifications
.....
Then I want to use the fwrite here but it does not work.
"Error using fwrite Invalid file identifier. Use fopen to generate a valid file identifier."
6 commentaires
Jan
le 10 Mar 2021
Yes, of course the first valid file identifier is 3. 1 is the standard output, 2 the channel for error messages.
With opening the file for reading by 'r', you cannot write to the file. Therefor your fwrite command replies 0 for: no character was written.
Are you sure you want to write the char vector 'E:\backup.epw' into the file? Maybe you have confused FWRITE and COPYFILE?
Réponse acceptée
Jan
le 10 Mar 2021
Modifié(e) : Jan
le 11 Mar 2021
Yes, of course the first valid file identifier is 3. 1 is the standard output, 2 the channel for error messages.
With opening the file for reading by 'r', you cannot write to the file. Therefor your fwrite command replies 0 for: no character was written.
Are you sure you want to write the char vector 'E:\backup.epw' into the file? Maybe you have confused FWRITE and COPYFILE?
FileName = fullfile(tempdir, 'test.txt')
OpenFile = fopen(FileName, 'w'); % [EDITED, typo fixed]
assert(OpenFile~=-1, 'Cannot open file for writing.')
fwrite(OpenFile, 'Hi', 'char')
fclose(OpenFile);
copyfile(FileName, fullfile(tempdir, 'test2.txt'))
4 commentaires
Jan
le 11 Mar 2021
What do you expect as output of the copyfile command? It is a flag, which tells you if the copy was successful. I do not see a reason to store this in the variable CopyPhase .
Instead of copying the file, you could write directly to the wanted file. Then using an index in the file name is an obvious solution:
for k = 1:10
file = fullfile(Folder, sprintf('file%03d.txt', k));
...
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Software Development Tools dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!