Я бы попробовал пару диагностических вещей, но могу поспорить, почему вы видите эту проблему.
Но сначала я бы попробовал установить feedback.text
в myFile.size.toString()
и посмотреть, там написанокакие-нибудь байты в файле.Если это возвращается с чем-то> 0, то я бы поспорил, что происходит следующее:
Вы используете writeUTF()
при написании строки, но вы используете readMultiByte()
при чтении строки обратно.Когда вы используете writeUTF()
, он не просто записывает строку в файл напрямую, он добавляет к потоку длину строки (в виде 16-битного целого), где readMultiByte()
пытается принудительно привести эти байты непосредственно встрока с заданной кодировкой.Эти дополнительные байты в начале могут вызывать сбой readMultiByte()
или сбой (он будет пытаться прочитать 0x06,0x00,0x00,0x00,H,e,l,l,o,\n
, а не просто H,e,l,l,o,\n
).writeUTF()
можно использовать для записи нескольких строк в один и тот же файл, а затем считывать их обратно из потока с помощью readUTF()
.
Возможно, вы хотите связать правильные методы чтения и записи, либо используйте writeUTF()
и readUTF()
или используйте writeMultiByte()
и readMultiByte()
.Если вы пытаетесь написать чистый текстовый файл, тогда writeMultiByte()
будет правильным решением.Если вы пытаетесь сериализовать кучу разных данных в один файл, тогда writeUTF()
- это путь.
Если размер файла фактически равен нулю, то мне придется немного покопатьсяи посмотрите, что происходит.