我有一个 javame 项目,我正在尝试创建一种方法来下载 mp3 文件并将其保存到手机。该方法如下所示,不幸的是它一直抛出 java.lang.illegalargument 异常。
public void Download_KeyTest()
{
FileConnection file = null;
OutputStream outStream = null;
String resumeJSON = mPreferences.get("resume");
JSONObject resumeObject;
try {
resumeObject = new JSONObject(resumeJSON);
String key=resumeObject.get("code").toString();
String inputStr=getTextField12().getString();
if (inputStr.equals(key))
{
Enumeration roots = FileSystemRegistry.listRoots();
String currentRoot = null;
while (roots.hasMoreElements()) {
currentRoot = (String) roots.nextElement();
System.out.println(currentRoot);
}
HttpConnection hc = null;
DataInputStream in = null;
try {
String url = d_url+resumeObject.getJSONObject("sObject").get("loc").toString();
String sname = urlEncode(resumeObject.getJSONObject("sObject").getString("name").toString());
hc = (HttpConnection)Connector.open(url);
int length = (int)hc.getLength();
byte[] data = null;
if (length != -1) {
switchDisplayable(null,getWaitScreen1());
data = new byte[length];
in = new DataInputStream(hc.openInputStream());
in.readFully(data);
}
else {
// If content length is not given, read in chunks.
switchDisplayable(null,getWaitScreen1());
int chunkSize = 512;
int index = 0;
int readLength = 0;
in = new DataInputStream(hc.openInputStream());
data = new byte[chunkSize];
do {
if (data.length < index + chunkSize) {
byte[] newData = new byte[index + chunkSize];
System.arraycopy(data, 0, newData, 0, data.length);
data = newData;
}
readLength = in.read(data, index, chunkSize);
index += readLength;
} while (readLength == chunkSize);
length = index;
}
getWaitScreen1().setText("Download Complete");
try {
// Get path to photos folder.
String dirMusic = System.getProperty("fileconn.dir.memorycard.music");
if(dirMusic == null) {
dirMusic=currentRoot;
//throw new Exception("Unable get music folder name");
}
String fileName = dirMusic + sname +".mp3";
// Open file
file = (FileConnection)Connector.open(fileName,
Connector.READ_WRITE);
// If there is no file then create it
if(file.exists() == false) {
file.create();
}
// Write data received from camera while making snapshot to file
outStream = file.openOutputStream();
outStream.write(data);
System.out.println(file.availableSize());
//file.setHidden(false);
getWaitScreen1().setText("Song saved to music folder.");
} catch(IOException ioe) {
Alert alertx = new Alert("IO error", ioe.toString(), null, AlertType.ERROR);
alertx.setTimeout(Alert.FOREVER);
switchDisplayable(alertx,getDownloadVerifyKeyForm());
} catch(Exception exc) {
Alert alertx = new Alert("Error", exc.toString()+exc.getMessage(), null, AlertType.ERROR);
exc.printStackTrace();
alertx.setTimeout(Alert.FOREVER);
switchDisplayable(alertx,getDownloadVerifyKeyForm());
} finally {
// Try to close file
try {
if(outStream != null) {
outStream.close();
}
if(file != null) {
file.close();
}
} catch(Exception exc) {
// Do nothing
exc.printStackTrace();
}
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
} catch (Exception ex)
{
ex.printStackTrace();
}
}
这是我得到的错误
java.lang.IllegalArgumentException
at javax.microedition.io.Connector.getProtocolInstance(), bci=28
at javax.microedition.io.Connector.open(), bci=24
at javax.microedition.io.Connector.open(), bci=3
- spinapp.SpinApp.Download_KeyTest(SpinApp.java:703)
代码中的第 703 行是这样的
hc = (HttpConnection)Connector.open(url);