从Haxe的文件中读取行

时间:2012-11-13 03:15:16

标签: haxe

在Haxe中,是否有任何跨语言方法可以从文件中读取行(适用于所有Haxe目标语言?)

这是我正在尝试实现的方法存根:

static function readLine(fileName, lineNumber){
    //now how can I get this method to work with all Haxe target languages?
}

可能在Sys类中找到相关方法,但我还没有找到它。

2 个答案:

答案 0 :(得分:7)

static function readLine(fileName, lineNumber) {
    var fin = sys.io.File.read(fileName, false);
    try {
        for (i in 0...lineNumber)
            fin.readLine();
        var line = fin.readLine();
        fin.close();
    } catch (e:haxe.io.Eof) { return null; }
    return line;
}

http://haxe.org/api/sys/io/file正是您要找的。

http://haxe.org/doc/neko/fileio举个例子。

答案 1 :(得分:1)

目前对于haxe节点目标,由于异步方面,读取行号的方法可能有点不同,所以认为添加一个使其更容易的示例包装器可能是有用的,只需将类传递给文件路径,一个函数完成处理后处理行和函数。

package saver;
import js.node.Fs;
import js.node.Readline;
class Reader{
    var onLine: Int->String->Void;
    var finished: Void->Void;
    var lineNo: Int;
    public function new(  file_: String
                        , onLine_: Int->String->Void
                        , finished_: Void->Void ){
        onLine = onLine_;
        finished = finished_;
        var file = file_;
        lineNo = 0;
        var readLine = Readline.createInterface({
          input: Fs.createReadStream( file )
        });
        readLine.on('line',     onReadLine );
        readLine.on('close', onFinished );
    }
    function onReadLine( str ){
        onLine( lineNo, str );
        lineNo++;
    }
    function onFinished( ){
        finished();
    }
}

如果您在电子应用程序中使用Node,那么您可能需要在hxml中使用这些。

-lib电子

-lib hxnodejs