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