最近在做一个手机项目,在调用JSR75 api的时候除了一点小问题,几经折磨终于解决。
一般J2ME应用程序读取的文件分布在本身的jar包里或者是直接读取手机存储卡中的文件。
弱是读取jar包里带的文件,用:
调用的时候需要获取文件大小,用:
如果是读手机存储卡中的文件,就不能如此获取输入流了,需要:
这里就要注意了,虽然两种方式返回的都是DataInputStream对象,但是在读文件大小的时候却不能再调用available()方法。
需要:
如果调用available()方法,恭喜你,等着报异常吧,因为此时返回的文件长度必然是0。
一般J2ME应用程序读取的文件分布在本身的jar包里或者是直接读取手机存储卡中的文件。
弱是读取jar包里带的文件,用:
DataInputStream datainputstream = new DataInputStream(getClass().getResourceAsStream(location));
调用的时候需要获取文件大小,用:
return datainputstream.available();
如果是读手机存储卡中的文件,就不能如此获取输入流了,需要:
FileConnection fc = (FileConnection) Connector.open(location, Connector.READ);
DataInputStream datainputstream = fc.openDataInputStream();
这里就要注意了,虽然两种方式返回的都是DataInputStream对象,但是在读文件大小的时候却不能再调用available()方法。
需要:
return (int) fc.fileSize();
如果调用available()方法,恭喜你,等着报异常吧,因为此时返回的文件长度必然是0。