Heim >Java >javaLernprogramm >Warum generiert meine Java-Dateiübertragung über Sockets eine leere Datei?
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!