Senden große Datei über FileInputStream/ObjectOutputStream

Brauche ich Hilfe auf meine Hausaufgaben, jede Hilfe wird sehr geschätzt. Ich kann senden, kleine Dateien, ohne ein problem. Aber wenn ich versuche zu senden, sagen wir mal eine 1GB Datei byte-array sendet OutOfMemoryError, so brauche ich eine bessere Lösung zum senden einer Datei vom server zum client. Wie kann ich diesen code und senden Sie große Dateien, bitte helft mir.

Server-Code:

    FileInputStream fis = new FileInputStream(file);
    byte[] fileByte = new byte[fis.available()]; //This causes the problem.
    bytesRead = fis.read(fileByte);
    oos = new ObjectOutputStream(sock.getOutputStream());
    oos.writeObject(fileByte);

Client-Code:

    ois = new ObjectInputStream(sock.getInputStream());
    byte[] file = (byte[]) ois.readObject();
    fos = new FileOutputStream(file);
    fos.write(file);
"sendet die out-of-memory-exception" Keine solche Sache in Java, DYM OutOfMemoryError? Wenn dem so ist, werden spezifische, wenn nicht dann bitte erklären, (auch speziell).
BTW - der erste code scheint zu implizieren, die Eingabe-Datei enthält die serialisierten Objekte. Ist das hier der Fall?
Oh, im sorry, es ist OutOfMemoryError nicht die Ausnahme. Und ich weiß nicht, was du meinst, wenn die Datei enthält serialezed Objekte, server sendet alle Datei der client anfordert.
ObjectOutputStream und ObjectInputStream verwendet werden, für die serialisierten Objekte. Wenn der Inhalt 'alle alten bytes' den code nicht benutzen sollten.
Ok ich werde es so machen dann, danke, ich bin neu hier.

InformationsquelleAutor Ozzy | 2012-05-30

Schreibe einen Kommentar