Heim  >  Artikel  >  Java  >  Warum generiert meine Java-Dateiübertragung über Sockets eine leere Datei?

Warum generiert meine Java-Dateiübertragung über Sockets eine leere Datei?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 13:15:01324Durchsuche

Why is My Java File Transfer Over Sockets Generating an Empty File?

Java-Dateiübertragung über Sockets: Behebung des Problems mit beschädigten Dateien

Ihr Java-Programm zielt darauf ab, eine Datei über Sockets zwischen einem Client und einem Server zu übertragen . Allerdings generiert der Server derzeit eine leere Datei. Um dies zu beheben, überprüfen wir sowohl den Server- als auch den Clientcode.

Servercode:

Beginnend mit dem Servercode entsteht das Problem durch das Lesen der gesamten Dateibytes einmal mit in.read(bytes). Dieser Ansatz erfasst möglicherweise nicht alle Bytes, wenn die Datei groß ist. Stattdessen sollten wir die Bytes in einer Schleife lesen:

<code class="java">int count;
byte[] buffer = new byte[8192]; // or 4096, or more
while ((count = in.read(buffer)) > 0) {
    fos.write(buffer, 0, count);
}</code>

Client-Code:

Als nächstes schreiben Sie im Client-Code nicht wirklich die Dateibytes zum Ausgabestrom. Die Zeile out.write(bytes) sollte verwendet werden:

<code class="java">out.write(bytes);</code>

Mit diesen Änderungen sollte das Programm die Datei wie vorgesehen korrekt senden und empfangen.

Das obige ist der detaillierte Inhalt vonWarum generiert meine Java-Dateiübertragung über Sockets eine leere Datei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn