You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haxe sys目标平台如何无需调用Process列出文件夹内文件与目录

在Haxe sys平台列出目录下所有文件与目录

当然可以!Haxe的sys平台原生就支持目录遍历,完全不用去调用ls或dir命令再解析输出——sys标准库提供了专门的API来搞定这件事,简单又可靠。

基础用法:列出目录下所有条目

下面是一个完整的示例,它会遍历指定目录,打印出所有文件和子目录的路径,还能区分类型:

import sys.io.FileSystem;
import sys.FileSystem as FS; // 用别名让代码更简洁

class DirectoryLister {
    static function main() {
        // 替换成你要遍历的目标目录路径
        var targetDir = "./test_dir";
        
        // 先检查目录是否有效,避免运行报错
        if (!FS.exists(targetDir) || !FS.isDirectory(targetDir)) {
            trace("指定路径不存在或不是目录!");
            return;
        }
        
        // 获取目录下的所有条目名称(仅文件名/目录名,不含完整路径)
        var entries = FileSystem.readDirectory(targetDir);
        
        for (entry in entries) {
            // 拼接完整路径
            var fullPath = targetDir + FS.separator + entry;
            
            // 判断当前条目是文件还是目录
            if (FS.isDirectory(fullPath)) {
                trace("目录: " + fullPath);
            } else {
                trace("文件: " + fullPath);
            }
        }
    }
}

进阶:递归遍历所有子目录

如果需要深度遍历所有子目录里的内容,可以写个递归函数实现:

import sys.io.FileSystem;
import sys.FileSystem as FS;

class RecursiveDirectoryLister {
    static function main() {
        var targetDir = "./test_dir";
        if (!FS.exists(targetDir) || !FS.isDirectory(targetDir)) {
            trace("指定路径不存在或不是目录!");
            return;
        }
        listDirectoryRecursive(targetDir);
    }
    
    static function listDirectoryRecursive(dir:String) {
        var entries = FileSystem.readDirectory(dir);
        for (entry in entries) {
            var fullPath = dir + FS.separator + entry;
            if (FS.isDirectory(fullPath)) {
                trace("目录: " + fullPath);
                // 递归遍历当前子目录
                listDirectoryRecursive(fullPath);
            } else {
                trace("文件: " + fullPath);
            }
        }
    }
}

几个实用提示

  • 上述代码仅适用于sys目标平台(比如C++、C#、Java、Python、Node.js等),因为sys模块是平台相关的,Flash、浏览器端JavaScript等非sys目标无法使用。
  • 路径拼接时用FS.separator代替硬编码的/或\,能自动适配Windows和类Unix系统的路径分隔符,避免跨平台问题。
  • 如果需要获取文件的详细属性(比如大小、修改时间),可以调用sys.io.FileSystem.stat(fullPath),它会返回一个sys.io.FileStat对象,包含这些信息。

内容的提问来源于stack exchange,提问作者quant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:11:51