Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327

    Estrapolare nome del file da un flusso di byte

    Buona sera ragazzi, sono alle prese con un problema e spero qualcuno possa aiutarmi.
    Sto realizzando un'applicazione che scambia file tra due pc tramite socket e tutto sembra funzionare.
    Non riesco però, una volta ricevuto il file, a estrapolarne il nome di modo tale da salvarlo con lo stesso nome di quello originario.

    Ecco il codice del ricevente:
    codice:
    socketA=new ServerSocket(5555);
    socketB = socketA.accept();
    link = socketB.getInputStream();
    file = new FileOutputStream(new File("percorso" + CHE GLI METTO?!?!?, true);
    Dove in "link" c'è il flusso di byte inviato dal mittente.
    Avete qualche idea?

    Grazie in anticipo a chiunque voglia aiutarmi!

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Codice PHP:
    byte [] byteArray //come te li carichi sono fatti tuoi

    String fileName = new String (byteArray); 

    File file = new File(pathfileName); 
    in accordo con le API java

    cerca il costruttore con byte array
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Ciao, grazie per la risposta.
    Tuttavia non capisco, io qui byte "pieni non ne ho".
    Ciò che faccio è semplicemente ricevere un flusso di byte e scriverli in un file in uscita x byte alla volta.

    codice:
    byte[] buf = new byte[1024];
    socketA=new ServerSocket(5555);
    socketB = socketA.accept();
    link = socketB.getInputStream();
    file = new FileOutputStream(new File("percorso" + CHE GLI METTO?!?!?, true);
    
    while ((i = link.read(buf)) != -1) 
    {
        fos.write(buf, 0, i);
    }
    E' su "link" che devo lavorare no?
    Ciò che mi consigli tu andrebbe forse fatto lato client no?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Se tu sai che in seguito ad un comando ti manda il nome del file, devi ricevere una quantità di dati tale da raccogliere il nome del file.

    Dopo averli raccolti, crei la tua stringa, crei il file e a quel punto puoi scriverci dentro quello che ricevi dal buffer.

    Poi è da vedere se puoi sempre scrivere in quelle locazioni (è un altro paio di maniche), ma le info le passi in questo modo
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Originariamente inviato da valia
    Se tu sai che in seguito ad un comando ti manda il nome del file, devi ricevere una quantità di dati tale da raccogliere il nome del file.
    In realtà non c'è un comando che mi manda il nome del file, io ricevo un flusso di bytes in cui oltre al contenuto c'è anche il nome del file, dici quindi che i primi x bytes contengono il nome del file e i restanti "tutti-x" il contenuto?
    Se così fosse, come faccio a capire quanto vale x?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    è la prima info che devi passare, o provi a leggere dallo stream una stringa
    RTFM Read That F*** Manual!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Originariamente inviato da valia
    è la prima info che devi passare, o provi a leggere dallo stream una stringa
    Grazie per la tua disponibilità ma non riesco a seguirti.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    se tu piloti l'altro capo della comunicazione devi farti passare 3 info

    1. numero byte nome file
    2. nome file
    3. contenuto

    oppure ti fai passare il nome file come stringa e leggi quella (non leggi i byte).

    Poi hai da remoto una indicazione su dove scrivere (e tornano problemi di sicurezza)
    RTFM Read That F*** Manual!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    327
    Originariamente inviato da valia
    se tu piloti l'altro capo della comunicazione devi farti passare 3 info
    1. numero byte nome file
    Perchè ho necessità di conoscere il numero di byte?

    2. nome file
    Mi sembra una soluzione un pò sporca, non c'è modo di far si che il nome venga estrapolato direttamente dal flusso di byte in ingresso, ergo non c'è modo di sapere in quanti byte è contenuto il nome del file? Suppongo di no..

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    perché come fai a sapere quanti byte devi leggere prima di aver finito il nome??

    no, non c'è un modo per sapere quando hai finito, i byte sono info "grezze", possono rappresentare di tutto e proprio per questo non puoi fare assunzioni sul contenuto.
    RTFM Read That F*** Manual!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.