public void OpenFile(int iocb, String filename, boolean readOnlyFlag) { if (iocb >= 0 && iocb < MAXFILES) { if (randomAccessFile[iocb] == null && httpConn[iocb] == null && fc[iocb] == null && socketConn[iocb] == null && inputStream[iocb] == null) { Class clazz; if (filename.startsWith("file:")) { try { fc[iocb] = (FileConnection) Connector.open(filename); if (readOnlyFlag) { if (!fc[iocb].exists()) { throw new BasicError(4130, "No file: " + filename); } } else { if (fc[iocb].exists()) { fc[iocb].delete(); fc[iocb].close(); fc[iocb] = (FileConnection) Connector.open(filename); } fc[iocb].create(); } dataInput[iocb] = fc[iocb].openDataInputStream(); dataOutput[iocb] = fc[iocb].openDataOutputStream(); } catch (Exception ex) { clazz = ex.getClass(); throw new BasicError(4130, clazz.getName()); } } else if (filename.startsWith("socket:")) { try { socketConn[iocb] = (SocketConnection) Connector.open(filename); dataOutput[iocb] = socketConn[iocb].openDataOutputStream(); dataInput[iocb] = socketConn[iocb].openDataInputStream(); } catch (Exception ex) { clazz = ex.getClass(); throw new BasicError(4130, clazz.getName()); } } else if (filename.startsWith("https:")) { try { httpConn[iocb] = (HttpsConnection) Connector.open(filename, 3); if (readOnlyFlag) { httpConn[iocb].setRequestMethod("GET"); } else { httpConn[iocb].setRequestMethod("POST"); httpConn[iocb].setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); } baos[iocb] = new ByteArrayOutputStream(); dataOutput[iocb] = new DataOutputStream(baos[iocb]); dataInput[iocb] = null; } catch (Exception ex) { clazz = ex.getClass(); throw new BasicError(4131, clazz.getName()); } } else if (filename.startsWith("http:")) { try { httpConn[iocb] = (HttpConnection) Connector.open(filename, 3); if (readOnlyFlag) { httpConn[iocb].setRequestMethod("GET"); } else { httpConn[iocb].setRequestMethod("POST"); httpConn[iocb].setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); } //httpConn[iocb].setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLCD-1.1 (Mobile BASIC MIDlet 1.9.1 by kiriman & dzanis)"); //httpConn[iocb].setRequestProperty("Content-Language", "en-US"); //httpConn[iocb].setRequestProperty("Accept", "text/plain"); //httpConn[iocb].setRequestProperty("Content-Type", "text/plain"); // httpConn[iocb].setRequestProperty("Connection", "close"); baos[iocb] = new ByteArrayOutputStream(); dataOutput[iocb] = new DataOutputStream(baos[iocb]); dataInput[iocb] = null; } catch (Exception ex) { clazz = ex.getClass(); throw new BasicError(4131, clazz.getName()); } } else if (filename.startsWith("/")) { try { inputStream[iocb] = getClass().getResourceAsStream(filename); dataInput[iocb] = new DataInputStream(inputStream[iocb]); dataOutput[iocb] = null; } catch (Exception ex) { throw new BasicError(4133, ex.getClass().getName()); } } else { try { randomAccessFile[iocb] = new RandomAccessFile(filename, readOnlyFlag); dataInput[iocb] = randomAccessFile[iocb]; dataOutput[iocb] = randomAccessFile[iocb]; } catch (Exception ex) { randomAccessFile[iocb] = null; dataInput[iocb] = null; dataOutput[iocb] = null; throw new BasicError(4132, ex.getClass().getName()); } } } else { throw new BasicError(4098, "Channel " + iocb + " already in use"); } } else { throw new BasicError(4096, "Invalid channel"); } }