Les choses sont simples mais ne fonctionnent pas comme prévu.
J'ai un fichier texte ajouté en tant que ressource brute. Le fichier texte contient du texte comme:
b) SI LA LOI APPLICABLE EXIGE DES GARANTIES EN CE QUI CONCERNE LE LOGICIEL, TOUTES CES GARANTIES SONT LIMITÉES EN DURÉE À NEUF (90) JOURS À PARTIR DE LA DATE DE LIVRAISON.
(c) AUCUNE INFORMATION OU CONSEIL ORAL OU ÉCRIT FOURNI PAR VIRTUAL ORIENTEERING, SES CONCESSIONNAIRES, DISTRIBUTEURS, AGENTS OU EMPLOYÉS NE CRÉERONT DE GARANTIE OU D'AUGMENTER DE TOUTE MANIÈRE LA PORTÉE DE TOUTE GARANTIE FOURNIE AUX PRÉSENTES.
(d) (États-Unis uniquement) CERTAINS ÉTATS NE PERMETTENT PAS L'EXCLUSION DE GARANTIES IMPLICITES, PAR CONSÉQUENT, L'EXCLUSION CI-DESSUS PEUT NE PAS S'APPLIQUER À VOUS. CETTE GARANTIE VOUS DONNE DES DROITS LÉGAUX SPÉCIFIQUES ET VOUS POUVEZ ÉGALEMENT AVOIR D'AUTRES DROITS JURIDIQUES QUI VARIENT D'UN ÉTAT À L'AUTRE.
Sur mon écran, j'ai une disposition comme celle-ci:
<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>
Le code pour lire la ressource brute est:
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();
}
Le texte est affiché mais après chaque ligne, j'obtiens un caractère étrange [] Comment puis-je supprimer ce caractère? Je pense que c'est New Line.
SOLUTION DE TRAVAIL
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();
}
Réponses:
Que faire si vous utilisez un BufferedReader basé sur des caractères au lieu de InputStream basé sur des octets?
N'oubliez pas que ça
readLine()
saute les nouvelles lignes!la source
Vous pouvez utiliser ceci:
la source
Si vous utilisez IOUtils depuis apache "commons-io", c'est encore plus simple:
Dépendances: http://mvnrepository.com/artifact/commons-io/commons-io
Maven:
Gradle:
la source
Eh bien, avec Kotlin, vous pouvez le faire en une seule ligne de code:
Ou même déclarer la fonction d'extension:
Et puis utilisez-le tout de suite:
la source
Faites-le plutôt de cette façon:
À partir d'une activité , ajoutez
ou à partir d'un cas de test , ajoutez
Et surveillez votre gestion des erreurs - n'attrapez pas et n'ignorez pas les exceptions lorsque vos ressources doivent exister ou que quelque chose ne va (très?) Pas.
la source
openRawResource()
?C'est une autre méthode qui fonctionnera certainement, mais je ne peux pas la faire lire plusieurs fichiers texte à afficher dans plusieurs vues de texte dans une seule activité, n'importe qui peut vous aider?
la source
@borislemke vous pouvez le faire de la même manière, comme
la source
Voici un mélange de solutions de week-end et de Vovodroid.
Elle est plus correcte que la solution de Vovodroid et plus complète que la solution de weekens.
la source
Voici une méthode simple pour lire le fichier texte à partir du dossier brut :
la source
Voici une implémentation dans Kotlin
la source
1.Créez d'abord un dossier de répertoire et nommez-le raw dans le dossier res 2. créez un fichier .txt dans le dossier de répertoire raw que vous avez créé précédemment et donnez-lui un nom, par exemple, articles.txt .... 3. copiez et collez le texte que vous voulez dans le fichier .txt que vous avez créé "articles.txt" 4. n'oubliez pas d'inclure une vue de texte dans votre main.xml MainActivity.java
J'espère que cela a fonctionné!
la source
la source