Конец потока воздуха Adobe на линии (EOF) - PullRequest
0 голосов
/ 28 марта 2010

Мне нужно прочитать файл, в котором есть «n» строк, я должен знать, читая конец каждой строки, чтобы я мог сохранить строку в массиве, хорошо, пока у меня

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

мой вопрос, всегда конец строки будет "\ n" ??как я могу быть уверен, что если нет другого символа, такого как \ r ??, есть другой символ для конца строки ??, спасибо за любую помощь !!!

Ответы [ 2 ]

2 голосов
/ 28 марта 2010

Как насчет этого:

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

Он читает всю строку из файла, а затем сначала разбивает строки на концах окон, заменяя их окончаниями строк Unix. Затем он снова разделяется на окончания строки Unix. Результатом должен быть массив, содержащий все строки ...

0 голосов
/ 28 марта 2010

Поскольку вы все равно читаете весь поток, помещая его в память, почему бы просто не загрузить его в строку, а затем разбить строку на строки в этой точке. Вы можете сначала проверить строку для \ 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
}
...