2016-03-23 89 views
-3

Neden döngü içinde byte dizisi oluşturmak ve kopyalamak anlamıyorum. Döngü içinde dizi oluşturmak yoksa, kodu çalışmayacak. Lütfen bana açıklaNeden byte dizisi oluşturmak ve kopyalamak

ObjectOutputStream outt = new ObjectOutputStream(socket.getOutputStream()); 
InputStream f=new FileInputStream(path); 
byte[] buffer=new byte[10000]; 
int n; 
while ((n=f.read(buffer))>0) 
{ 
    byte[] tmpBuff = new byte[10000]; 
    System.arraycopy(buffer, 0, tmpBuff, 0, n); 
    total_length += n; 
    outt.writeObject(new MyObject(tmpBuff)); 
} 
f.close(); 
+4

Bu kod bana pek bir anlam ifade etmiyor. Neyi başarmaya çalışıyorsun? MyObject'in temsil etmesi gereken nedir? –

cevap

1

Görünüşe göre, bir ObjectOutputStream'e, 10.000 yazı bloklarına yazıyorsunuz. Not: Dosyanızın her zaman 10.000 baytlık bir tam katı olduğunu varsayorsunuz.

Bir ObjectOutputStream'e yazdığınızda, daha önce yazdığı nesneleri takip eder. Bu, buffer'u tekrar tekrar yazacak olursanız, sadece bir kez gönderir. Bir geçici çözüm, bir kopya almaktır, ancak clone() daha basit olacaktır. Eğer birden fazla kez aynı tampon daha gönderebilmesi için

Daha iyi bir çözüm, ObjectOutputStream üzerinde ya

  • kullanım reset() olacaktır.
  • DataOutputStream yerine, veri aktarırken Nesneleri değil.
  • sadece okuduğunuz kadar çok bayt yazınız. Bu şekilde, tam olarak 10.000 baytlık olmayan dosyaları işleyebilirsiniz.
+0

iyi bir ilaç, teşekkürler – user3625981