如何在Matlab中安全地以编程方式删除文件?通过'安全',我的意思是:
delete(a*)
应删除文件a*
,而不删除任何内容!system(sprintf('rm -f %s', foo))
foo
可能是file;some_command
。目前,我遇到的代码有system(sprintf('rm -f %s', foo))
,其中有一些foo
的卫生设施。我想用delete(foo)
替换它,但根据documentation,Matlabs delete
- 函数接受通配符,因此不满足要求(1);如果输入包含*
,我可能最终会删除许多文件。如何在Matlab中安全删除文件?
当然,一种方法是通过删除foo
等字符来清理:=, ()*<>!?%;
。但首先这是一种迂回的方式,其次,这不允许我删除包含这些字符的文件。
答案 0 :(得分:2)
我能想到的最好方法是通过Java。您可能知道,您可以直接从Matlab编写Java语句。
还要考虑escaping特殊字符而不是删除。
答案 1 :(得分:2)
如下:
function safe_delete(filename)
%# listing
d = dir(filename);
d([d.isdir]) = []; %# only files
%# skip if more than one match or no match
if isempty(d) || numel(d) > 1, return; end
%# delete file
p = fileparts(filename);
delete( fullfile(p,d(1).name) );
end
这将删除一个文件。如果有多个匹配项,则该函数不会删除任何文件。
safe_delete('file.txt') %# delete file.txt if it exists
safe_delete('/path/to/file.txt') %# also works with relative/absolute paths
safe_delete('*.txt') %# doesn't do anything
safe_delete('/path/to') %# doesn't delete directories only files
答案 2 :(得分:0)
安全删除是什么意思?如果你想要提示问你确定要删除......?那么,Matlab(如C,C ++,Perl,Python,等等)给出你可以编写一个安全地包含对delete
的调用的函数的工具。通过一些字符串操作,您可以编写函数来捕获仅使用通配符调用delete
的尝试
或许recycle
的{{1}}选项正是您所寻找的。 p>
另外,请查看delete
,然后在打开的对话框中查看底部的File | Preferences
选项。