문제

MidP 2.0 (JSR 118)을 사용하고 있으며 J2ME에는 문자열에 대한 독자가 없다는 것을 알았습니다.

누구든지 당신이 어떻게 문자열을 읽어야하는지 아는 사람이 있습니까? InputStream 또는 InputStreamReader 플랫폼 독립적 인 방식으로 (즉, 두 개의 Java가 다른 모델의 휴대 전화를 활성화 한 휴대폰)?

도움이 되었습니까?

해결책

또는 살펴보십시오 DataInputStream.readUTF().

입력 스트림을 읽는 문자열이 적절하게 인코딩되어야합니다 (대응하는 것과 같이 DataOutputStream.writeUTF(String)) 그래서 당신이 찾고있는 것이 아닐 수도 있습니다. 그러나 그것은 다른 전화/모델 등에서 작동합니다.

다른 팁

어떤 프로필을 사용하고 있습니까? JSR 118의 MID 프로파일은 지정합니다 inputStreamReader (StringReader는 아니지만 어쨌든 입력 스트림에서 읽는 데 도움이되지 않습니다).

편집 : 질문에 대한 변경 사항을 반영하려면 :)

inputStreamReader.Read (char [], int, int)를 사용하고 원하는 모든 것을 읽을 때 숯 배열에서 새 문자열을 만듭니다. BufferedReader에서 한 번에 한 줄을 읽으려면 기본적으로 BufferedReader의 기능을 직접 구현하고 ( "읽지는 않지만 소비되지 않은"숯의 버퍼를 유지하고) 라인 브레이크에 부딪 칠 때까지 계속 읽어야합니다.

글쎄 ... 나는 이것이 오래 전인 것을 알고 있습니다.

John이 말한 것을 정확하게 수행해야하며 매우 간단합니다. 처음으로 이것을 알아내는 데 거의 5 시간이 걸렸습니다 ...

나는 왜 J2ME가 왜 BufferedReader 소켓을위한 방법, Freakin 핸드폰이 충돌하는 것과는 다릅니다 ... 그리고 예, 앱이 1ms보다 느리게 실행되면 쥐의 엉덩이를주지 않습니다.

(저는 단지 관련 코드를 넣을 것입니다. 클래스를 형성하고 필요한 라이브러리를 가져 오는 방법을 알고 있다고 가정합니다).

ServerSocketConnection listener
    = (ServerSocketConnection)Connector.open("socket://:1235");
System.out.println("Waiting for connection...");
StreamConnection server = listener.acceptAndOpen();
InputStream is = server.openInputStream();

//Now comes the fake BufferedReader equivalent part

int ch = 0;
StringBuffer sb = new StringBuffer();

while ((ch = is.read()) != -1){
    sb.append((char)ch);
    if(sb.charAt(sb.length()-1) == 13 ) {
       //Carriage return was received or ENTER was pressed
       break; //Exit loop and print input
    }
}

보시다시피, is.read() 메소드는 한 번에 하나의 바이트로부터 새 입력을 수신 할 때까지 스레드를 잠그게합니다. 즉, Telnet을 사용하여 테스트하면 각 Keystroke가 루프를 한 번 반복하게 만들므로 char에 의해 char를 StringBuffer 문자 13이 접수 될 때까지.

System.out.println(sb.toString());

이것이 J2ME에서 소켓 서버를 수행하는 데 도움이되기를 바랍니다. 나는 이미 BlackBerry를 위해 이것의 완전히 기능적인 멀티 스레드 버전을 만들었습니다.

이것의 예를 제공 할 수 있습니까?

너는 사용한다 InputStreamReader.read(char[], int, int) 원하는 모든 것을 읽을 때 숯 배열에서 새 문자열을 만듭니다. 한 번에 한 줄을 읽고 싶다면 BufferedReader, 기본적으로 BufferedReader의 기능을 직접 구현해야합니다 ( "읽지 만 소비되지 않은"숯의 버퍼를 유지하고 라인 브레이크에 부딪 칠 때까지 계속 읽으십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top