Java 如何在blackberry eclipse中读取txt文件?

Java 如何在blackberry eclipse中读取txt文件?,java,blackberry,Java,Blackberry,我正在用blackberry-Java插件为Eclipse开发一个简单的blackberry应用程序。在这种情况下,我想从外部文本文件中读取数据。我已经搜索了这个,并尝试了一些提示。但最终失败了。我会描述我的申请 我的主文件 package com.nuc; import net.rim.device.api.ui.UiApplication; public class Launcher extends UiApplication { public static void main(S

我正在用blackberry-Java插件为Eclipse开发一个简单的blackberry应用程序。在这种情况下,我想从外部文本文件中读取数据。我已经搜索了这个,并尝试了一些提示。但最终失败了。我会描述我的申请

我的主文件

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
    ,单击
    无标题文本文件
    ,然后输入一些文本并保存文件
要从文件中读取并在对话框中显示,请尝试以下代码段:


在上述代码中,
“/Text”
是文件名。如果您得到了一个
NullPointerException
,那么请检查文件名和路径。

Rupak的答案基本上是正确的,但有一些问题。在这种情况下,您肯定不想将不可变字符串添加到一起。当您将两个字符串添加到一起时(myString+=“另一个字符串”),Java基本上会使用另外两个字符串的值创建一个新的字符串对象,因为它无法更改其他字符串的内容。通常,如果您只需要将两个字符串添加到一起,这是可以的,但是在这种情况下,如果您有一个大文件,那么您将为文件中的每个字符创建一个新的字符串对象(每个对象都比最后一个大)。与此对象创建相关的开销很大,垃圾收集器(非常慢)将不得不更频繁地进行干预,因为所有这些对象都需要销毁

StringBuffer
救命!使用
StringBuffer
代替字符串连接只需要创建一个对象,而且速度要快得多

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());
        }
    }
}

黑莓支持论坛上的一些开发者也建议不要使用
UiApplication.getEventLock()
,因为这可能“很危险”。他们建议改用
invokeLater()
。请参见

您应该这样做
UiApplication.getUiApplication().invokeLater(new Runnable(){public void run(){Dialog.info(e.getMessage+++e.toString());})检查此项
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());
        }
    }
}