PDA

View Full Version : [Java] apertura file non vuoto per scrittura


71104
13-02-2008, 15:24
se apro un oggetto File (che corrisponde su disco ad un file non vuoto) per scriverci sopra con FileOutputStream, il suo contenuto viene cancellato all'apertura oppure lo stream sovrascrive il contenuto vecchio?

ovvero, se io scrivo in tale file una quantità di bytes minore di quella che c'era, quando lo chiudo poi mi ritrovo alla fine del file i bytes vecchi che non sono stati sovrascritti?

e per quanto riguarda invece l'apertura tramite PrintStream?

denghiù.

andbin
13-02-2008, 16:03
se apro un oggetto File (che corrisponde su disco ad un file non vuoto) per scriverci sopra con FileOutputStream, il suo contenuto viene cancellato all'apertura oppure lo stream sovrascrive il contenuto vecchio?FileOutputStream sovrascrive (azzera) il file, a meno di usare il costruttore che ha il parametro boolean append, specificando true per fare l'append.

e per quanto riguarda invece l'apertura tramite PrintStream?Dipende se lo si crea con un OutputStream (es. FileOutputStream, nel qual caso vale come detto sopra) o con un File/String nel qual caso sovrascrive (azzera) il file.

Solo FileOutputStream/FileWriter hanno il boolean append.

AnonimoVeneziano
13-02-2008, 16:06
Per FileOutputStream c'è un costruttore apposta che accetta un flag "append" (boolean) che dovrebbe servire a specificare se iniziare a scrivere dall'inizio o la fine del file (cioè sovrascrivendolo o no)

Uso

FileOutputStream fos = new FileOutputStream(oggetto_file, true); // se non si vuole sovrascrivere

L'apertura del FileOutputStream non dovrebbe sovrascrivere niente nel file in ogni caso fino a che non inizi a scriverci dentro (con la write() ) .

Al contrario l'apertura di un file con la PrintStream tronca il file a "0" (in caso esista)

71104
13-02-2008, 16:30
grazie ragazzi, tutto chiaro :D
non mi ero accorto del costruttore col flag append :read: