Текстовый экран в Codename One, как читать текстовый файл?

Я хочу добавить экран справки в свое приложение Codename One. Поскольку текст длиннее других строк, я хотел бы поместить его в отдельный файл и добавить в пакет приложения.

Как мне это сделать? Куда мне поместить текстовый файл и как я могу легко прочитать его за один раз в строку?

(Я уже знаю, как поместить строку в текстовую область внутри формы)


person Meier    schedule 16.10.2012    source источник


Ответы (3)


В Codename One Designer перейдите в раздел данных и добавьте файл.

Вы можете просто добавить туда текст и получить его с помощью myResFile.getData("name");.

Вы также можете сохранить файл в каталоге src и получить его, используя Display.getInstance().getResourceAsStream("/filename.txt");

person Shai Almog    schedule 16.10.2012
comment
+1 Могу я спросить, как вообще вызывается myResFile? Извините, я новичок в кодовом имени один :) - person RLEE; 14.03.2013
comment
Если вы находитесь в приложении GUIBuilder, вы можете использовать fetchResourceFile(), если вы используете ручное приложение, вы можете посмотреть метод init, чтобы увидеть загрузку файла res. Вы можете либо кэшировать его, либо загружать каждый раз. - person Shai Almog; 15.03.2013
comment
Что делать, если файл ресурсов находится в зависимости, расположенной в «src/main/resources» - person EliuX; 16.02.2016
comment
Вы не можете размещать ресурсы за пределами корневого каталога src. Они должны быть там. iOS на самом деле не поддерживает иерархию в своей собственной загрузке ресурсов, поэтому нам нужна плоская структура. Для всего, кроме HTML: codenameone.com/blog/html- иерархия-релиз-план-teavm.html - person Shai Almog; 17.02.2016

Я предпочитаю иметь текстовый файл в файловой системе, а не в редакторе ресурсов, потому что я могу просто редактировать текст с помощью IDE. Метод getResourceAsStream — это первая часть решения. Вторая часть — загрузка текста за один раз. В J2ME не было поддержки для этого, вам нужно было читать, обрабатывать буферы и т. д. самостоятельно. К счастью, в кодовом имени one есть вспомогательный метод. Итак, мой рабочий метод теперь выглядит так:

    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";
        }
    }
person Meier    schedule 27.10.2012

Следующий код работал для меня.

//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);
person Arindam_4_Java    schedule 05.06.2014