2012-10-16 2 views
3

Je veux ajouter un écran d'aide à mon App Codename One. Comme le texte est plus long que d'autres chaînes, je voudrais le mettre dans un fichier séparé et l'ajouter à l'application-paquet.Textscreen dans Codename One, comment lire le fichier texte?

Comment faire? Où puis-je mettre le fichier texte, et comment puis-je facilement le lire en une fois dans une chaîne?

(je sais déjà comment mettre la chaîne dans une zone de texte dans un formulaire)

Répondre

5

Dans le Codename One Designer allez à la section de données et ajouter un fichier.

Vous pouvez simplement ajouter le texte et l'extraire en utilisant myResFile.getData("name");.

Vous pouvez également enregistrer le fichier dans le répertoire src et obtenir l'aide Display.getInstance().getResourceAsStream("/filename.txt");

+0

+1 Puis-je demander comment myResFile est appelé en premier lieu? Désolé, je suis nouveau pour le nom de code un :) – Roylee

+1

Si vous êtes dans une application GUIBuilder vous pouvez utiliser fetchResourceFile() si vous utilisez une application manuelle, vous pouvez regarder la méthode init pour voir le chargement du fichier res. Vous pouvez le mettre en cache ou le charger à chaque fois. –

+0

Que faire si le fichier de ressources se trouve dans une dépendance située dans 'src/main/resources' – EliuX

1

Je préfère avoir le fichier texte dans le système de fichiers au lieu de l'éditeur de ressources, parce que je peux modifier le texte avec l'IDE. La méthode getResourceAsStream est la première partie de la solution. La deuxième partie consiste à charger le texte en une fois. Il n'y avait pas de support pour cela dans J2ME, vous aviez besoin de lire, de gérer les buffers, etc. Heureusement, il existe une méthode d'utilité dans le nom de code un. Donc, ma méthode de travail ressemble à ceci:

final String HelpTextFile = "/helptext.txt"; 
    ... 
    InputStream in = Display.getInstance().getResourceAsStream(
      Form.class, HelpTextFile); 
    if (in != null){ 
     try { 
      text = com.codename1.io.Util.readToString(in); 
      in.close(); 
     } catch (IOException ex) { 
      System.out.println(ex); 
      text = "Read Error"; 
     } 
    } 
0

Le code suivant a fonctionné pour moi.

//Gets a file system storage instance 
FileSystemStorage inst = FileSystemStorage.getInstance(); 
//Gets CN1 home` 
final String homePath = inst.getAppHomePath(); 
final char sep = inst.getFileSystemSeparator(); 
// Getting input stream of the file 
InputStream is = inst.openInputStream(homePath + sep + "MyText.txt"); 
// CN1 Util class, readInputStream() returns byte array 
byte[] b = Util.readInputStream(is); 
String myString = new String(b); 
Questions connexes