Apache flex adobe气流末端在线(EOF)

Apache flex adobe气流末端在线(EOF),apache-flex,actionscript-3,air,Apache Flex,Actionscript 3,Air,我需要读取一个文件,它有一个“n”行数,我需要知道何时读取每行的末尾,这样我就可以将该行存储在一个数组中,到目前为止我已经知道了 while(stream.position < stream.bytesAvailable) { char = stream.readUTFBytes(1); if(char == "\n") { array.push(line); line = "";

我需要读取一个文件,它有一个“n”行数,我需要知道何时读取每行的末尾,这样我就可以将该行存储在一个数组中,到目前为止我已经知道了

while(stream.position < stream.bytesAvailable)
    {
        char = stream.readUTFBytes(1);
        if(char == "\n")
        {
            array.push(line);
            line = "";
        }
        else
        {
            line += char;
        }
    }
while(stream.position

我的问题是,行的结尾总是“\n”??如果不是像\r???这样的其他字符,如何确定行尾是否有其他字符??,谢谢您的帮助

既然您正在读取整个流,并将其放入内存,为什么不将其加载到字符串中,然后在该点将字符串拆分为行呢。您可以先测试字符串的\n或\r或\r\n组合(您应该先测试)

例如,其中myFileString是您在中阅读的内容:

var lineEnding = ''; // String var for storing line ending char or char combo
var lines = []; // Array var for storing the lines of the string

if (myFileString.match('\r\n') {
  lineEnding = '\r\n';
} else if (myFileString.match('\r') {
  lineEnding = '\r';
} else if (myFileString.match('\n') {
  lineEnding = '\n';
}

if (lineEnding != '') {
  lines = myFileString.split(lineEnding); // here are your lines
} else {
  lines[0] = myFileString; // it's one line
}

像这样的怎么样:

var lines:Array = stream.readUTF().split('\r\n').join('\n').split('\n');

它从文件中读取整个字符串,然后首先在windows行结束符上拆分,用unix行结束符替换它们。然后在unix行结尾处再次拆分。结果应该是一个包含所有行的数组…

您的解决方案比我的解决方案更优雅(为了更简单地说明所涉及的概念,我对其进行了详细说明),因此我给它+1。请注意,它不会从OS X之前的Mac中找到行结束符,\r。只需注意,如果这是一个问题,你的可以重写,包括这一点。