Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    5

    come istanziare un file che punta a file system di un'altra macchina?

    salve a tutti, la mia applicazione deve leggere un file di excel che sta su un server di rete (cioè su una macchina diversa) ed associarlo ad un oggetto File.
    In un primo momento avevo scritto del codice così:
    url = new URL(sUrl);
    connection = url.openConnection(); // nuova
    connection.setDoOutput(true);
    myxls = connection.getInputStream();
    File file = null;

    try {
    file = new File(url.getFile());
    .....


    dove sUrl rappresenta l'url realmente accebile (file://nomeserver(cartella/file.xls per esempio)

    mi sono accorto che non è così che si fa, non posso leggere un file da remoto con una getFile o addirittura (altra prova già fatta) istanziare l'oggetto file così
    File file = new File(sUrl)
    quest'ultima va bene se il file puntato sUrl risiede sullo stesso file system dove il codice gira.
    quindi: devo leggere il file da remoto e scriverlo in un temporary file (non posso appoggialro fisicamente sul file system della macchina chiamante xchè è un server di esercizio della mia rete aziendale dove non ho privilegi di scrittura), poi associarlo all'istanza dell'oggetto File .... ma come si fa?
    confesso che non ho molta esperienza in questo senso, ringrazio chiunque mi possa aiutare

    ciao
    Fabio

  2. #2
    Ciao,
    io solitamente faccio così:

    FileInputStream f = new FileInputStream("\\server\condivisione\filename.ex t");

    poi lo leggo (read()) e in fine lo chiudo (close()).


    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    5
    grazie per l'aiuto.
    allora definisco (ce l'ho già) un InputStram dall'url di connessione

    url = new URL(sUrl);
    connection = url.openConnection(); // nuova
    connection.setDoOutput(true);
    myxls = connection.getInputStream();

    poi faccio un loop di lettura con myxls.read()
    ...
    ma quando l'ho letto come lo scrivo in un oggetto di tipo File?

    scusa, mi manca sicuramente un pò di teoria e come al solito devo fare le cose con una fretta matta!!!

    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    5
    ho provato a fare così:

    filetemp = tempFileService.getNewFile(prefix, "",".xls", pageContext,sessionContext);
    filetemp.deleteOnExit();

    //FileOutputStream streamOut = new FileOutputStream(filetemp);
    System.out.println("ReadExcelUnitService - definisce oggetti per scrittura file temp");
    FileWriter filewriter = new FileWriter(filetemp);
    BufferedWriter nuovofile = new BufferedWriter(filewriter);
    PrintWriter printout = new PrintWriter(nuovofile);

    // loop lettura InputStream e scrittura su PrintWriter associata a file temp ...
    int c;
    while ((c = myxls.read()) != -1)
    { printout.write(c); }




    la prima istruzione riichiama un metodo che semplicemente restituisce un oggetto File di tipo temporaneo, con nome dato dall'unione tra la stringa prefix e l'esten .xls
    l'esecuzione va a buon fine ma l'oggetto filetemp che poi viene scritto in una tabella oracle risulta vuoto, come se non avesse scritto nulla.
    dov'è l'errore, sbaglio sul PrintWriter? cioè scrivere su un PrintWriter non significa scrivere sul file a questo collegato?

    ciao
    Fabio

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.