我刚开始开发一个简单的黑莓应用程序,它RichTextField
在MainScreen
. 当我String
直接在源代码中定义时,显示它没有问题。但是,如果我尝试从res文件夹中的 .txt 文件中读取它,那么我会得到一个.txt 文件NullPointerException
。
下面的代码是我到目前为止所做的。
package mypackage;
import java.io.IOException;
import java.io.InputStream;
import net.rim.device.api.io.IOUtilities;
import net.rim.device.api.ui.component.RichTextField;
import net.rim.device.api.ui.container.MainScreen;
public final class MyScreen extends MainScreen{
String str = readFile("Testfile.txt");
public MyScreen(){
setTitle("Read Files");
add(new RichTextField(str));
}
public String readFile(String filename){
InputStream is = this.getClass().getResourceAsStream("/"+filename);
try {
byte[] filebytes = IOUtilities.streamToBytes(is);
is.close();
return new String(filebytes);
}
catch (IOException e){
System.out.println(e.getMessage());
}
return "";
}
}
我在这个论坛中找到了部分代码,但我的问题是我不明白何时必须打开连接以及何时关闭它。
我什么时候需要缓冲区?
为什么我必须将 a 转换InputStream
为 abyte[]
然后将 a 转换byte[]
为 a String
?
我所需要的只是一种方法,我可以在其中输入文件名并返回一个字符串对象,其中包含我的 .txt 文件中的文本。
当然,该方法应该节省资源......