1

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

这是我要实现的方法存根:

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

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

4

2 回答 2

9
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 为例。

于 2012-11-13T06:16:41.657 回答
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

于 2017-01-12T14:40:51.370 回答