Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137

    I file che non si cancellano

    Ho creato un programma in java che effettua alcune operazioni invocando dei programmi esterni attraverso Runtime.getRuntime().exec(...).....
    Questo programma esterno genera dei file che rimangono bloccati (non riesco a cancellarli con un delete() nel mio programma in java).Avete suggerimenti su un metdo che mi permetta di calcellarli quando chiudo il programma? (bisogna considerare che fin quando il programma non si è chiuso questi file non si cancellano)

  2. #2
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    se non riesci a cancellarli è probabile che apri degli stream per leggerli e non li chiudi correttamente..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    ho cercato di capire meglio che file erano e non sono fine utilizzati dai programmi esterni ma dei file creati dal mio programma java con DataOutputStream. Praticamente quando la creazione di questi file viene bloccata (nel programma ho creato un pulsante stop per interrompere l'operazione corrente) , questi file rimangono bloccati fino a quando il mio programma java è in esecuzione....Quindi mi servirebbe qualcosa o che mi forzi la cancellazione o qualche comando che in caso interruzione dell'operazione in esecuzione mi concluda cmq la creazione di quel file...

    Suggerimenti....

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Macgiglio
    Suggerimenti....
    Uno solo: quando fai lo stop chiudi i file. Non c'è altra soluzione.


    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

  5. #5
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Originariamente inviato da Macgiglio
    ho cercato di capire meglio che file erano e non sono fine utilizzati dai programmi esterni ma dei file creati dal mio programma java con DataOutputStream. Praticamente quando la creazione di questi file viene bloccata (nel programma ho creato un pulsante stop per interrompere l'operazione corrente) , questi file rimangono bloccati fino a quando il mio programma java è in esecuzione....Quindi mi servirebbe qualcosa o che mi forzi la cancellazione o qualche comando che in caso interruzione dell'operazione in esecuzione mi concluda cmq la creazione di quel file...

    Suggerimenti....
    te l'avevo detto subito..
    gli stream li devi chiudere con close()
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    vi posto allora il codice che crea questi file in modo da capire dove posso intervenire per chiuderli in caso di interruzione di operazione

    codice:
    public static void resize( String fname, int per, String out){	
    	int cols=0;
        	int rows=0;
                   try{
    	        FileInputStream fis = new FileInputStream(fname);
    	        DataInputStream dis = new DataInputStream(fis);
    	        FileOutputStream fos = new FileOutputStream(new File(out));
    	        DataOutputStream dos= new DataOutputStream(fos);	        
    	       
    	        int c=dis.readInt();
    	        cols=readfile.LittleToBigEndian(c);
    	        dos.writeInt(c);
    	        int r=dis.readInt();
    	        rows=readfile.LittleToBigEndian(r);    
    	        int totrows =(rows*per)/100;
    	        dos.writeInt(Integer.reverseBytes(totrows));
    	        for (int i = 0; i < totrows; i++){
    	                for (int j = 0; j < cols; j++)
    			{dos.writeFloat(dis.readFloat());}
    				 }
                  		dis.close();
    			dos.close();
    	}catch (IOException ioe)
    	    {
    			ioe.printStackTrace();
    	      }
    			
    		}
    suggerimenti?

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Macgiglio
    suggerimenti?
    La gestione delle eccezioni non è appropriata. Va fatta in modo che sia il più previdente e "cautelativo" possibile per essere sicuri che i close vengano sempre fatti.

    codice:
    public static void resize(String fname, int per, String out) throws IOException {
        DataInputStream dis = null;
        DataOutputStream dos = null;
    
        try {
            dis = new DataInputStream(new FileInputStream(fname));
            dos = new DataOutputStream(new FileOutputStream(new File(out)));
    
            .....
        } finally {
            try {
                if (dis != null) {
                    dis.close();
                }
            } finally {
                if (dos != null) {
                    dos.close();
                }
            }
        }
    }
    E il metodo dovrebbe lanciare al di fuori IOException, che dovresti catturare altrove, ad un livello più alto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    non va qua.. questo è per la creazione..
    devi farti un metodo a parte che richiami dall'event del bottone stop..
    è li che devi implementare una close()
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    137
    non mi sembra tanto facile da fare per uno con le mie conoscenze....come faccio a prendere proprio quel DataOutputStream nell'altro metodo per fare close() ?

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Macgiglio
    come faccio a prendere proprio quel DataOutputStream nell'altro metodo per fare close() ?
    No alt .... che intendi?? Il tuo metodo resize() apre quello che deve usare, legge/scrive quello che vuole e poi dovrebbe chiudere tutto e in ogni caso prima di terminare. Che è appunto come ti ho mostrato io.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.