Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] Problema Scrittura su file

    Ciao a tutti , sto creando un piccolo applicativo sulla crittografia che va a leggere i dati presenti in un determinato file e li critta con l'algoritmo di sostituzione(molto semplice); arrivato al punto di scrivere i dati su un file non ottengo nulla come output nonostante abbia controllato che l'array o il vector che utilizzo sia pieno...

    codice:
    public static void write(File f,Vector a)
    {
         Object[] d=new Object[a.size()];
          int[] ray=new int[a.size()];
          int i=0; 
          for(i=0;i<a.size();i++) 
             { 
               ray[i]=(Integer) a.get(i); 
             }
      try{ 
              FileOutputStream fos = new FileOutputStream(f);
              i=0;
            while (i<a.size())
               {
                  int o=0;
                  o=ray[i]; 
                  fos.write(o); 
                   System.out.println(o); i++; 
                } fos.close(); 
            } 
       catch (FileNotFoundException e)
        { 
              e.printStackTrace(); 
         } catch (IOException e)
           { e.printStackTrace(); } 
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Devi sempre effettuaer il flush() dei dati, prima di chiudere il file, poichè nessuno garantisce che il sottosistema di IO abbia effettivamente scritto i dati sul disco, piuttosto che averli ancora tutti nel suo buffer.

    codice:
    fos.flush()
    fos.close();
    Poi potresti un attimino migliorare la fase di scrittura... riducendo un sacco di istruzioni e variabili inutili:

    codice:
    while (i<a.size())
    {
       fos.write( ray[i] ); 
       System.out.println( ray[i] );
       i++; 
    }
    PS1: I tag da usare quando si posta del codice sono i CODE, non i QUOTE che servono per le citazioni.

    PS2: la gestione delle eccezioni andrebbe un po' rivista... o meglio, bisognerebbe garantire la chiusura del file anche nel caso in cui venga sollevata un'eccezione... e questo si fa con la clausola finally del blocco try.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Se vuoi migliorare il codice dà un'occhiata anche al costrutto try-with-resources introdotto con Java 7.

  4. #4
    Grazie mille delle dritte , il flush() era la soluzione al problema ^^

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.