[英]how to read from a txt file in blackberry eclipse?
我正在开发一个简单的黑莓应用程序 - 用于Eclipse的Java插件。 在那,我想从外部文本文件中读取数据。 我曾经搜索过这个,并尝试了一些提示, 比如 。 但终于失败了。 我将描述我的申请...
我的主要档案......
package com.nuc;
import net.rim.device.api.ui.UiApplication;
public class Launcher extends UiApplication
{
public static void main(String[] args)
{
Launcher theApp = new Launcher();
theApp.enterEventDispatcher();
}
public Launcher()
{
pushScreen(new MyScreen());
}
}
然后我的应用程序类就像...
package com.nuc;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.component.BasicEditField;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.EditField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.GridFieldManager;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
public final class MyScreen extends MainScreen implements FieldChangeListener
{
// declared variables...
public MyScreen()
{
//rest codes...
我想在我的应用启动之前显示文本文件中的一些详细信息,例如“最终用户许可协议”,即第一行出现的内容。
我的第一个问题是,我需要放置那个文本文件...我从网上获得了很多指导,但没有任何工作用于eclipse。其次,那么我怎样才能读取文件并将其内容放在对话框中。
所以请指导我如何实现..示例代码将是可理解的,因为我是这种环境的新手...
将文件添加到Eclipe
项目中
res
文件夹,单击New
,单击Untitled Text File
,然后输入一些文本并保存文件。 要读取文件并显示在对话框上,请尝试以下代码片段:
try {
InputStream is = (InputStream) getClass().getResourceAsStream("/Text");
String str = "";
int ch;
while ((ch = is.read()) != -1) {
str += (char)ch;
}
synchronized (UiApplication.getEventLock()) {
Dialog.alert(str == null ? "Failed to read." : str);
}
} catch (Exception e) {
synchronized (UiApplication.getEventLock()) {
Dialog.alert(e.getMessage() + " + " + e.toString());
}
}
在上面的代码中, "/Text"
是文件名。 如果您收到了NullPointerException
请检查文件名和路径。
Rupak的回答大多是正确的,但是它有一些问题。 你肯定不希望在这种情况下一起添加不可变的字符串。 当你将2个字符串一起添加(myString + =“Another String”)时,Java基本上会创建一个带有其他两个字符串值的新String对象,因为它不能更改其他字符串的内容。 通常,只需要将两个字符串一起添加就可以了,但在这种情况下,如果您有一个大文件,那么您将为文件中的每个字符创建一个新的String对象(每个对象都大于最后一个)。 这个对象创建有很多开销,垃圾收集器(非常慢)必须更频繁地进行干预,因为所有这些对象都需要被销毁。
StringBuffer
来救援! 使用StringBuffer
代替String连接只需要创建1个对象,并且速度会快得多。
try {
InputStream is = (InputStream) getClass().getResourceAsStream("/Text");
StringBuffer str = new StringBuffer();
int ch;
while ((ch = is.read()) != -1) {
str.append((char)ch);
}
UiApplication.getUiApplication().invokeLater(new Runnable(){
public void run(){
Dialog.alert(str.toString() == null ? "Failed to read." : str.toString());
}
}
} catch (Exception e) {
UiApplication.getUiApplication().invokeLater(new Runnable(){
public void run(){
Dialog.alert(e.getMessage() + " + " + e.toString());
}
}
}
Blackberry支持论坛上的一些开发人员也建议不要使用UiApplication.getEventLock()
因为它可能是“危险的”。 他们建议改为使用invokeLater()
。 请参阅Blackberry支持论坛
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.