서버 내 로컬 경로에서 파일과 폴더는 다음과 같이 얻을 수 있다.
Scripting.FileSystemObject 객체 할당 및 해제
Scripting.FileSystemObject
객체는 컴퓨터(서버) 내 파일 시스템에 접근할 수 있는 메소드들을 제공하는 객체이다(출처: https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/filesystemobject-object).
<%
Set fileSystemObject = Server.CreateObject("Scripting.FileSystemObject")
' ... '
Set fileSystemObject = Nothing
%>
GetFolder 메소드로 폴더에 대한 객체 얻기
[Scripting.FileSystemObject].GetFolder
메소드는 폴더를 특정하는 경로를 받아서 이에 대한 객체를 반환한다.
<%
Set fileSystemObject = Server.CreateObject("Scripting.FileSystemObject")
Set folder = fileSystemObject.GetFolder(경로)
' ... '
Set folder = Nothing
Set fileSystemObject = Nothing
%>
이 때, 경로는 하드코딩도 되겠으나, Server.MapPath
메소드를 조합하면 다음과 같이 ASP 파일이 위치한 로컬 경로를 기준으로 한 상대 경로도 가능하다.
<%
Set fileSystemObject = Server.CreateObject("Scripting.FileSystemObject")
Set folder = fileSystemObject.GetFolder(Server.MapPath("."))
' ... '
Set folder = Nothing
Set fileSystemObject = Nothing
%>
현재 지정된 폴더의 절대 경로 얻기
위와 같이 얻은 폴더 객체의 절대 경로는 다음과 같이 Path
프로퍼티로 구할 수 있다.
<%=folder.Path%>
현재 지정된 폴더 속 하위 폴더의 개수
위와 같이 얻은 폴더 객체에서 하위 폴더가 몇 개인지를 알기 위해 다음과 같이 SubFolders.Count
프로퍼티를 사용할 수 있다.
<%=folder.SubFolders.Count%>
현재 지정된 폴더 속 파일의 개수
위와 같이 얻은 폴더 객체에서 파일이 몇 개인지를 알기 위해 다음과 같이 SubFolders.Count
프로퍼티를 사용할 수 있다.
<%=folder.Files.Count%>
폴더 속 폴더를 하나씩 순회하기
SubFolders
프로퍼티는 그 자체가 Collection 객체이기도 하므로 다음과 같이 For Each
루프를 돌려서 하위 폴더들을 하나씩 순회할 수 있다.
<%
Set fileSystemObject = Server.CreateObject("Scripting.FileSystemObject")
Set folder = fileSystemObject.GetFolder(Server.MapPath("."))
For Each f in folder.SubFolders ' f is also Folder object
' ... '
Next
Set folder = Nothing
Set fileSystemObject = Nothing
%>
폴더 속 파일을 하나씩 순회하기
마찬가지로 Files
프로퍼티도 그 자체가 Collection 객체이기도 하므로 다음과 같이 For Each
루프를 돌려서 폴더 속 파일들을 하나씩 순회할 수 있다.
<%
Set fileSystemObject = Server.CreateObject("Scripting.FileSystemObject")
Set folder = fileSystemObject.GetFolder(Server.MapPath("."))
For Each f in folder.Files ' f is File object
' ... '
Next
Set folder = Nothing
Set fileSystemObject = Nothing
%>
서버 로컬 경로 내 파일 및 폴더 순회 예
다음은 asp 파일 자신이 위치한 폴더 내 파일과 하위 폴더들을 순회하여 클라이언트에게 보여주는 예이다.
<%@ language="VBScript" codepage="65001" %>
<%
Session.CodePage = "65001"
Response.ContentType = "text/html"
Response.AddHeader "Content-Type", "text/html;charset=UTF-8"
Response.Charset = "UTF-8"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>codingCat.kr</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<body>
<%
fileSystemPath = Server.MapPath(".")
Dim fileSystemObject
Dim fileSystemFolder
Set fileSystemObject = Server.CreateObject("Scripting.FileSystemObject")
Set fileSystemFolder = fileSystemObject.GetFolder(fileSystemPath)
%>
<p>Local Path: <code><%=fileSystemFolder.Path%></code></p>
<p>FOLDER(S): <code><%=fileSystemFolder.SubFolders.Count%></code> item(s).</p>
<ul>
<% For Each f in fileSystemFolder.SubFolders %><li>[<%=f.Name%>]</li><% Next %>
</ul>
<p>FILE(S): <code><%=fileSystemFolder.Files.Count%></code> item(s).</p>
<ul>
<% For Each f in fileSystemFolder.Files %><li><%=f.Name%></li><% Next %>
</ul>
<%
Set fileSystemFolder = Nothing
Set fileSystemObject = Nothing
%>
</body>
</html>