byte[] über BufferedReader auslesen

Diskutiere byte[] über BufferedReader auslesen im Netzwerkprogrammierung Bereich.
Fabian321

Fabian321

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)?
 
F

fhoffmann

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.
 
mrBrown

mrBrown

Verzichte auf byte-Arrays und nutz die vorhandenen APIs: Files.copy(inStream, filePath)
 
Fabian321

Fabian321

ja aber was muss bei dem InpuStream ankommen? also auch Bytes oder
 
Fabian321

Fabian321

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)
 
Fabian321

Fabian321

//-------------------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();
        }
 
mrBrown

mrBrown

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)
 
Fabian321

Fabian321

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:
Thema: 

byte[] über BufferedReader auslesen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben