【问题标题】:J2ME extract phone number from txt fileJ2ME从txt文件中提取电话号码
【发布时间】:2012-10-28 14:09:29
【问题描述】:

任何人都可以帮助我从 txt 文件中提取电话号码。我在一个标题为 id 的文件夹中有很多 txt 文件。如果用户输入了某个 id,midlet 会将文件标题读取为 id.txt,并将字符串读取为文件中的电话号码,然后向该字符串发送消息。(例如,如果输入为 1,则将读取 1。 txt返回字符串123467890,然后发送消息到1234567890)。

但现在我的问题是我可以通过代码读取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的框中按ok按钮后,它不会提示地址框,并会给我错误消息:

      **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 文件中显示电话号码,但它不会发送消息并给我错误消息:

           **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)**

我猜文本字段很重要。我怎么能平衡呢? 提前非常感谢您!

【问题讨论】:

  • 文件中的数字有某种分隔符,如'-'、'.'、'('或')'?

标签: java-me


【解决方案1】:

你有(至少)两个问题,所以你应该一个接一个地解决它们。 可能的问题是:

1) 发送 SMS 会给您 IllegalArgumentException。 尝试对号码进行硬编码并检查问题是否仍然存在。 也许你忘了在协议前加上“sms://”+number;

2) 为什么 TextField.PHONENUMBER 不起作用? 尝试设置硬编码的文本字段的数量 然后你知道文件或文件读取是否是问题。 也许文件末尾的换行符是问题所在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2018-05-22
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多