2 Stimmen

Sich über verschiedene Ein- und Ausgabemethoden in Java gestresst fühlen

Stress über die vielen Methoden von Java I/O. BufferedReader / Writer, PrintWriter, ObjectInputStream und all das Jazz! Warum kann Java nicht einfacher sein?

Hier ist mein Problem. Versuche, einen Client/Server als Übung zu schreiben. Hier ist mein Code für den Server, der die Verbindung akzeptiert und in eine Datei schreibt.

String inputLine;
while (true){               
 connection = server.accept();          
 PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
     BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
   while ((inputLine = in.readLine()) != null) {
        out.write(inputLine);
    }
   out.close();         
   in.close();          
   connection.close();          
}

Auf der Client-Seite: Ich benutze das (sende eine Datei an den Server):

BufferedReader inPut =
      new BufferedReader(new InputStreamReader( new FileInputStream(fileName) ));
    PrintWriter output = new PrintWriter( client.getOutputStream(), true);

Obwohl die Datei übertragen wird, ist die Datei beschädigt. Welche ist die bevorzugte Methode für das I/O, um Dateien über das Netzwerk zu übertragen? Werde verrückt über Java!

1voto

artbristol Punkte 31293

Das Problem besteht darin, dass Sie eine Binärdatei zeilenweise übertragen, als handele es sich um Text. Das wird wahrscheinlich zu Problemen führen. Versuchen Sie eine Lösung, die keine Reader oder Writer Klassen verwendet - Sie sollten direkt mit den Byte-Streams arbeiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X