2011-02-06 2 views
1

이것은 초보자를위한 전반적인 질문입니다. 지난 한시간 동안 stackoverflow와 Google을 검색해 보았지만 찾고있는 내용을 찾지 못했습니다. 올바른 방향으로 나를 가리켜 라.int 1 바이트를 사용하지 않고 OutputStream에 문자열 작성하기

출력 문자열에 문자열을 쓰려고하는데, 그 문자열을 MySQL 데이터베이스에 쓰는 데 사용합니다. 필자는 MySQL (.php, JSON 및 RESTful 구현)에서 데이터를 성공적으로 검색 했으므로 현재 수행중인 작업에 대한 아이디어를 가지고 있다고 생각합니다. 문자열을 가져 와서 출력 스트림을 반환하는 메서드를 만드는 중이며 출력 스트림에 쓰는 데 문제가 있습니다. 초기화하려고하면 익명 내부 클래스가 write (int oneByte) 방법. 그건 내가 원하는 것이 아니야.

private static OutputStream convertStringtoStream(String string) { 
    byte[] stringByte = string.getBytes(); 
    OutputStream os = new OutputStream() { 

     @Override 
     public void write(int oneByte) throws IOException { 
      /** I'd rather this method be something like 
      public void write(byte[] bytes), but it requires int oneByte*/ 
     } 
    }; 
    //return os here 
} 

알다시피, 출력 바이트에는 단일 바이트가 아닌 버퍼로 쓰고 싶습니다. 이것은 간단한 질문이지만, 나는 내가 원하는 것을 수행하는 대답이나 심지어 샘플 코드를 찾을 수 없었습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 정말 고맙겠습니다. 감사.

답변

1

귀하의 방법은 다음과 같이 표시 될 수 있지만 어떤 결과를 얻을 지 확신 할 수 없습니다. 반환 된 OutputStream을 어떻게 사용 하시겠습니까?

private static OutputStream convertStringtoStream(String string) { 
    byte[] stringByte = string.getBytes(); 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(string.length()); 
    bos.write(stringByte); 
    return bos; 
} 

또한,이 시스템의 기본 인코딩을 사용하기 때문에 String.getBytes()를 사용하는 것이 장기적으로 곤경에 당신을 얻을 수 있습니다. 명시 적 인코딩을 선택하고 String.getBytes(Charset) 메서드를 사용하는 것이 좋습니다.

+0

내가 할 계획이었던 것은 그 데이터를 PHP 페이지로 보내는 것이고, 그 페이지를 디코드하여 MySQL 데이터베이스에 씁니다. 이 일을 잘못하는 방법입니까? 이 모든 궁극적 인 목표는 안드로이드에서 MySQL 데이터베이스에 데이터를 쓰는 것입니다. 내가 본 모든 RESTful 예제는 데이터 검색과 관련이 있지만 데이터를 쓰지는 않습니다. 이것을 달성하는 다른/더 좋은 방법을 알고 계십니까? 편집 : 어떤 이유로 든 내 브라우저에 내 의견이 표시되지 않았으므로 재검토하려했기 때문에 브라우저가 작동하지 않는다고 생각했습니다. 죄송합니다. – JMRboosties

+0

흠, PHP 페이지에 문자열을 전송하는 HTTP 요청을 작성하는 것처럼 보입니다. 나는 REST에 너무 익숙하지 않지만, 다음 코드 샘플을 (나이 아닌) POST 요청을한다. (http://www.exampledepot.com/egs/java.net/post.html)). –

+0

고맙습니다. – JMRboosties

1

추상 OutputStream 클래스를 사용하는 대신 버퍼를 쓸 수있는 ByteArrayOutputStream을 사용할 수 있습니다. ObjectOutputStream을 사용하면 문자열을 직렬화 할 수 있기 때문에 문자열을 직접 쓸 수 있습니다. 희망이 도움이됩니다.

+0

예. 나는 이것을 몇 번 언급했습니다. 하지만 ObjectOutputStream을 초기화하기 위해 착각하지 않는다면 다음과 같이 보일 것입니다 :'ObjectOutputStream oos = ObjectOutputStream (OutputStream output);'OutputStream이 필요합니다 ... 내 문제가 남아 있지 않습니까? – JMRboosties

관련 문제