在 Haxe 中,是否有任何跨语言方法可以从文件中读取行(适用于所有 Haxe 目标语言?)
这是我要实现的方法存根:
static function readLine(fileName, lineNumber){
//now how can I get this method to work with all Haxe target languages?
}
在 Sys 类中可能找到相关的方法,但我还没有找到。
在 Haxe 中,是否有任何跨语言方法可以从文件中读取行(适用于所有 Haxe 目标语言?)
这是我要实现的方法存根:
static function readLine(fileName, lineNumber){
//now how can I get this method to work with all Haxe target languages?
}
在 Sys 类中可能找到相关的方法,但我还没有找到。
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是您正在寻找的。
目前对于 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