Apache flex adobe气流末端在线(EOF)
我需要读取一个文件,它有一个“n”行数,我需要知道何时读取每行的末尾,这样我就可以将该行存储在一个数组中,到目前为止我已经知道了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 = "";
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。只需注意,如果这是一个问题,你的可以重写,包括这一点。