Difference between revisions of "love.filesystem.getDirectoryItems (日本語)"

m
m (用例)
 
Line 37: Line 37:
 
end
 
end
 
</source>
 
</source>
=== 全てのファイルとフォルダ内のフォルダ、さらにそのサブフォルダを再帰的に検索して表示します。 ===
+
=== すべてのファイルとフォルダ内のフォルダ、さらにそのサブフォルダを再帰的に検索して表示します。 ===
 
<source lang="lua">
 
<source lang="lua">
 
function love.load()
 
function love.load()
Line 46: Line 46:
 
-- 全てのファイルをファイルツリーとして表した文字列で返します。
 
-- 全てのファイルをファイルツリーとして表した文字列で返します。
 
function recursiveEnumerate(folder, fileTree)
 
function recursiveEnumerate(folder, fileTree)
local lfs = love.filesystem
+
local filesTable = love.filesystem.getDirectoryItems(folder)
local filesTable = lfs.getDirectoryItems(folder)
 
 
for i,v in ipairs(filesTable) do
 
for i,v in ipairs(filesTable) do
 
local file = folder.."/"..v
 
local file = folder.."/"..v
if lfs.isFile(file) then
+
local info = love.filesystem.getInfo(file)
fileTree = fileTree.."\n"..file
+
if info then
elseif lfs.isDirectory(file) then
+
if info.type == "file" then
fileTree = fileTree.."\n"..file.." (DIR)"
+
fileTree = fileTree.."\n"..file
fileTree = recursiveEnumerate(file, fileTree)
+
elseif info.type == "directory" then
 +
fileTree = fileTree.."\n"..file.." (DIR)"
 +
fileTree = recursiveEnumerate(file, fileTree)
 +
end
 
end
 
end
 
end
 
end
Line 64: Line 66:
 
end
 
end
 
</source>
 
</source>
 +
 
== 関連 ==
 
== 関連 ==
 
* [[parent::love.filesystem (日本語)]]
 
* [[parent::love.filesystem (日本語)]]

Latest revision as of 04:27, 30 June 2023

LÖVE 0.9.0 から使用可能
love.filesystem.enumerate から名称変更。


指定されたパスのファイルおよびサブディレクトリの名前をテーブルで返します。テーブルに対しては一切の並べ換えを行いません。順列はバラバラです。

パスとしてゲームおよびセーブ・ディレクトリとして存在するものが関数に渡された場合は、双方のファイルおよびディレクトリの場所の一覧を返します。

関数

概要

files = love.filesystem.getDirectoryItems( dir )

引数

string dir
ディレクトリ。

返値

table files
sequence は全てのファイルおよびサブディレクトリの名前を文字列として返したものです。

関数

LÖVE 0.9.1 まで使用可能でしたが LÖVE 0.10.0 で廃止されました
この異形は以降のバージョンでは非対応です。

概要

files = love.filesystem.getDirectoryItems( dir, callback )

引数

string dir
ディレクトリ。
function callback
ディレクトリにある各ファイルおよびフォルダから呼ばれる関数です。ファイル名は引数として関数に渡されます。

返値

table files
sequence は全てのファイルおよびサブディレクトリの名前を文字列として返したものです。

用例

簡単な用例

local dir = ""
-- 完全な LOVE のファイルがあるパスであると仮定します (この場合は最低でも main.lua が存在するはずです)。
local files = love.filesystem.getDirectoryItems(dir)
for k, file in ipairs(files) do
	print(k .. ". " .. file) -- "1. main.lua" といったものが出力されます。
end

すべてのファイルとフォルダ内のフォルダ、さらにそのサブフォルダを再帰的に検索して表示します。

function love.load()
	filesString = recursiveEnumerate("", "")
end

-- この関数は全てのサブディレクトリにあるフォルダおよびファイルといった
-- 全てのファイルをファイルツリーとして表した文字列で返します。
function recursiveEnumerate(folder, fileTree)
	local filesTable = love.filesystem.getDirectoryItems(folder)
	for i,v in ipairs(filesTable) do
		local file = folder.."/"..v
		local info = love.filesystem.getInfo(file)
		if info then
			if info.type == "file" then
				fileTree = fileTree.."\n"..file
			elseif info.type == "directory" then
				fileTree = fileTree.."\n"..file.." (DIR)"
				fileTree = recursiveEnumerate(file, fileTree)
			end
		end
	end
	return fileTree
end
	
function love.draw()
	love.graphics.print(filesString, 0, 0)
end

関連


そのほかの言語