Issue importing a sequence of numbered files with fopen
1 view (last 30 days)
Show older comments
I'm trying to import a sequence of numbered csv files with headers (Test_1.csv, Test_2.csv etc.) using fopen and concatenate them vertically, writing them to a single file with only the headers from the first file (since they are all the same). However I keep getting the error "Error using fread, invalid file identifier. Use fopen to generate a valid file identifier". I know that means that fopen has likely failed to open the file, but I cannot see what the problem is. The script is heavily based on another I found which originally opened a dialog box using uigetfile to browse for input files, but I just want it to read numbered files in sequence. Please help!
%Number of rows of headers in each file
NumHeaders = 1;
%path name
pname = 'C:\Users\mbgnrmr4\Dropbox (Research Group)\Coding stuff\MATLAB\Miscellaneous function tests\';
% Create output file name in the same folder.
outputFileName = fullfile(pname, 'finalCSVnew.csv')
fidOutput = fopen(outputFileName, 'wt');% open output file to write
V = 1:3 %File numbers that need to be imported
N = numel(V)
fidInput = cell(1,N)
filenames = cell(1,N)
for k = 1 : N
% Input file name.
filenames{k} = sprintf('Test_%01d.cpr', V(k))
thisFileName = fullfile(pname, filenames{k})
% Open input file:
fidInput{k} = fopen(thisFileName, 'rt');
%skip headers except for first file
if k ~= 1
for L = 1 : NumHeaders; fgetl(fidInput{k}); end
end
% Read text from it
thisText = fread(fidInput{k}, '*char');
% Copy to output file:
fwrite(fidOutput, thisText);
fclose(fidInput{k}); % close the input file
end
fido=fclose(fidOutput); clear fid*
% Open Windows Explorer to this folder
winopen(pname);
2 Comments
Rik
on 16 Jun 2021
This code is well-commented as uses clear variable names. It also uses functions like fullfile to construct file names. In short, this code looks perfectly fine.
Are you sure the file exists? You can even use the exist function to check prior to fopen.
Answers (0)
See Also
Categories
Find more on Low-Level File I/O in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!