【发布时间】:2012-06-11 14:12:09
【问题描述】:
我正在编写一个读取存储在设备上的小文件的黑莓应用程序。 出于某种原因,DataInputStream 只会读取大于 3kb 的文件(经过几次测试后我的估计)。有谁知道为什么会这样?
try
{
fconn = (FileConnection)Connector.open(seedDataLocation);
if (fconn.exists())
{
UiApplication.getUiApplication().getActiveScreen().add(new RichTextField("Read?: " + fconn.canRead()));
UiApplication.getUiApplication().getActiveScreen().add(new RichTextField("Write?: " + fconn.canWrite()));
UiApplication.getUiApplication().getActiveScreen().add(new RichTextField("Open?: " + fconn.isOpen()));
int dataSize = (int) fconn.fileSize();
DataInputStream dis = fconn.openDataInputStream();
UiApplication.getUiApplication().getActiveScreen().add(new RichTextField("Data Available: " + dataSize));
byte[] b = new byte[dataSize];
dis.readFully(b);
String data = new String(b);
UiApplication.getUiApplication().getActiveScreen().add(new RichTextField("Data: " + data));
fconn.close();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
UiApplication.getUiApplication().getActiveScreen().add(new RichTextField(e.getMessage()));
}
编辑:我尝试做 dis.available();对于不从文件中读取的小文件,它返回 0,从将要读取的较大文件中返回 0。这令人困惑,因为它应该读取文件中的字节数。
【问题讨论】:
-
您是否遇到了某种错误?
-
在设备上运行应用程序时没有抛出任何异常。
-
所以当你说“它不会读取文件”时,你是什么意思?
-
因为它不会读取文件中的内容并将它们保存到字节数组中。
标签: java blackberry datainputstream