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();
    }
}

Electron アプリで Node を使用している場合は、hxml でこれらが必要になる可能性があります。

-lib 電子

-lib hxnodejs

于 2017-01-12T14:40:51.370 に答える