我想在我的 Codename One 应用程序中添加一个帮助屏幕。由于文本与其他字符串一样长,我想将它放在一个单独的文件中并将其添加到应用程序包中。
我该怎么做呢?我应该把文本文件放在哪里,我怎样才能轻松地将它读入一个字符串?
(我已经知道如何将字符串放入表单内的文本区域)
我想在我的 Codename One 应用程序中添加一个帮助屏幕。由于文本与其他字符串一样长,我想将它放在一个单独的文件中并将其添加到应用程序包中。
我该怎么做呢?我应该把文本文件放在哪里,我怎样才能轻松地将它读入一个字符串?
(我已经知道如何将字符串放入表单内的文本区域)
在代号 One Designer 中,转到数据部分并添加一个文件。
您可以在此处添加文本并使用myResFile.getData("name");
.
您还可以将文件存储在 src 目录中并使用Display.getInstance().getResourceAsStream("/filename.txt");
我更喜欢将文本文件放在文件系统而不是资源编辑器中,因为我可以使用 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";
}
}
以下代码对我有用。
//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);