Все просто, но не работает так, как предполагалось.Файл с сырым файлом для чтения Android
У меня есть текстовый файл, добавленный как сырьевой ресурс. Текстовый файл содержит текст, как:
б) если применимое законодательство требует НИКАКИХ ГАРАНТИЙ В ОТНОШЕНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ВСЕ ЭТИ ГАРАНТИИ ОГРАНИЧЕН ДЕВЯНОСТА (90) ДНЕЙ С ДАТЫ ПОСТАВКИ ,
(с) НЕТ УСТНЫХ ИЛИ ПИСЬМЕННЫЕ СВЕДЕНИЯ ИЛИ КОНСУЛЬТАЦИИ ПРЕДОСТАВЛЕННЫХ ВИРТУАЛЬНОМ ориентирования, ЕЕ ПРОДАВЦЫ, РАСПРОСТРАНИТЕЛИ, АГЕНТЫ ИЛИ СОТРУДНИКОВ НЕ СОЗДАЮТ ГАРАНТИИ ИЛИ какой-либо образом ПОВЫШЕНИЯ объема каких-либо ГАРАНТИЙ, представленных здесь, ,
(г) (только США) В некоторых странах не РАЗРЕШЕНЫ ИСКЛЮЧЕНИЕ ПОДРАЗУМЕВАЕМЫХ ГАРАНТИЙ , ТАК ВЫШЕУКАЗАННОЕ ОГРАНИЧЕНИЕ МОЖЕТ К ВАМ НЕ ОТНОСИТСЯ. НАСТОЯЩАЯ ГАРАНТИЯ ДАЕТ ВАШИ СПЕЦИАЛЬНЫЕ ПРАВОВЫЕ ПРАВА И ВЫ МОЖЕТЕ ТАКЖЕ ИМЕЕТ ДРУГИЕ ЮРИДИЧЕСКИЕ ПРАВА, ЧТО ВАРИАНТЫ ОТ ГОСУДАРСТВА В ГОСУДАРСТВО.
На моем экране у меня есть макет, как это:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1.0"
android:layout_below="@+id/logoLayout"
android:background="@drawable/list_background">
<ScrollView android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/txtRawResource"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dip"/>
</ScrollView>
</LinearLayout>
код на необработанный ресурс является:
TextView txtRawResource= (TextView)findViewById(R.id.txtRawResource);
txtDisclaimer.setText(Utils.readRawTextFile(ctx, R.raw.rawtextsample);
public static String readRawTextFile(Context ctx, int resId)
{
InputStream inputStream = ctx.getResources().openRawResource(resId);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
try {
i = inputStream.read();
while (i != -1)
{
byteArrayOutputStream.write(i);
i = inputStream.read();
}
inputStream.close();
} catch (IOException e) {
return null;
}
return byteArrayOutputStream.toString();
}
Текст получить показал, но после каждой строки я получаю странный характер [] Как я могу удалить этот символ? Я думаю, что это новая линия.
РАБОЧИЙ РАСТВОР
public static String readRawTextFile(Context ctx, int resId)
{
InputStream inputStream = ctx.getResources().openRawResource(resId);
InputStreamReader inputreader = new InputStreamReader(inputStream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
StringBuilder text = new StringBuilder();
try {
while ((line = buffreader.readLine()) != null) {
text.append(line);
text.append('\n');
}
} catch (IOException e) {
return null;
}
return text.toString();
}
Я не уверен, что Inputstream.available() является правильным выбором здесь, а читать п к ByteArrayOutputStream нед п == -1. – ThomasRS
Это может не работать для больших ресурсов. Это зависит от размера буфера чтения входного потока и может возвращать только часть ресурса. – d4n3
@ d4n3 прав, в документации доступного метода входного потока указано: «Возвращает оценочное количество байтов, которое может быть прочитано или пропущено без блокировки для большего ввода. Обратите внимание, что этот метод обеспечивает такую слабую гарантию, что он не является очень полезно на практике » – ozba