Java 如何在blackberry eclipse中读取txt文件?
我正在用blackberry-Java插件为Eclipse开发一个简单的blackberry应用程序。在这种情况下,我想从外部文本文件中读取数据。我已经搜索了这个,并尝试了一些提示。但最终失败了。我会描述我的申请 我的主文件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
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());
}
}
}