説明

ディスク上またはメモリ内のディレクトリの内容を出力します。recurse が true に設定されている場合は、サブディレクトリの内容も出力します。

戻り値

listInfo パラメータに基づいて、次のようにディレクトリの内容を出力します。

  • listInfo="query" の場合は、クエリーオブジェクト
  • listInfo="name" の場合は、名前の配列
  • listInfo="path" の場合は、パスの配列

カテゴリ

システム関数

関数のシンタックス

DirectoryList(path [,recurse] [,listInfo] [,filter] [,sort] [,type] ) 

関連項目

DirectoryCreateDirectoryDeleteDirectoryExistsDirectoryRename

履歴

ColdFusion 11:type 引数が追加されました。

パラメータ

パラメータ

説明

path

内容を出力するディレクトリの絶対パスです。あるいは、DirectoryList("//12.3.123.123/c_drive/test"); のように IP アドレスを指定することもできます。

recurse

サブディレクトリに対してアクションを実行するかどうかを指定します。true の場合は、すべてのサブディレクトリの内容も出力されます。

listInfo

  • name : ファイルとディレクトリの名前の配列を返します。
  • path : ファイルとディレクトリのパスの配列を返します。
  • query:クエリーを返します。

filter

返される名前に適用するファイル拡張子のフィルタです。例えば、*.cfm などです。複数のフィルターを適用するには、パイプ(|)で区切ります。例:*.beer|*.cookies

また、filter 引数に関数を渡すこともできます。

<cfscript>

boolean function filterBySize(path, type, extension) {
var sizeLimit = 1024 * 100; //more than 10 KB
var extensionList = "jpg,jpeg,gif,png";
if(type is "dir") return false;

if(listFindNoCase(extensionList,extension)) {
var fileInfo = getFileInfo(path);
var size = fileInfo.size;
if(size >= sizeLimit) return true;
}
return false;
}

filteredResults = directorylist(expandPath("."), true, "path", filterBySize);
writeDump(filteredResults);
</cfscript>

渡す関数の引数には、次の値を指定する必要があります。

  • path:ファイルのパス
  • type:値(file または dir)
  • extension:ファイル拡張子(存在する場合)。それ以外の場合は、空の文字列       

 また、Java FileFilter オブジェクトのインスタンスを受け取ることもできます。

sort

ディレクトリリストのソートに使用するクエリー列です。クエリー出力に含まれる列をコンマ区切りのリストで指定します。列に条件を付ける場合は、次のいずれかの値を使用します。

  • asc: 昇順 (a ~ z) のソートです。
  • dec : 降順 (z ~ a) のソートです。
    例:sort = "directory ASC, size DESC, datelastmodified"
type、
  • file: ファイル名のみを含めます。
  • dir: ディレクトリ名のみを含めます。
  • all:ファイル名とディレクトリ名の両方を含めます。

使用方法

この関数の実行に必要な権限があることを確認してください。

次のコードは、ディレクトリの内容をダンプします。

<h2>DirectoryList Example</h2>
<h3>Enter a directory for Listing.</h3>
<cfform action = "directoryList.cfm" method="post" preservedata="true" >
<label for="listDirectory">Directory Path: </label><cfinput type = "text" id="listDirectory" name = "listDirectory">
<br />
<label for="recurse">Recurse: </label><cfinput id="recurse" type="checkbox" value="recurse" name="recurse">
<br />
<label for="listInfo">List Info: </label>
<cfselect name="listInfo" id="listInfo">
<option value="name">name</option>
<option value="path">path</option>
<option value="query">query</option>
</cfselect>
<br />
<label for="filter">Filter: </label><cfinput id="filter" type="text" value="" name="filter">
<br/>
<input type = "submit" value="submit" name = "submit">
</cfform>

<cfif IsDefined("FORM.listDirectory")>
<cfif FORM.listDirectory is not "">
<cfset listDirectory = FORM.listDirectory>
<cfset recurse = false>
<cfif isDefined("FORM.recurse")>
<cfset recurse = true>
</cfif>
<cfset listInfo = FORM.listInfo>
<cfset filter = FORM.filter>
<cftry>
<cfset res= DirectoryList(listDirectory,recurse,listInfo,filter)>
<cfoutput><b>Content of Directory #listDirectory#: </b></cfoutput>
<cfdump var="#res#">
<cfcatch>
<b>Error Message:</b><cfoutput>#cfcatch.message#</cfoutput><br/>
<b>Error Detail:</b><cfoutput>#cfcatch.Detail#</cfoutput>
</cfcatch>
</cftry>
</cfif>
</cfif>

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー