J2ME逐字节读取文件

时间:2012-04-30 19:47:03

标签: file java-me jsr75

我遇到过很多网站示例,几乎所有内容都是这样的:
http://www.java2s.com/Code/Java/J2ME/ReadDisplayFile.htm
http://www.roseindia.net/j2me/read-file.shtml
它们仅显示如何从资源文件中读取文件,而不是在文件系统上读取文件 这是我目前的代码:

InputStream is;
String path = "file:///root1/photos/a.txt"
try {
     fc = (FileConnection)Connector.open(path,Connector.READ);
     is = fc.openInputStream();
     int a = is.available();
     char buf = 0;
     String buff = new String();
     while (buf!=-1){
           buf=(char)is.read();
           buff+=buf;                      
     }          
 } catch (IOException ex) {} 

但它不起作用,并且创建了无限循环。

is.available();int a)返回0(为什么?)和 file:///root1/photos/a.txt存在且包含:Hi!Hello!

我怎样才能让它发挥作用?

编辑:我想通了,(buf!=-1)正在检查unsigned char上的-1,所以它永远不会消极。 Stewpid错误。我只是将它改为int并且它有效。很抱歉打扰。如果没有删除,我希望有人会觉得这很有用

1 个答案:

答案 0 :(得分:1)

你最好试试这个

InputStream is;
String path = "file:///root1/photos/a.txt"
try {
     fc = (FileConnection)Connector.open(path,Connector.READ);
     is = fc.openInputStream();
     int a = is.available();
     char buf = 0;
     StringBuffer buff = new StringBuffer();
     int i=0;     
     String temp1=null;byte bt[]=null;   
     while ((i=is.read())!=-1){
           bt=new byte[1];
           bt[0]=(byte)i;
           temp1=new String(bt);
           buf.append(temp1);
           temp1=null;
           bt=null;

     }          
 } catch (IOException ex) {} 

buf是字符串缓冲区,其中包含字符串。