2017-08-17 14 views
1

Androidでカスタムファイル作成アプリケーションを構築しています。私は作成したカスタムクラスのStringメンバであるBytebufferの内容をバイト型のファイルに書き込もうとしています。しかし、私はいつでも、ファイルの内容をString形式で取得します。私はなどここで使用してgetメソッド、なBufferedOutputStreamクラス、ByteArrayOutputStreamクラス、DataOutputStreamを、のFileChannelクラス、などいくつかの選択肢を試したことは私のコードです:BytebufferからBytebufferからByte形式のファイルへのバイト書き込み

ByteBuffer byteBuffer = ByteBuffer.allocate(totalSize); 

    byteBuffer.put(hm.getDocID().getBytes()); 
    byteBuffer.put(hm.getFextension().getBytes()); 
    byteBuffer.put(hm.getMagic().getBytes()); 
    byteBuffer.put(hm.getFversion().getBytes()); 
    byteBuffer.put(hm.getFsize().getBytes()); 

    byteBuffer.flip(); 

    byte[] bablock = new byte[byteBuffer.remaining()]; 

    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(idHeader)); 

     bos.write(bablock); 
     bos.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

私idHeaderファイルに以下の内容を取得してください:

12345678-1234-1234-1234-123456789abcjpgIDF1.00000166178

いずれの文字列も連結されています。私がしたいのは、人間が読める文字列ではなく、ファイルにバイトと同じ内容を書き込むことです。私はここで何が欠けているのですか?どんな助けもありがとうございます。

答えて

0

文字列を構築し、バイト配列を取得してそれらをByteBufferに配置する代わりに、データを直接書き込む必要があります。 ByteBufferを取り除き、さまざまなAPIのDataOutputStreamを使用して、個々のバイトまたは整数などを記述します。

たとえば、12345678を8バイトまたは4バイト整数として書きたいかどうかは完全にはわかりません。たとえば、明確化せずにさらに手伝うことは不可能です。

+0

迅速な対応を本当に感謝します。考えられるのは、作成したファイルに一意のファイルID(hm.getDocID()。getBytes())を追加し、そのファイルをサーバーで読み込んだ後にそのファイルを取得できるようにすることです。あなたはこのIDを8バイトまたは4バイトとして(12345678-1234-1234-1234-123456789)書くといいでしょうか? –

+0

4バイトまたは8バイトのいずれにも適合しません。ハイフンを含める場合は、少なくとも12,14が必要です。あなたの質問は本当に最も不明です。あなたは今それを書いている方法で正確に何が間違っていますか? – EJP

+0

DataOutputStreamを使用して直接問題を解決しました!私のようなあいまいな質問に対する謝罪。助けてくれてありがとう! –

関連する問題