Название: Чтение с файла Отправлено: demaker от Ноябрь 25, 2016, 15:18 Не могу считать с файла ???
Не понимаю в чем может быть причина, файл находит и открывает, но в консоль не выводит данные, хотя в файле все есть. Код
Такое впечатление, что Код: QByteArray ba = pFile.readAll(); Название: Re: Чтение с файла Отправлено: __Heaven__ от Ноябрь 25, 2016, 16:12 Такое впечатление, что Код: QByteArray ba = pFile.readAll(); Цитировать This function has no way of reporting errors; returning an empty QByteArray can mean either that no data was currently available for reading, or that an error occurred. Название: Re: Чтение с файла Отправлено: demaker от Ноябрь 25, 2016, 16:56 Такое впечатление, что Код: QByteArray ba = pFile.readAll(); Цитировать This function has no way of reporting errors; returning an empty QByteArray can mean either that no data was currently available for reading, or that an error occurred. Но в файле есть данные. Или я Вас не правильно понял? Название: Re: Чтение с файла Отправлено: Авварон от Ноябрь 25, 2016, 17:24 Попробуйте ReadOnly. WriteOnly делает Truncate файлу.
Название: Re: Чтение с файла Отправлено: Alex Custov от Ноябрь 25, 2016, 18:11 А что показывает такой код
Код: qDebug()<<"ba.size() = "<<ba.size(); Название: Re: Чтение с файла Отправлено: __Heaven__ от Ноябрь 25, 2016, 19:14 У меня readAll когда-то давно плохо работал при считывании больших файлов.
Название: Re: Чтение с файла Отправлено: demaker от Ноябрь 26, 2016, 10:21 Спасибо, за советы. В понедельник отпишусь о результатах.
Название: Re: Чтение с файла Отправлено: demaker от Ноябрь 28, 2016, 14:49 А что показывает такой код Код: qDebug()<<"ba.size() = "<<ba.size(); Код: ba.size = 29114 Название: Re: Чтение с файла Отправлено: demaker от Ноябрь 28, 2016, 14:50 Попробуйте ReadOnly. WriteOnly делает Truncate файлу. Не помогло Что делать??? ??? ??? ??? Название: Re: Чтение с файла Отправлено: Old от Ноябрь 28, 2016, 14:55 Не помогло Так а qDebug()<<str вашем коде что показывает?Что делать??? ??? ??? ??? Название: Re: Чтение с файла Отправлено: Alex Custov от Ноябрь 28, 2016, 14:57 А что показывает такой код Код: qDebug()<<"ba.size() = "<<ba.size(); Код: ba.size = 29114 Так там наверняка какая-нибудь бинарщина, вывод которой на консоль останавливается после первого же нуля. Название: Re: Чтение с файла Отправлено: Old от Ноябрь 28, 2016, 15:02 Так там наверняка какая-нибудь бинарщина, вывод которой на консоль останавливается после первого же нуля. Т.е. вы бинарные данные присвоили строке и пытаетесь их сплитом разделить? ::)Название: Re: Чтение с файла Отправлено: demaker от Ноябрь 28, 2016, 15:08 Так там наверняка какая-нибудь бинарщина, вывод которой на консоль останавливается после первого же нуля. Т.е. вы бинарные данные присвоили строке и пытаетесь их сплитом разделить? ::)А как же мне сделать тогда правильно. Подскажите пожалуйста ::) Название: Re: Чтение с файла Отправлено: Old от Ноябрь 28, 2016, 15:18 А как же мне сделать тогда правильно. Делить на строки имеет смысл только текстовые данные, поэтому файл желательно иметь текстовый. :)Подскажите пожалуйста ::) После прочтения данных в QByteArray их нужно правильно сконвертировать в QString в зависимости от кодировки исходного файла: Код
Название: Re: Чтение с файла Отправлено: demaker от Ноябрь 28, 2016, 15:31 А как же мне сделать тогда правильно. Делить на строки имеет смысл только текстовые данные, поэтому файл желательно иметь текстовый. :)Подскажите пожалуйста ::) После прочтения данных в QByteArray их нужно правильно сконвертировать в QString в зависимости от кодировки исходного файла: Код
Код
Только в консоль выводит кучу строк Код: s = " Я думал хоть строки увижу. А файл сам текстовый. Название: Re: Чтение с файла Отправлено: Alex Custov от Ноябрь 28, 2016, 15:38 текстовый в какой кодировке? Ты можешь этот файл приложить?
Название: Re: Чтение с файла Отправлено: demaker от Ноябрь 28, 2016, 16:06 текстовый в какой кодировке? Ты можешь этот файл приложить? Да, конечноНазвание: Re: Чтение с файла Отправлено: Авварон от Ноябрь 28, 2016, 16:11 Это 16й UTF, там половина байт нули.
Название: Re: Чтение с файла Отправлено: demaker от Ноябрь 28, 2016, 16:52 Название: Re: Чтение с файла Отправлено: demaker от Ноябрь 28, 2016, 17:30 Только я вот сделал так и опять не пашет :-\
Код Строки в консоле пустые Название: Re: Чтение с файла Отправлено: Авварон от Ноябрь 28, 2016, 18:20 Код: - QString str = codec->toUnicode(baLine.data()); Угадайте почему. Upd: Код: - if(!pFile.open(QIODevice::ReadOnly)){ И это ещё не всё Название: Re: Чтение с файла Отправлено: demaker от Ноябрь 28, 2016, 18:35 Код: - QString str = codec->toUnicode(baLine.data()); Угадайте почему. Upd: Код: - if(!pFile.open(QIODevice::ReadOnly)){ И это ещё не всё :o и что же еще Название: Re: Чтение с файла Отправлено: Авварон от Ноябрь 28, 2016, 18:45 Код: #include <QCoreApplication> Почему глючит readLine я понять не смог. Была попытка читать блоками по 256 байт, но текст содержит китайщину, а значит там есть суррогатные пары, которые интерпретируются неверно, если конец блока попадает в середину пары. Название: Re: Чтение с файла Отправлено: __Heaven__ от Декабрь 08, 2016, 12:11 Предполагаю, что вы пытаетесь декодировать 1 байт из utf-16 в utf-8, но utf-16 должен содержать 2 байта на символ.
|