Java me J2ME从txt文件中提取电话号码
任何人都可以帮我从txt文件中提取电话号码。我在一个名为id的文件夹中得到了很多txt文件。如果用户输入某个id,midlet将以id.txt的形式读取文件标题,并将字符串作为文件中的电话号码读取,然后将消息发送到该字符串(例如,如果输入为1,将读取1.txt返回字符串123467890,然后将消息发送到123456780) 但现在我的问题是我可以通过代码读取txt文件:Java me J2ME从txt文件中提取电话号码,java-me,Java Me,任何人都可以帮我从txt文件中提取电话号码。我在一个名为id的文件夹中得到了很多txt文件。如果用户输入某个id,midlet将以id.txt的形式读取文件标题,并将字符串作为文件中的电话号码读取,然后将消息发送到该字符串(例如,如果输入为1,将读取1.txt返回字符串123467890,然后将消息发送到123456780) 但现在我的问题是我可以通过代码读取txt文件: **public String Loadnumber(String fileName){ String st
**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改为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)**
我想文本字段很重要。我怎样才能平衡呢?
提前非常感谢 你(至少)有两个问题,所以你应该一个接一个地解决它们。
可能出现的问题有:
1) 发送短信会给你带来非法辩论的例外。
尝试硬编码号码并检查问题是否仍然存在。
也许你忘了在协议前面加上“sms://”+数字
2) 为什么TextField.PHONENUMBER不起作用?
尝试设置硬编码文本字段的编号
然后您就知道是文件还是文件读取问题了。
可能是文件末尾的换行符有问题。文件中的数字具有某种分隔符,如“-”、“或”(“或”)?