byte[] über BufferedReader auslesen

x46

Mitglied
Guten Tag.

Dieser Code geht leider nicht (das am Pfeil):
---------------------------------------------------------------------
InputStream inStream = connection.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inStream));
byte[] bytesArray = in.read(); // <---
-----------------------------------------------------------------------
Wie kann ich über einen BufferedReader ein byte-Array auslesen (der InputStream ist von einen Server-Client-Programm)?
 
Alle "Reader"-Klassen sind für Texte gemacht. Mit einem BufferedReader kannst du nur ein char[] lesen.
Wenn du wirklich ein byte[] benötigst, solltest du einen BufferdInputStream nehmen.
 
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.nio.file.Files.copy(Unknown Source)
at java.nio.file.Files.copy(Unknown Source)
at x46.Server.Server_in.run(Server_in.java:61)
at java.lang.Thread.run(Unknown Source)
 
//-------------------Server-----------------------------------------------------------------------------
Java:
// server starten
            ServerSocket server01 = new ServerSocket(16102);
            System.out.println("Warte auf clients auf dem Port " + server01.getLocalPort());
            // --------------------------------------------------------------
            while (true) {
                // connection aktiviren
                Socket connection = server01.accept();
                System.out.println("Client verbingung unter: " + connection.getRemoteSocketAddress());
              
                // -------------------------------------------------------------------
                // strems
                // out
                OutputStream outStream = connection.getOutputStream();
                PrintWriter out = new PrintWriter(outStream);
                ObjectOutputStream oos = new ObjectOutputStream(outStream);
                // in
                InputStream inStream = connection.getInputStream();
                BufferedReader in = new BufferedReader(new InputStreamReader(inStream));
              
                // ------------------------------------------------------------
              
                //Path path = Paths.get("test.zip");
                File f = new File("test.zip");
                Files.copy(inStream, f.toPath());

            }
          
        } catch (IOException e) {
            e.printStackTrace();
        }


//-----------------------------Client------------------------------------------------------------------------
Java:
        // client starten und verbinden
        Socket client;
        try {
            client = new Socket("localhost", 16102);
            // strems
            // out
            OutputStream outStream = client.getOutputStream();
            PrintWriter out = new PrintWriter(outStream);
      
            // in
            InputStream inStream = client.getInputStream();
            BufferedReader in = new BufferedReader(new InputStreamReader(inStream));
          
            // ------------------------------------------------------------
            File file = new File("send.zip");
            // init array with file length
            byte[] bytesArray = new byte[(int) file.length()];
              FileInputStream fis = new FileInputStream(file);
              fis.read(bytesArray); //read file into bytes[]
              fis.close();
      
            out.print(bytesArray);
            out.flush();
          
        } catch (IOException e) {
            e.printStackTrace();
        }
 
Du schreibst die Daten mit einem Writer, ein Writer schreibt Daten allerdings als Text, was für eine zip-Datei eher ungeeignet ist.

Verzichte auf den Writer und nimm den OutputStream direkt, am besten in Verbindung mit Files.copy(file.toPath(), outStream)
 
Verzichte auf den Writer und nimm den OutputStream direkt, am besten in Verbindung mit Files.copy(file.toPath(), outStream)
hab ich gemacht
Also:
outStream.write(bytesArray); outStream.flush();
und jetzt hab ich den Error

java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.nio.file.Files.copy(Unknown Source)
at java.nio.file.Files.copy(Unknown Source)
at x46.Server.Server_in.run(Server_in.java:61)
at java.lang.Thread.run(Unknown Source)
 
Zuletzt bearbeitet:

Zurück
Oben