Las cosas son simples pero no funcionan como se supone que deben hacerlo.Archivo de texto sin formato de lectura de Android
Tengo un archivo de texto agregado como recurso sin formato. El archivo de texto contiene texto como:
b) Si la ley aplicable requiere NINGUNA GARANTÍA CON RESPECTO A LA SOFTWARE, tales garantías estará LIMITADA A NOVENTA (90) DÍAS A PARTIR DE LA FECHA DE ENTREGA .
(c) Cualquier otra información oral o escrita consejo dado por ORIENTEERING VIRTUAL, sus distribuidores, distribuidores, agentes O EMPLEADOS constitución de una garantía OR DE CUALQUIER FORMA aumentar el alcance de CUALQUIER GARANTÍA AQUÍ .
(d) (sólo EE.UU.) Algunos estados no permiten la exclusión de IMPLÍCITAS garantías, por lo que la exclusión anterior NO APLICACIÓN. ESTA GARANTÍA OTORGA USTEDES DERECHOS LEGALES ESPECÍFICOS Y PUEDE QUE TAMBIÉN TIENE OTROS DERECHOS LEGALES QUE VARÍAN DE ESTADO A ESTADO.
en mi pantalla tengo una disposición como ésta:
<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>
El código para leer el recurso prima es:
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();
}
El texto obtener de mostró pero después de cada línea me sale una personaje extraño [] ¿Cómo puedo eliminar ese personaje? Creo que es New Line.
SOLUCIÓN DE TRABAJO
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();
}
No estoy seguro de la Inputstream.available() es la elección correcta aquí, en lugar de leer n a un ByteArrayOutputStream hasta el n == -1. – ThomasRS
Esto puede no funcionar para grandes recursos. Depende del tamaño del buffer de lectura de inputstream y solo podría devolver una parte del recurso. – d4n3
@ d4n3 es correcto, la documentación del método de flujo de entrada disponible indica: "Devuelve un número estimado de bytes que se pueden leer u omitir sin bloquear para más entrada. Tenga en cuenta que este método proporciona una garantía tan débil que no es muy útil en la práctica " – ozba