Problemas em inserir nova linha em txt J2me

Pessoal é o seguinte o código de J2me abaixo é para pegar os dados do txt com InputStream e inseri-los de volta no txt com OutputStream junto com os novos dados do TextField, mas ele armazena só a primeira letra do txt e não todos os dados do txt, abaixo vai o código e um exemplo do resultado do txt.

    public void commandAction(Command c, Displayable d)
     {
         if (c == escrevetxt)
           
           try { 
               
             FileConnection fc = (FileConnection)  
             Connector.open("file://localhost/root1/teste30.txt", Connector.READ_WRITE); // PC
           //Connector.open("file:///Storage Card/teste30.txt");  // Windows mobile
           //Connector.open("file:////teste30.txt");    // Palm TX
                               
                              
            OutputStream os = null;                                              
            os = fc.openDataOutputStream();
            
            StringBuffer conteudo = new StringBuffer(toString());
            
            InputStream is = fc.openInputStream();
            byte chars, i = 0;
     
              
             os.write(is.read());// coloca os dados lidos do InputStream no OutputStream
             os.write("\r\n".getBytes()); // pula uma linha
             os.write((tfNome.getString() +"-"+ tfFone.getString() +"-"+ sexo.getString(sexo.getSelectedIndex())).getBytes());// add informação no txt                      
        
             fc.close();
             System.out.println("Informação inserida no txt..."); 
                                 
               }  
                                                  
        catch (IOException ioe)
        {  
            System.out.println("IOException: "+ioe.getMessage());  
        }
                   
        catch (SecurityException se)
        {  
            System.out.println("Exceção de segurança:" + se.getMessage());  
        }

Abaixo a informação no txt antes de executar o código

andre-1491254172-Masculino

Agora abaixo a informação no txt depois da execução do código ( os dados nos TextField eram Nome: paulo, Fone: 1491257777, sexo: Masculino

a
paulo-1491257777-Masculino

Como podem ver parece que o InputStream só esta lendo a primeira letra do txt, no caso o “a” da palavra “andre” e não todos os dados dentro.

Alguém sabe o que está errado com o código?

A intenção era inserir mais dados no txt, mais na linha abaixo, a cada dado inserido grave na ultima linha disponível, e a forma q encontrei foi essa ler tudo armazenar e colocar de volta no txt concatenando as informações novas do TextField e ChoiceGroup.

Obrigado.

A função read() retorna o próximo byte do arquivo, e avança um byte no arquivo.

Dica: faça um loop e vá inserindo byte a byte no OutsputStream.