2012-10-28 47 views
2

任何人都可以幫助我從txt文件中提取電話號碼。我在標有id的文件夾中有很多txt文件。如果用戶輸入了某個id,midlet將讀取文件標題id.txt,然後讀取字符串作爲文件中的電話號碼,然後將消息發送到該字符串(例如,如果輸入爲1,則讀取爲1。 txt返回字符串123467890,然後發送消息到1234567890)。J2ME從txt文件中提取電話號碼

但現在我的問題是,我可以通過代碼讀取TXT文件:

**public String Loadnumber(String fileName){ 
     String str=""; 
     try{ 
       FileConnection fc =(FileConnection)Connector.open("file://localhost/root1/res/number/"+fileName); 
     if(!fc.exists()){ 
        hrow new IOException("File does not exist"); 
      } 
     InputStream is=fc.openInputStream(); 
     byte b[]=new byte[1024]; 
     int length = is.read(b,0,1024); 
     str = new String (b,0,length); 

     }catch(Exception e){ 

     } 
     return str; 
    }**** 

然後我插入Loadnumber功能的電話號碼地址框中返回字符串:

 **String number= new String(Loadnumber(id+".txt")); 
     destinationAddressBox.insert(number,0);** 

DestinationAddressBox是電話號碼框,當我輸入id並按下按鈕時它會顯示此框,我宣佈它爲:

 **destinationAddressBox = new TextBox("phone number", number,1024,TextField.PHONENUMBER); 
     destinationAddressBox.addCommand(okCommand); 
     destinationAddressBox.setCommandListener(this);** 

但是當我運行它,然後按下後進入的id中的確定按鈕,也不會提示,在地址框中,並給我的錯誤消息:

 **java.lang.IllegalArgumentException 
    at javax.microedition.lcdui.TextField.insert(+55) 
    at javax.microedition.lcdui.TextField.insert(+14) 
    at javax.microedition.lcdui.TextBox.insert(+9) 
    at example.sms.SMSSend.commandAction(+72) 
    at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282) 
    at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10) 
    at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68) 
    at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47) 
    at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186) 
    at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)** 

但是,如果我改變了文本框作爲TextField.ANY而不是爲TextField.PHONENUMBER,它會提示的地址欄中,並顯示在我的txt文件中的電話號碼,但它不會發送郵件,給我的錯誤的messge:

  **java.lang.IllegalArgumentException: Host format 
    at com.sun.midp.io.j2me.sms.Protocol.openPrimInternal(+198) 
    at com.sun.midp.io.j2me.sms.Protocol.openPrim(+8) 
    at javax.microedition.io.Connector.openPrim(+299) 
    at javax.microedition.io.Connector.open(+15) 
    at javax.microedition.io.Connector.open(+6) 
    at javax.microedition.io.Connector.open(+5) 
    at example.sms.SMSSend.run(+100)** 

我猜textfield很重要。我怎麼能平衡呢? 非常感謝你提前!

+1

文件中的數字有某種分隔符,如' - ','。','('或')'? –

回答

1

你有(至少)兩個問題,所以你應該一個接一個地解決它們。 可能的問題是:

1)發送短信給你IllegalArgumentException。 嘗試硬編碼數字並檢查問題是否仍然存在。 也許你忘了在協議前加上「sms://」+ number;

2)爲什麼TextField.PHONENUMBER不起作用? 嘗試設置硬編碼文本字段的編號 然後您知道文件或文件讀取是否是問題。 也許文件末尾有一個換行符是問題。