繁体   English   中英

如何从黑莓日食中的txt文件读取?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM