Intereting Posts
Изменить логотип, который отображается в Android ActionBar программно Как вызвать getResources () из класса, который не имеет контекста? Кнопка блокировки в Android Предотвратить использование Google для автоматического перевода описания моего приложения Как я могу иметь EditText с Clickable Spannables и по-прежнему выбираемый longClick? Android 4+ html5 canvas не перерисовывается Какое имя пакета Android Market или Google Apps В Android, как я устанавливаю поля в dp программно? Java, Android, Java EE Как добавить номер в значок запуска, например, по почте HTC? Кордова 2.1.0 (PhoneGap) создает скрипт для Android, который говорит, что «Проект уже существует» или «Произошла ошибка. Удаление проекта " OnClickListener не работает во фрагменте Ionic не может запускать ионную платформу android Google Cloud Messaging (GCM) – невозможно создать экземпляр получателя – java.lang.ClassNotFoundException Android EditText: Как создать пустую абзацу пули BulletSpan?

Писать и читать строки в / из внутреннего файла

Я вижу много примеров, как писать такие объекты String:

String FILENAME = "hello_file"; String string = "hello world!"; FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(string.getBytes()); fos.close(); 

Но не как их прочитать из внутреннего файла приложения. Большинство примеров предполагают конкретную длину строки для вычисления байтового буфера, но я не знаю, какая длина будет. Есть ли простой способ сделать это? Мое приложение напишет до 50-100 строк в файл

Solutions Collecting From Web of "Писать и читать строки в / из внутреннего файла"

Написание строк таким образом не помещает в файл какие-либо разделители. Вы не знаете, где заканчивается одна строка, а следующая начинается. Вот почему вы должны указывать длину строк при их чтении.

DataOutputStream.writeUTF() вы можете использовать DataOutputStream.writeUTF() и DataInputStream.readUTF() поскольку эти методы помещают длину строк в файл и автоматически считывают правильное количество символов.

В Android Context вы можете сделать что-то вроде этого:

 try { // Write 20 Strings DataOutputStream out = new DataOutputStream(openFileOutput(FILENAME, Context.MODE_PRIVATE)); for (int i=0; i<20; i++) { out.writeUTF(Integer.toString(i)); } out.close(); // Read them back DataInputStream in = new DataInputStream(openFileInput(FILENAME)); try { for (;;) { Log.i("Data Input Sample", in.readUTF()); } } catch (EOFException e) { Log.i("Data Input Sample", "End of file reached"); } in.close(); } catch (IOException e) { Log.i("Data Input Sample", "I/O Error"); }