如何读取不是当前文件夹的文件夹中的文件?

时间:2013-02-11 19:25:53

标签: matlab

我正在制作一个需要带有.txt文件的参考文件夹的程序。这些文件会自动读取。在下一步中,要求用户选择一个文件,程序将读取指定的文件。

问题是,我希望引用位于不同的文件夹中(保持不变)。如果我当前的文件夹是包含用户数据的文件夹,我该如何阅读我的参考文件?

以下是自动文件打开部分的代码行,现在就是:

fichierref = 'H:\MATLAB\Archive_08112012';
files = dir(fullfile(fichierref, '*.txt'));
numberOfFiles = numel(files);
for d = 1:numberOfFiles
   filenames(d) = cellstr(files(d).name);
end

它会自动打开文件,但前提是我当前的文件夹是Archive_08112012。

编辑:

我会加上这个。这就是我打开文件的方式。

headerlinesIn = 11;
delimiterIn=' ';
if numberOfFiles > 1
for i=1:numberOfFiles
     data = importdata(filenames{i},delimiterIn,headerlinesIn);

如果numberOfFiles = 1,则它具有完全相同的行,但是没有for循环。

3 个答案:

答案 0 :(得分:3)

调试您的代码,您将很快看到出现了什么问题:

files = dir(fullfile(fichierref, '*.txt'));
..
filenames(d) = cellstr(files(d).name);

您正在构建文件名的单元格数组(注意:名称,而不是完整路径)。如果你已经检查了这个数组的竞争者,你已经看到了文件加载出了什么问题:

 data = importdata(filenames{i},delimiterIn,headerlinesIn);

你在文件名上发出impordata;当你没有指定完整路径时,matlab会在当前目录中查找文件(或者添加到matlab路径的其他目录,这里不重要)。

现在必须清楚,您将要切换到使用importdata,并使用您所追踪文件的完整路径。使用fullfile执行此操作:

other_directory = 'c:\whatever\it\might\be'
data = importdata(fullfile(other_directory,filename{i}),delimiterIn,headerlinesIn);

答案 1 :(得分:2)

要引用当前工作目录之外的文件,您需要文件的完整路径(或相对路径)。您可以使用fullfile构建路径,就像在示例代码中所做的那样。在调用importdata函数时,请使用完整(或相对)路径而不仅仅是文件名。

答案 2 :(得分:1)

您应该继续使用fullfile。我只是发布了一个取自http://www.mathworks.com/help/matlab/ref/fullfile.html

的例子
f = fullfile('myfolder','mysubfolder','myfile.m')

f =
myfolder\mysubfolder\myfile.m