Las cosas son simples pero no funcionan como se supone.
Tengo un archivo de texto agregado como recurso sin procesar. El archivo de texto contiene texto como:
b) SI LA LEY APLICABLE REQUIERE CUALQUIER GARANTÍA CON RESPECTO AL SOFTWARE, TODAS LAS GARANTÍAS ESTÁN LIMITADAS EN DURACIÓN A NOVENTA (90) DÍAS DESDE LA FECHA DE ENTREGA.
(c) NINGUNA INFORMACIÓN ORAL O ESCRITA O CONSEJO DADO POR ORIENTACIÓN VIRTUAL, SUS DISTRIBUIDORES, DISTRIBUIDORES, AGENTES O EMPLEADOS CREARÁN UNA GARANTÍA O DE ALGUNA MANERA AUMENTARÁ EL ALCANCE DE CUALQUIER GARANTÍA PROPORCIONADA AQUÍ.
(d) (solo EE. UU.) ALGUNOS ESTADOS NO PERMITEN LA EXCLUSIÓN DE GARANTÍAS IMPLÍCITAS, POR LO QUE LA EXCLUSIÓN ANTERIOR PUEDE NO APLICARSE EN SU CASO. ESTA GARANTÍA LE OTORGA DERECHOS LEGALES ESPECÍFICOS Y TAMBIÉN PUEDE TENER OTROS DERECHOS LEGALES QUE VARÍAN DE ESTADO A ESTADO.
En mi pantalla tengo un diseño como este:
<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 en bruto 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();
}
Se muestra el texto, pero después de cada línea me sale un carácter extraño [] ¿Cómo puedo eliminar ese carácter? 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();
}
Respuestas:
¿Qué sucede si usa un BufferedReader basado en caracteres en lugar de InputStream basado en bytes?
¡No olvide que se
readLine()
salta las nuevas líneas!fuente
Puedes usar esto:
fuente
Si usa IOUtils de apache "commons-io" es aún más fácil:
Dependencias: http://mvnrepository.com/artifact/commons-io/commons-io
Maven
Gradle:
fuente
Bueno, con Kotlin puedes hacerlo solo en una línea de código:
O incluso declarar la función de extensión:
Y luego simplemente utilícelo de inmediato:
fuente
Más bien hazlo de esta manera:
Desde una actividad , agregue
o de un caso de prueba , agregue
Y observe su manejo de errores: no detecte e ignore las excepciones cuando sus recursos deben existir o algo está (¿muy mal?).
fuente
openRawResource()
?Este es otro método que definitivamente funcionará, pero no puedo hacer que lea múltiples archivos de texto para ver en múltiples vistas de texto en una sola actividad, ¿alguien puede ayudar?
fuente
@borislemke puedes hacer esto de manera similar como
fuente
Aquí va la mezcla de las soluciones de Weekens y Vovodroid.
Es más correcto que la solución de Vovodroid y más completo que la solución de weekens.
fuente
Aquí hay un método simple para leer el archivo de texto de la carpeta sin formato :
fuente
Aquí hay una implementación en Kotlin
fuente
1.Primero cree una carpeta de Directorio y asígnele un nombre sin procesar dentro de la carpeta res 2.Cree un archivo .txt dentro de la carpeta de directorio sin formato que creó anteriormente y asígnele cualquier nombre, por ejemplo, artículos.txt .... 3. Copie y pegue el texto que desea dentro del archivo .txt que creó "articles.txt" 4. no olvide incluir una vista de texto en su main.xml MainActivity.java
Espero que haya funcionado!
fuente
fuente