有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用java实现matlab递归文件夹读取。伊奥。文件

目前,我使用此功能创建子文件夹列表:

% create list of all sub folders
dirs = regexp(genpath(basePath),['[^;]*'],'match');

然而,我的文件夹包含>;10万份文件。此功能需要几分钟到几小时才能完成。 但文件夹的数量仅为<;一百

我读到java.io.File的速度要快很多。但是,如何使用它来读取文件夹

jFile = java.io.File([basePath '*']); %java file object
jPaths = jFile.listFiles;       %java.io.File objects
jNames = jFile.list;            %java.lang.String objects
isFolder = arrayfun(@isDirectory,jPaths); %boolean
dirs = cellstr(char(jNames(~isFolder)));   %cellstr

还给我一个空数组

编辑: 我尝试了下面的方法,但是递归失败了,因为函数返回后,dirs数组是空的——就好像dirs是一个全局变量一样

function [sub] = subfolders (CurrPath,sub)
%------------------------------------------------
jFile = java.io.File(CurrPath); %java file object
jPaths = jFile.listFiles;       %java.io.File objects
jNames = jFile.list;            %java.lang.String objects
isFolder = arrayfun(@isDirectory,jPaths); %boolean
dirs = cellstr(char(jNames(isFolder)))   %cellstr

if nargin == 1
    sub = {};
end

for i = 1:numel(dirs)
    currSubDir = dirs{i};
    if ~isempty(currSubDir)
        sub{end+1} = fixPath([CurrPath '\' currSubDir]);        
        sub = subfolders(sub{end},sub);
    end
end% if

共 (0) 个答案