Вы делаете это правильно ... по крайней мере до той части, где вы превращаете свой byte[]
в String
:
Этот шаг действительно имеет смысл, только если ваш byte[]
представляет текстовые данные в первую очередь! Что это не !
Всякий раз, когда вы обрабатываете двоичные данные или на самом деле все равно, что представляют собой данные, вы должны избегать , используя String
/ Reader
/ Writer
обрабатывать эти данные. Вместо используйте byte[]
/ InputStream
/ OutputStream
.
Кроме того, вы должны читать из цикла в цикле, потому что ничто не гарантирует, что вы прочитали все:
byte[] buf=new byte[1024];
int bytes_read;
OutputStream out = new FileOutputStream("capture.ogg", true);
InputStream in = sock.getInputStream();
while ((bytes_read = in.read(buf)) != -1) {
out.write(buf, 0, bytes_read);
}
out.close();