我正在使用MATLAB中的dir('*.txt')
从文件夹中读取文本文件。文本文件名为0, 4, 8, 12, ..180.txt
。 dir
首先返回0
,然后100
,然后104
,依此类推。为什么会这样?
答案 0 :(得分:2)
Lexicographical ordering的工作原理是只查看做出决定所需的信息。在我们的例子中,信息是文件名中字符的ASCII值。请考虑以下示例:
如果我们有两个文件名10.txt
和2.txt
,列表机制将比较这些文件的1 st 字符,即1
与2
对比,并返回最小的,在这种情况下是属于1
的{{1}}。
如果我们有10.txt
和2.txt
,则第一个字符是相同的,因此将比较下一个字符,即20.txt
或{{1} }。在这里,由于.
的ASCII值为0
,而.
的ASCII值为46
,因此将首先返回0
。
您可以通过始终拥有文件名所需的最大位数来解决此问题,这意味着:
48
然后将按预期顺序返回文件。
答案 1 :(得分:0)
如果您对文件的顺序敏感和,您已经知道了他们的名字,那么您根本不必使用dir
:
for ii=0:4:180
filename = sprintf('%d.txt', ii);
fid = fopen( fullfile('/path/to', filename), 'r' );
% ... do the processing here
fclose(fid);
end