Avatar billede krukken Mester
04. februar 2005 - 13:13 Der er 7 kommentarer og
1 løsning

Læsning og skrive til socket og binære filer.

Hej,

Hvordan læser man en fil binært, skriver det til en socket, læser det fra en socket og skriver det igen til en fil?

Sender.java:
FileInputStream fstream = new FileInputStream(fileName);
            DataInputStream in = new DataInputStream(fstream);
            DataOutputStream out = new DataOutputStream(socket.getOutputStream());
           
            while((message = in.readLine()) != null)
            {
                //System.out.println(message);
                out.writeBytes(message);
            }

receiver.java:
FileOutputStream fstream = new FileOutputStream(fileName);
            in = new DataInputStream(socket.getInputStream());
            out = new DataOutputStream(fstream);
            while((message = in.readLine()) != null)
            {
                //System.out.println(message);
                out.writeBytes(message);
            }
            out.flush();
            out.close();       

Hvorfor virker dette ikke?
Avatar billede arne_v Ekspert
04. februar 2005 - 13:17 #1
1)  binære filer og readLine duer ikke sammen
2)  DataInputStream og readLine er forældet

Du skal bruge:

InputStream ----> byte[] ----> OutputStream
Avatar billede arne_v Ekspert
04. februar 2005 - 13:18 #2
byte[] b = new byte[100000];
        int n;
        while((n = is.read(b)) >= 0) {
            os.write(b, 0, n);       
        }
Avatar billede arne_v Ekspert
04. februar 2005 - 13:19 #3
is er en InputStream
os er en OutputStream
Avatar billede krukken Mester
04. februar 2005 - 13:27 #4
Gider du at forsøge at modificere det ovenstående kode?
Avatar billede arne_v Ekspert
04. februar 2005 - 13:29 #5
InputStream is = new FileInputStream(fileName);
            OutputStream os = socket.getOutputStream();
  byte[] b = new byte[100000];
        int n;
        while((n = is.read(b)) >= 0) {
            os.write(b, 0, n);     
        }
Avatar billede arne_v Ekspert
04. februar 2005 - 13:30 #6
OutputStream os = new FileOutputStream(fileName);
InputStream is = socket.getInputStream();
byte[] b = new byte[100000];
        int n;
        while((n = is.read(b)) >= 0) {
            os.write(b, 0, n);   
        }
Avatar billede krukken Mester
04. februar 2005 - 13:39 #7
Perfekt - ligger du eet svar?
Avatar billede arne_v Ekspert
04. februar 2005 - 15:00 #8
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester