Die Dinge sind einfach, funktionieren aber nicht wie vorgesehen.
Ich habe eine Textdatei als Rohstoff hinzugefügt. Die Textdatei enthält Text wie:
b) WENN ANWENDBARES RECHT GEWÄHRLEISTUNGEN IN BEZUG AUF DIE SOFTWARE ERFORDERT, SIND ALLE DIESEN GEWÄHRLEISTUNGEN AUF NEUNZEHN (90) TAGE AB LIEFERDATUM BESCHRÄNKT.
(c) KEINE MÜNDLICHEN ODER SCHRIFTLICHEN INFORMATIONEN ODER RATSCHLÄGE, DIE VON VIRTUAL ORIENTEERING, SEINEN HÄNDLERN, VERTRIEBSPARTNERN, VERTRETERN ODER MITARBEITERN GEGEBEN WERDEN, ERSTELLEN EINE GARANTIE ODER ERHÖHEN IN KEINER WEISE DEN GELTUNGSBEREICH.
(d) (nur USA) EINIGE STAATEN ERLAUBEN DEN AUSSCHLUSS STILLSCHWEIGENDER GEWÄHRLEISTUNGEN NICHT, sodass der oben genannte Ausschluss möglicherweise nicht für Sie gilt. DIESE GARANTIE GIBT IHNEN SPEZIFISCHE RECHTE UND SIE KÖNNEN AUCH ANDERE RECHTE HABEN, DIE VON STAAT ZU STAAT UNTERSCHIEDLICH SIND.
Auf meinem Bildschirm habe ich ein Layout wie folgt:
<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>
Der Code zum Lesen der Rohressource lautet:
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();
}
Der Text wird angezeigt, aber nach jeder Zeile wird ein seltsames Zeichen angezeigt. [] Wie kann ich dieses Zeichen entfernen? Ich denke es ist New Line.
ARBEITSLÖSUNG
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();
}
Antworten:
Was ist, wenn Sie einen zeichenbasierten BufferedReader anstelle eines bytebasierten InputStream verwenden?
Vergessen Sie nicht, dass
readLine()
die neuen Zeilen übersprungen werden!quelle
Sie können dies verwenden:
quelle
Wenn Sie IOUtils von Apache "commons-io" verwenden, ist es noch einfacher:
Abhängigkeiten: http://mvnrepository.com/artifact/commons-io/commons-io
Maven:
Gradle:
quelle
Nun, mit Kotlin können Sie es nur in einer Codezeile tun:
Oder deklarieren Sie sogar die Erweiterungsfunktion:
Und dann benutze es einfach sofort:
quelle
Mach es lieber so:
Fügen Sie aus einer Aktivität hinzu
oder aus einem Testfall hinzufügen
Und beobachten Sie Ihre Fehlerbehandlung - fangen Sie keine Ausnahmen ab und ignorieren Sie sie nicht, wenn Ihre Ressourcen vorhanden sein müssen oder etwas (sehr?) Nicht stimmt.
quelle
openRawResource()
?Dies ist eine andere Methode, die definitiv funktionieren wird, aber ich kann sie nicht dazu bringen, mehrere Textdateien zu lesen, um sie in mehreren Textansichten in einer einzigen Aktivität anzuzeigen. Kann jemand helfen?
quelle
@borislemke Sie können dies auf ähnliche Weise tun wie
quelle
Hier finden Sie eine Mischung aus Weekens- und Vovodroid-Lösungen.
Es ist korrekter als die Lösung von Vovodroid und vollständiger als die Lösung von Weekens.
quelle
Hier ist eine einfache Methode , um die lesen Textdatei aus dem rohen Ordner:
quelle
Hier ist eine Implementierung in Kotlin
quelle
1.Erstellen Sie zuerst einen Verzeichnisordner und benennen Sie ihn roh im Ordner res. 2.Erstellen Sie eine TXT-Datei in dem zuvor erstellten unformatierten Verzeichnisordner und geben Sie ihm einen beliebigen Namen, z. B. Artikel.txt .... 3. Kopieren Sie den Ordner und fügen Sie ihn ein Text, den Sie in der von Ihnen erstellten TXT-Datei "articles.txt" haben möchten 4. Vergessen Sie nicht, eine Textansicht in Ihre main.xml MainActivity.java aufzunehmen
Hoffe es hat funktioniert!
quelle
quelle