list names in an array

I have many files that i want to list their names in an array but the name is full for example
F:\New\checkfiles\C100.csv

5 个评论

Any problems using dir()?
it gives the name only like C100
not the whole name
It sounds like you're doing something wrong.
Does your code look like this?
d = dir('C:\Users\name\Documents\MATLAB\');
% list all file
{d.name}'
It would be handy if dir took an argument, allowing specification of the full path in the output. It seems like this would be a common enough thing to want to do.
Agreed. I suggested testing d.name because the OP stated that it was only returning file name when it should be returning the file extension as well.

请先登录,再进行评论。

回答(2 个)

A lot simpler than all that has been suggested:
foldercontent = dir('C:\somewhere\*.csv');
filelist = fullfile({foldercontent.folder}, {foldercontent.name}); %that's all that is needed.
As said, if a string array is needed, string will convert the cell array of char vectors into a string array

4 个评论

Adam Danz
Adam Danz 2019-6-13
编辑:Adam Danz 2019-6-13
That is more simpler to read and more intuitive. However, for those obsessed with speed, The Cyclist's solution is 1.56x faster and my solution is 1.84x faster; probably due to avoiding overhead in fullfile (median speed comparison of 10,000 repetitions of each single line solution).
I would argue that clarity completely trumps speed in this case particularly as the speed difference would be insignificant compared to the file IO that will inevitably follow.
Stephen23
Stephen23 2019-6-14
编辑:Stephen23 2019-6-14
+1 fullfile is definitely the way to go.
It is highly unlikely that constructing filenames is going to be a bottleneck in the code.
Definitely clairity over milliseconds.

请先登录,再进行评论。

I'm pretty sure there is a better, simpler way to do this, but I believe this does what you want:
s = dir;
fileList = cellfun(@(x,y)[x,'/',y],{s.folder}',{s.name}','UniformOutput',false);

4 个评论

the output is a cell array
so how can i convert it to a string array not char array
matlab 2016
string(fileList)
will convert the cell array to a string array (at least in R2018b).
"I'm pretty sure there is a better, simpler way..."
s = dir;
fileList = strcat({s.folder}',repmat({'/'},size(s)),{s.name}');
"I'm pretty sure there is a better, simpler way..."
S = dir(...);
F = cellfun(@fullfile,{S.folder}',{S.name}','uni',0);
Or simply:
F = fullfile({S.folder},{S.name});

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 File Operations 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by