首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Delphi设置为只读文件夹和子文件夹中的文件

Delphi设置为只读文件夹和子文件夹中的文件
EN

Stack Overflow用户
提问于 2014-02-17 04:23:39
回答 1查看 1.6K关注 0票数 1

如何在delphi中将特定文件夹和子文件夹中的文件设置为只读?我知道我可以把带有FileSetAttr的文件夹设置为只读,但是有没有办法把文件夹和子文件夹中的文件放进去呢?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-02-17 06:14:45

您需要遍历目录中的所有文件,并递归遍历所有子目录。您可以使用此函数来执行此操作:

代码语言:javascript
运行
复制
type
  TFileEnumerationCallback = procedure(const Name: string);

procedure EnumerateFiles(const Name: string; 
  const Callback: TFileEnumerationCallback);
var
  F: TSearchRec;
begin
  if FindFirst(Name + '\*', faAnyFile, F) = 0 then begin
    try
      repeat
        if (F.Attr and faDirectory <> 0) then begin
          if (F.Name <> '.') and (F.Name <> '..') then begin
            EnumerateFiles(Name + '\' + F.Name, Callback);
          end;
        end else begin
          Callback(Name + '\' + F.Name);
        end;
      until FindNext(F) <> 0;
    finally
      FindClose(F);
    end;
  end;
end;

这是一个通用的例程。您可以提供一个回调过程,该过程将使用每个文件的名称进行调用。在回调过程中,你可以做任何你想做事情。

您的回调过程将如下所示:

代码语言:javascript
运行
复制
procedure MakeReadOnly(const Name: string);
begin
  FileSetAttr(Name, FileGetAttr(Name) or faReadOnly);
end;

你可以像这样把它们放在一起:

代码语言:javascript
运行
复制
EnumerateFiles('C:\MyDir', MakeReadOnly);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21816067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档