我程序的这一部分应该列出名称中包含“.txt”的目录中的所有文件,但在运行时它不返回任何内容。如果我删除“.txt”并将其保留为空字符串“”,那么它可以完美运行并返回包括 .txt 文件在内的所有文件名,因此我无法弄清楚我在这里做错了什么。
procedure Search_Directory is
use Ada.Directories;
procedure Write_Search_Item(Search_Item : in Directory_Entry_Type) is
begin
Put(Item => Simple_Name(Directory_Entry => Search_Item));
New_Line;
end Write_Search_Item;
Filter : Constant Filter_Type := (Ordinary_File => True,
Special_File => False,
Directory => True);
begin
Search(Directory => Current_Directory,
Pattern => (".txt"),
Filter => Filter,
Process => Write_Search_Item'Access);
end Search_Directory;
Run Code Online (Sandbox Code Playgroud)
Search
包中定义的函数Ada.Directories
采用模式参数,该参数是空字符串或实现定义的RM A.16 (111/ 2) 形式。在 GNAT 中,这个模式应该是一个正则表达式(另请参阅此处)System.Regexp
(另请参阅此处,第二种语法,“通配模式”)。