Introduzione ai Metodi di Gestione dei File in Java
Il video analizza i metodi di gestione dei file in Java, distinguendo tra metodi statici e dinamici. Viene sottolineata l'importanza di comprendere la documentazione e la firma dei metodi, che include il tipo di risultato, il nome del metodo e i parametri.
Differenza tra Metodi Statici e Dinamici
- Metodi Statici: Associati alla classe e utilizzati con la sintassi
NomeClasse.metodo()
. Esempio:File.createTempFile()
. - Metodi Dinamici: Associati a un oggetto creato con un costruttore. Esempio:
file.exists()
.
Metodi Principali Analizzati
- canExecute: Restituisce un booleano che indica se il file è eseguibile.
- createNewFile: Crea un nuovo file se non esiste già e restituisce un booleano sul successo dell'operazione.
- createTempFile: Crea un file temporaneo con un prefisso e suffisso specificati. Per ulteriori dettagli su questo metodo, puoi consultare l'articolo Introduzione alla Classe File in Java: Gestione dei File e Directory.
- getAbsolutePath: Restituisce il percorso assoluto del file.
- getCanonicalPath: Restituisce il percorso reale, seguendo eventuali link simbolici.
- delete: Cancella il file associato all'oggetto.
- isHidden: Verifica se il file è nascosto.
Esercizi Proposti
- Creare un file e verificare i diritti di accesso. Per comprendere meglio i diritti di accesso, puoi leggere Gestione dei File e dei Processi in Informatica: Un'Introduzione Completa.
- Creare un file temporaneo e visualizzarne il percorso. Per approfondire la gestione dei file temporanei, consulta Understanding File Systems and File Management in Java.
- Implementare un metodo per cancellare file temporanei al termine dell'esecuzione del programma.
Conclusione
La comprensione dei metodi di gestione dei file in Java è fondamentale per una programmazione efficace. Si consiglia di esercitarsi con esempi pratici per consolidare le conoscenze acquisite. Per ulteriori esercizi e approfondimenti, puoi visitare Gestione delle Date in Java: Utilizzo di SimpleDateFormat e File.
Allora la volta scorsa vi ho presentato i metodi principali quelli base con cui operare sui sui file adesso
praticamente farei un un'analisi un po' più esaustiva prendendo uno per uno i metodi che ci sono e spiegando cosa
servono e poi proviamo a pensare come creare degli esercizi per utilizzarli
Allora intanto vi faccio notare non so se Guardate spesso la documentazione che
nei metodi c'è sempre la firma ok Quindi c'è il tipo del risultato il nome del metodo e gli eventuali parametri in
qualche particolare caso c'è scritto stetic Ok quelli che non hanno di sitto stetic
come si utilizzano cioè che differenza c'è tra questi metodi in cui c'è scritto Static
e quelli in cui non c'è scritto Static l'ho già spiegato n000 volte quando abbiamo parlato dei metodi
statici Eh non hanno la stringa se il metodo è dinamico vuol
dire che è associato a un oggetto ok Quindi se io ho la classe file Eh facciamo Andiamo su uno nuovo va
andiamo la pagina Se io ho la
classe questo è un puntatore ok Devo creare l'oggetto quindi devo fare F1 uguale a new
file e poi tra virgolette gli metto Il Pat Ok quindi F1 punta a un oggetto di tipo
file i metodi che non hanno scritto Static si devono usare con un oggetto quindi non posso usarli diversamente
quindi devo aver sempre creato un oggetto per cui le azioni di quei metodi si riferiscono a quell'oggetto e quindi
a quel ok Quindi come abbiamo visto la volta scorsa il metodo exist il
metodo Directory eccetera Non avevano parametri perché si applicavano a all'oggetto e l'oggetto era stato creato
con un percorso Ok alcuni poi li vediamo in particolare se hanno la scritta Static Cosa vuol dire
Come si usano i metodi stetic Ma sì ma sono legati alla classe ok
Quindi quelli in cui c'è scritto Static in qualsiasi classe voi lo usiate si devono usare mettendo il nome della
classe Punto il metodo quindi non sarà F1 pun qualche cosa ma sarà file che è il nome della classe Punto In questo
caso create Temp file poi ne parleremo però questo è un discorso generale Ricordatevi Ve l'ho già detto
1000 volte se andate a vedere i video che abbiamo fatto ci sarà sicuramente più di una volta e questo è fondamentale
saperlo Ok quindi i metodi li cominciamo a guardare uno per uno quelli che non
hanno scritto steti che si applicano a un oggetto che quindi devo aver creato con il suo costruttore quindi ed è
associato ad un certo percorso andiamo in ordine alfabetico Allora can execute mi restituisce un
booleano quindi vero falso e nel momento in cui il il percorso dell'oggetto file che ho
creato è associato a un file che esiste e che è un programma eseguibile ok Quindi se io voglio verificare se ciò a
cui mi sono agganciato con la new file è un percorso che è associato a un programma e che può essere eseguito lo
posso verificare con questo metodo ok e in modo simile valgono K Read e k Bright Quindi in realtà se vi ricordate
la spiegazione che avevo fatto qua Ok vi ricordate che abbiamo fatto un
discorso sulle caratteristiche dei diritti di accesso eccetera e quindi c'era Read Write execute e quindi i file
hanno una Terna di di caratteristiche execute per l' owner il Group e e tutti
gli altri Quindi questa caratteristica can execute vero falso lanciato dal nostro programma
quale andrà usare di questo owner Group e adar quindi sia l' owner avrà la r di
can Read abilitato o no Write sì no execute sì no Ok quale andrò usare Secondo
voi un po' di ragionamento Però ragazzi cioè eh facciamo lezione per interagire no mh
quindi non Cercate di non farvi solo cose vostre senò poi quando vi farò una domanda del
genere o vi andate a vedere a memoria tutti i video che ho fatto senò è difficile che mi rimanga in
testa Infatti dipende dal riferimento a cui fa il percorso se un percorso che è relativo a un file di cui io sono l'
owner la canen Read la canen writ la can execut andrà a vedere questa cosa qua se è un file che è stato creato da un
utente un mio collega che è nel mio gruppo Ma che non sono io andrà a vedere queste caratteristiche qua se è stato
creato da qualcun altro andrà a vedere le caratteristiche secondo questo quindi i diritti di accesso
sono controllati rispetto alla proprietà che si ha di questo percorso Ok se ne è veramente proprietario
saranno i diritti di proprietà se sono se sono parte del gruppo quell del gruppo E se invece non faccio parte Né
del gruppo N proprietario quello di tutti gli altri ok E questo c'è ormai oggi in più o meno tutti F System Quindi
questa cosa vale e uno deve sapere perché uno dice Ah magari questo file c'è è leggibile perché ha visto che ne
so c'è c'è la readid qua però non è mio e in realtà Magari il diritto per gli altri di Reid non c'è
ok Quindi bisogna valutare anche quella caratteristica che qui ovviamente non viene esplicitata viene usata in modo
auto Atico Ok poi la compter 2 è introdotta fondamentalmente
per compatibilità con il l'interface comparable Ok ma la comparazione è fatta come dice qui il
testo non sul contenuto del file perché ricordiamo che qui stiamo parlando di una classe che opera a livello di file
system non di contenuto quindi di Dove si trovano i file di Quali sono i diritti In quali cartelle eccetera ma
non di cosa c'è dentro ok Quindi la convert non confronta due file per sapere se sono uguali come contenuto ma
semplicemente se dal punto di vista del del percorso sono la stessa cosa direte Ma perché è utile allora è utile perché
appunto se io li volessi avere ordinati in ordine alfabetico Ok avendo la Comper un
risultato compatibile con la comparazione ovvero Zer se sono uguali minore di 0 se viene prima maggiore di 0
se viene dopo riesco a usare i metodi che se ho un un vettore di di nome di file Come può essere il risultato di un
listato di Directory o o se li ho messi io in un certo modo questi me li mette in ordine alfabetico ok Quindi mi serve
soltanto per avere una comparazione tra i nomi dei percorsi poi la create new
file probabilmente l'avevamo già vista la volta scorsa è quella che vado a usare dopo aver fatto i
controlli di rito cioè dato un certo oggetto file che come vi ho detto l'oggetto file è un oggetto in RAM nella
memoria Java eccetera devo andare a vedere se questo percorso corrisponde a qualcosa che esiste se esiste già mi
andrò a domandare se è un Fal Directory e se in base a cosa devo fare eccetera Se non esiste Ok Posso crearlo e lo
posso creare sia con la Cre new file se vogli un file ossia abbiamo visto la volta scorsa con la mkd dovè finita qua
sotto MK dir o mkds ok Quindi questi sono i due cioè sono i tre metodi per creare l'oggetto
Java su file system Ok quindi trasformarlo tra una cosa che è astratta in qualcosa che effettivamente esiste se
non esiste già Ok quindi devo comunque prima verificarlo come vi ho spiegato la volta scorsa questo metodo restituisce
vero falso se la creazione è andata a buon fine perché ci sono una serie di motivi per cui potrebber non essere
andate a buon fine che se non ricordo male avevo elencato da qualche parte
no no perché non è qua no eh Ah ecco qua Sol quindi il fatto che non abbia memoria abbastanza
sul percorso del disco che ho scelto oppure se non ho fatto i test di esistenza e ho deciso di provare a
crearlo lo stesso Ma esiste già oppure ci può anche essere un'operazione contemporanea Considerate che magari Il
programma lo stiamo usando in più di una persona su un computer io ho verificato che non c'è Vado per crearlo ma nel
frattempo è stato creato da qualcun altro per esempio oppure il percorso è ridon quindi non
posso crearlo per questo oppure è protetto oppure soprattutto la cartella
contenitore non esiste quindi deve esserci tutto il percorso tranne l'ultimo pezzo finale
e o addirittura non esiste proprio il drive che ho che ho scelto nel percorso Ok ok invece create Temp
file sono metodi statici Perché Perché mentre gli altri si applicano a un percorso che il programmatore ha scelto
o l'utente interattivamente ma comunque che ho messo in fase di creazione dell'oggetto Java Ok in questo caso il
nome del file Viene creato automaticamente Ok Che cos'è un Temp file allora eh nella
programmazione spessissimo quando si comincia a lavorare sui file si usano delle dei file momentanei Infatti
temporanei che mi serve per memorizzare dei risultati che in memoria RAM Sarebbero troppo grandi Ma che non hanno
bisogno di essere permanenti Ok quindi mi servono solo per la elaborazione E allora la scelta del file temporaneo può
essere un'operazione anche un po' complicata perché devo sapere dove andarlo a mettere deve essere un posto
dove posso scrivere di sicuro eh E poi io mi invento un nome ma soprattutto su sistemi molto grandi potrebbe essere già
stato creato da qualcun altro e ne scelgo un altro magari anche quell'altro esiste già oppure devo
metterci una versione eccetera Allora in Java Siccome questa è un'operazione che i programmatori fanno molto spesso è
stata messa a disposizione questa questo metodo che fa esattamente quel ruolo lì Cioè va cercare un posto dove mettere i
file temporanei e e crea il file temporaneo vuoto nuovo Mh Siccome il file temporaneo se si
chiamasse con un numero casuale se io lo poi lo volessi andare a riconoscere anche se è vero che a alla fine del
programma probabilmente non mi serve più però magari anche Durante l'esecuzione del programma mi ser andare a vedere
cosa c'è scritto ok oppure alla fine del programma non lo cancello perché voglio vedere che cosa è stato messo sul file
temporaneo Allora se delegari la scelta completa del nome del file al sistema tipicamente metterebbe una cosa che è un
codice numerico irriconoscibile e poi andarlo a trovare sarebe piuttosto difficile all
Allora il metodo permette di avere due parametri un prefisso e un suffisso poi se non mi interessano posso mettere due
stringhe vuote Non so se si possono mettere null semmi proviamo però diciamo in un modo e l'altro posso decidere che
il prefisso il suffisso non ci sono in genere serve perché perché soprattutto in in un uso condiviso tra più utenti o
il fatto che io io posso avere anche più programmi Voglio sapere i Fi temporanei relativi a quel programma lì no E allora
in genere si mette un prefisso poi il sistema si inventa lui un codice numerico un po' A capocchia tale per cui
non ne esiste già un altro Quindi se voi chiamate anche 1000 volte la create and file con lo stesso prefisso lui creerà
tanti tanti file tutti diversi ok perché terrà buono il prefisso che gli date poi ci aggiunge dei codici numerici per
renderlo univoco e non ripetibile e poi po in genere siccome quando uno crea un file in
genere ha un'estensione perché l'estensione serve poi anche po per capire la tipologia di informazioni
non so devo fare un file di testo ci metterò punto txt se è un file di immagini potrebbe essere punto
gif o punto JPEG o punto Tif eccetera quindi il suffisso non è tanto per
riconoscimento del fatto del file sia mio ma della tipologia di informazione che ci metto dentro ok Quindi se che ne
so devo salvare una copia di un PDF metto il prefisso mio e poi ci metto l' accensione punto PDF Ok se voglio far
inventare una cosa assolutamente temporale di cui non mi interessa né il prefisso né il suffisso posso mettere le
stringhe vuote e lui metterà tipicamente un codice numerico e buonanotte e quindi lo crea lui ok Quindi l'oggetto
in questo caso mi viene restituito quindi il metodo statico mi restituisce lui un oggetto di tipo
file quindi non faccio io new file con il percorso lo fa lui dentro nel senso che nella create file va a cercarsi Lao
dei file temporanei Cerca se esiste con un prefisso Che gli avete dato voi più un codice messo da lui se esiste già
Cerca un altro codice cambia codice l che non esiste a quel punto lo crea nuovo
Eh il percorso e l'oggetto di tipo file quindi il puntatore ve lo restituisce ok E questo è il motivo per cui è statico
perché non siete voi aver creato l'oggetto l'oggetto vi viene restituito
eh detto questo però Quindi in realtà non vado ancora in ordine alfabetico perché Eh dal punto di vista logico è
importante già sapere qualcosa adesso dopo che l'ha creato una delle cose che servirebbe sapere è
effettivamente come si chiama sto file Dove si trova ok Quindi sia Dove si trova come cartella e sia il nome del
file stesso perché se l'è inventato E allora ci sono dei metodi che a questo punto sono dinamici quindi non sono
metodi statici ma sono dinamici Perché Perché si applicano all'oggetto che lui mi ha restituito quindi la create and
file mi restituisce un oggetto vedete Questo è il valore di ritorno di tipo file e allora posso applicarci sia
questi metodi che abbiamo già visto ma anche soprattutto la questa sequenza di di
metodi questi che mi restituisce le informazioni sul
file allora la Get si applicano tutti a oggetti di tipo file
e e mi mi dà Praticamente questo mi dato un oggetto di tipo file me lo trasforma in un
percorso assoluto Cioè se voi avete fatto un new file aperti virgolette pippo.txt Ok è un
patn assoluto relativo se io faccio un new file virgolette Pippo txt ok
pippo.txt Quindi questa stringa corrisponde a un patn assoluto o relativo Cioè è veramente la
base Io tra due settimane comincio a interrogarmi eh vi avviso è relativo perché assoluto deve
cominciare con la Rot Directory del file system che se su unix slash se su Windows sarà il nome della lettera del
disco Ok quindi in quel caso un p non sarebbe assoluto sarebbe relativo Ma se io lo
voglio assoluto Ok Posso chiedere tramite questo metodo di trasformar un assoluto Però come vedete mi restituisce
un altro oggetto di tipo file perché vi ho spiegato la volta scorsa quando io creo un oggetto facendo new file e gli
metto un percorso quell non può più essere cambiato cioè l'oggetto Java non su f Sist l'oggetto Java che creo se lo
creo con partn Assoluto con partn relativo quello è e quello rimane se lo voglio diverso vado a creare un altro
oggetto Gi con che ha dentro ha un percorso diverso Ok perché il percorso fa proio parte
dell'oggetto quando l'ho creato e non si può più cambiare Quindi se io voglio trasformarlo in assoluto Quindi questo
pippot XT per essere assoluto che cosa fa come fa rispetto a che cosa è il patn
relativo relativo alla Directory che è Directory di lavoro su
cui sta girando il vostro programma ok Quindi la vostra ha un percorso su disco Ok il vostro P relativo a quella
cartella il assoluto mette insieme le due String Ok la Working Directory concatenata con name relativo quello mi
dà il quindi la Get F fa questa operazione fare questa
operazione non vuol dire ancora che il file esista cioè io posso dato un percorso Quando io ho
creato un oggetto Java come un percorso Ok se lo creo di tipo relativo è una striga di testo m trasformarlo in un
panimo assoluto vuol semplicemente dire ci metto insieme la work Inter Directory e ho un panimo assoluto ma è la stessa
cosa di aver creato panimo assoluto fatto così che di per sé lui non mi dice ancora se esiste o non esiste su disco
ok Quindi queste operazioni la Get Absolute file o la Get Absolute Pat La differenza è che questo mi dà un oggetto
nuovo associato al percorso assoluto Ok mentre invece la Get Absolute Pat mi dà la stringa Quindi mette insieme la
stringa della Working Directory la stringa del percorso relativo che abbiamo creato e mi dà la stringa finale
Considerate che sia l'una che l'altra se per caso vengono applicate a un oggetto che è già un p Assoluto Semplicemente
restituisce la stessa stringa ok Quindi se è già assoluto lo dà uguale Sì no è tutto
perc Sì la work viene espressa sempre con un assoluto perché altrimenti non sapresti
posizionarlo Ecco differente è la Get canonical file che sembra uguale ma in realtà fa una cosa diversa
perché sia questa che questa fanno in modo simile l'operazione della get Absolute
Ma questa va effettivamente a vedere su f System se esiste perché
perché non so se vi è capitato di usare su Windows si possono
determinare dei dei file o delle cartelle finte che si chiamano scorciatoie in realtà non sono dei veri
file o delle verere cartelle sono delle cartelle finte che Eh sono associate a un percorso diverso Quindi se io non so
nel mio desktop devo sempre lavorare in una sottocartella che è 10 cartelle più sotto Quindi tutte le volte dovrei
aprire la cartella poi aprendere un'altra poi aprire un posso creare una cartella una cartella scorciatoio che
equivale quando la apro a come se aprisse due 10 cartelle più sotto ok questo vale sia per una cartella che per
un file e c'è una cosa simile nel mondo unix che si chiamano link simbolici cioè
l'associazione di un nome che non è il associato al contenuto vero e proprio ma è associato a un percorso
Ok allora le i percorsi normali si Absolute part part relativi non non entrano nel merito di questo
invece la Get canonical Pat va se in mezzo al percorso c'è qualc del genere Lo la canonical P lo segue va sulla
destinazione e mi dà effettivamente la posizione reale definitiva su file system quindi la differenza che c'è tra
la Get Absolute Pat e la canonical Pat è che mentre le lavorano sul testo delle stringhe e
basta Questa va effettivamente su disco a vedere se c'è Ok poi salto questa perché in ordine
alfabetico è qua Ma perché voglio rimanere su sui metodi che si occup che si occupano dei
nomi la Get name È simile alle altre ma mi dà soltanto
il pezzo finale Cioè se io ho un percorso relativo
ahok se io ho un percorso C due punti users persona
esercizi eh testo.txt
immaginiamo che questa parte qua sia la mia Working Directory Ok se io do esercizi testo
txt Quindi se l'oggetto venisse creato con con questo percorso relativo la Get name mi dà questa parte qua Ok se do il
Pat assoluto completo stessa cosa La Get mi dà il pezzo finale
Ok la Get Parent invece Parent vuol dire genitore Ok si riferisce alla cartella dentro cui si trova l'ultimo percorso
cioè l'ultimo nome quindi esattamente il contrario ovvero se ho un pname
relativo la Get Parent mi dà solo questo ok Se avessi dato un percorso assoluto che va da qui fino al fondo la
Get Parent Mi darebbe tutto fino a qua Ok la la Get Parent ha anche una
corrispondente che invece di darmi solo la stringa di testo mi crea già automaticamente un oggetto di tipo file
associato a quel percorso però Considerate che se io volessi io posso fare file eh
dir uguale che ne so F1 Get
Parent file e è assolutamente equivalente a dire
eh [Musica] String
Parent UG F1 Get Parent che mi restituisce la stringa di
testo e poi faccio file uguale a new file di
Parent Ovviamente per brevità avrei anche tutto metterlo qua dentro ok Quindi avere cioè questi metodi che
mi restituiscono anche questo qua no il la Get canonical file equivale a fare una new file che ha
come parametro la Get canonical Path Ok che l'unica differenza è che per comodità mi restituisce già un oggetto
di tipo file ehm la Get Pat serve semplicemente per
avere indietro lo stesso nome con cui ho è stato creato l'oggetto Voi direte Ma se l'ho creato
io lo saprò bene ok No non è detto che l'abbiate creato voi Ok guarda caso la create file non l'avete creato voi
Quindi se voi voleste sapere il P con cui è stato creato dall'oggetto restituito dalla
create and file fate Get Pat e vi restituisce la stringa Se voleste avere il Pat assoluto
fate Get Absolute Pat o se voleste avere l'oggetto Vabbè l'oggetto Java sarà lo stesso e sarebbe Get Absolute
file Dunque sui nomi credo che sia siano tutti Sì sì ok i metodi che
lavorano sui nomi sono tutti questi Ok quindi Get name mi dà l'ultimo pezzo Get Parent mi dà il pezzo davanti Get parent
file mi dà il pezzo davanti ma di tipo file Get Pat è il percorso con cui è stato creato l'oggetto Java Get Absolute
Pat è il Pat assoluto posso sapere se un oggetto ha un Pat Assoluto con la is Absolute che abbiamo visto la volta
scorsa e E invece la Get canonical è quella che segue i percorsi eventualmente anche i
link simbolici Ok bene torniamo in ordine alfabetico dove
eravamo Ok Allora questa è la prima creat file di cui abbiamo parlato che dicevo
restituisce un oggetto file e se voleste sapere dove con i metodi sui nomi lo andate a
sapere la creat file vi toglie però qualsiasi preoccupazione anche di scegliere dove andarlo a mettere ok
quindi va a cercarsi una cartella dove normalmente si mettono i file temporanei nel computer su unix in genere sono
tutte sotto slash tmp quindi nella prima in una delle prime Directory al livello Altissimo in Windows dovrebbe essere
sotto C du punti Windows Temp in realtà Windows ne ha più di uno in 32 tmp quindi dove lo mette Java non so
potrebbe anche dipendere dalla versione di Java Quindi comunque ci pensa lui ok Se
invece quello che volete è Creare un file nel posto dove volete quindi nella cartella che volete voi Ok ma
semplicemente volete togliervi la preoccupazione di verificare se c'è già se c'è già cambiargli nome poi vedere se
quel nome cambiato c'è anche quello eccetera no perché comunque essere sicuri di creare un file che non esiste
è un algoritmo che bisogna scrivere ok Quindi di una certa complessità E allora uno dice vabbè c'è una cartella mia in
cui voglio mettere un file in cui do il prefisso e l'estensione ma voglio essere sicuro non preoccuparmi se ce n'è già
un'altra copia Eh questo me lo deve creare che non esiste quindi la create and file
sicuramente crea un file nuovo vuoto in questo versione nella cartella che dite voi E con questo prefisso e con questa
estensione ok Da notare questo che la cartella non è data come una stringa ma è data come un oggetto di
tipo file a sua volta questo perché Perché intanto se voi dovete dargli una cartella dove lui deve fare le cose se
siete dei buoni programmatori avrete già dovuto controllare se questa cartella esiste è scrivibile eccetera Ok magari
non dovete andare a vedere se c'è già dentro quel file lì ma almeno sapere che la cartella esista e che ci posso
scrivere dentro quello lo devo sapere E allora per fare quello avrò preso un percorso avrò
creato un oggetto Java di tipo file lì su gli avrò applicato la exists e la k Ken se Saran vere entrambe le cose potrò
crearci dentro il file temporaneo Ma allora A quel punto avrò già in mano un oggetto di tipo file e quindi gli passo
quello perché anche per lui Ovviamente sarà già pronto per fare le operazioni che vuole farci lui Cioè il l stato il
stato del contenuto che vedremo poi Comè possibile farlo
Ok Tra l'altro colgo l'occasione di questa cosa per dire Guarda caso è anche che Uno dei
metodi costruttori della classe file quindi noi all'inizio abbiamo visto soltanto il costruttore fatto No non è
qua qua abbiam visto solo il costruttore fatto con la stringa Ok ma la stringa può essere relativa o assoluta ma su
quella stringa avreste poi dovuto voi separatamente analizzare se il percorso precedente cioè della cartella
contenitore dell'elemento finale esiste già è scrivibile eccetera cioè anche quello va Fatto ok Ma allora cosa
succede che normalmente uno non usa questo prendo un percorso che è quello di una cartella crea un oggetto di tipo
file ci fa i controlli che servono a quel punto ha un oggetto di tipo file che è la directory in cui mettere le
cose nuove e andrà costruire l'oggetto fatto in questo modo scusa non questo questo modo qua che è il metodo più
usato perché perché ho la cartella che è un oggetto di tipo file su cui ho già fatto tutta una serie di controlli e poi
ho il percorso finale dell'elemento da andare a mettere infatti in genere anche i tutti le applicazioni che voi usate
Come funzionano quando voi dovete salvare qualcosa vi dice scegli la cartella e allora avrete un modo per
navigare la cartella se la cartella non esiste vi dice crea la cartella e Aggiungete la cartella al percorso
Quindi lui avrà un oggetto di tipo file con informazioni e poi Scegliete il nome finale con cui
scrivere il contenuto ok Quindi questa separazione tra la gestione della cartella e la gestione del file finale
in genere c'è sempre in tutte le applicazioni e anche nell'interazione con
l'utente Ok quindi torniamo a dove eravamo Quindi no
qua quindi abbiamo visto le Scus la create file con la cartella ok Quindi anche in questo caso mi restituisce un
oggetto di tipo file su cui io faccio poi tutti G eventuali analisi per sapere dove l'ha creato Con che nome eccetera
qui ovviamente il percorso dove l'ha creato sarà quello D Directory ma il nome finale avrà questo prefisso questa
estensione e poi in mezzo ci avrà messo quello che vuole
bene poi c'è il metodo Delete il metodo Delete non ha parametri che cosa andrà a cancellare questo metodo
delit qualcuno di voi là non c'è scritto nella delit quale fa il
cancellare avete una lametta che taglio su che fai lavorerà questo metodo un solo
dai dell'oggetto con cui chiamo il metodo Ok è un metodo dinamico è stato creato con la new con un percorso Quello
è il file la Delete cancellerà quel file Allora Java mette a disposizione anche una cosa molto carina che è la
Delete on Exit che praticamente non non credo che ci sia nessun altro linguaggio e io trovo che sia molto interessante
non è da usare tutti i momenti però se io ci sono diversi programmi che proprio sui file temporanei li creano e poi
veramente quando programma è finito non gli interessa niente allora Se tutte le volte che lanci un programma crea un
file temporaneo nuovo immaginate che stiamo provando tutte le volte Creiamo un file temporaneo lui tutte le volte me
crea uno nuovo no se lo lancio 3 4 10 50 volte c punto mi riempie di 50 file temporanei che sicuramente non mi
servono poi magari non è così evidente sapere se era da togliere o non da togliere perché magari in una
cartella C Windows Temp non mi ricordo e mi si riempie il disco di cose che non servono
questo è una prenotazione della cancellazione Cioè mi dice guarda il file perché è un è un è un
metodo dinamico Ok il file associato all'oggetto in questo percorso quando il programma finisce cancellalo Quindi io
posso creare un file temporaneo ci faccio le cose che mi servono se il mio programma anche si dimentica di aver
usato file temporaneo Eh non c'è non c'è problema Alla fine il programma lo cancella quindi la Java Virtual machine
che avendo avuto questa prenotazione in fase di chiusura va a cancellare il file è ovvio che devo farlo se davvero mi
serve che sia così ok però non mi devo mettere memoria nella fase di chiusura del programma immaginate programmi anche
molto grandi che in fase di chiusura devono ricordarsi tutti i file temporanei che hanno creato e andarli a
pubblir c'è l'intervallo Giusto Allora proseguiamo quindi dicevo che l'adito nexit è molto utile per questo motivo no
Quindi non è è un'operazione che spesso i programmi devono gestirsi questo fatto di cancellare i
file che si usano solo per delle lavorazioni momentanee e questo ci toglie il la
preoccupazione poi equs anche questo equivale a come se fosse un equ tra le stringhe ok perché non essendo la
classe file Class che entra nel meto del contenuto L'unica cosa che può comparare è se i Pat con cui sono stati creati due
oggetti sono gli stessi Ok per confrontare se si stiamo parlando di due oggetti Java di tipo file che fanno
riferimento come percorso alla stessa cosa Questo perché non è che negli esempi semplici
che Magari farete i file create gli oggetti file li fate voi ma se già soltanto anche voi faceste dei metodi
che ricevono l'oggetto file come parametro dentro potreste aver bisogno di fare un confronto e
quindi controllare leist abbiamo visto la volta scorsa Quindi è il metodo che dato un oggetto di tipo file va su file
system a vedere se il percorso esiste effettivamente Questi sono quelli che abbiamo già
visto Canonica eccetera Ecco la Get Free Space va insieme alla Get Total Space e all get
Space sono dei metodi che non sebbene siano associati a un cioè utilizzabili tramite un oggetto tipo file in realtà
si riferiscono al file system in cui lui si trova quindi non è lo spazio libero del file o
lo spazio totale del file o lo spazio usabile nel file ma del file system Ok Quindi
[Musica] il l'oggetto file ha un certo percorso questo percorso se relativo
viene trasformato internamente in assoluto da quello si deduce In quale In quale file system si trova il
file e questo ci dà lo Spio Lo spazio totale e la capacità disponibile globale del F
System Quindi se io ho un F System da 100 Gig Quella è la capacità totale la Get Free Space è quanto spazio libero ho
quindi magari ne occupati 50 restano 50 liberi e quello usabile è quella famosa tra il fatto
che io ho effettivamente dello spazio disponibile perché i file possono crescere Ma se io avessi tantissimi file
tutti molto piccoli che sprecano del loro Block Size una buona parte la parte usabile potrebbe essere inferiore
rispetto a quella libera ok Ok poi anche par l'abbiamo già vista Ash code semplicemente trasforma il nome del
del PAT in un codice Ash credo a 32 bit
poi abbiam visto è quello che mi dice se il con cui è stato creato l'oggetto un
percorso assoluto oppure no l'utilità non è che sia particolarmente diffusa invece is file e
Directory Li abbiamo visti la settimana scorsa sono i due metodi che mi permettono di sapere se il percorso
associato è un file directory è ovvio che se non esiste entrambi mi daranno falso Quindi questo è l'unico caso in
cui tutti e due potrebbero Dari falso perché Perché non è la non è esiste Ok quindi quando vi ho detto se non è un
file sicuramente una directory è vero Sì ma se prima ho verificato se esiste Ok Se io faccio il test entrambi sono
falsi ne F dir vuol dire che F non non ci sono altri tipi
verificabili poi is Hidden Hidden in inglese vuol dire nascosto
ehm a seconda del file system ci sono modi diversi per nascondere per esempio su Windows può proprio dire questo file
rendilo nascosto e non è che sparisce semplicemente se magari è un file che non ha senso far vedere all'utente
normale ma è un file solo utilizzato dai programmi è inutile riempire le cartelle che vede l'utente
di cose che non gli interessano Ok per esempio ci sono molti file che magari vengono usati ogni programma Magari ha
un suo file di configurazione E a seconda della tipologia di programma alcuni mettono i file di configurazione
nella loro cartella molti lo mettono nella home del dell'utente Ok allora vuol dire che l'utente che normalmente
dovrebbe occuparsi solo delle sue cose potrebbe trovarsi tutti questi file di configurazione
se io ho 50 programmi avere 50 file nella mia Home che non so cosa sono cosa mi servono mi dà fastidio no
Quindi è possibile renderli nascosti nascosti vuol dire semplicemente che in una visualizzazione normale non li vedo
poi se io voglio come utente vedere anche i Fi nascosti è una delle opzioni delle cartelle di
Windows in cui si possono mettere visibili e la cosa vale anche nel mondo nel mondo
unix il mondo unix è un pochino più standardizzato è un po' più facile il fatto che i file sono nascosti
semplicemente se cominciano il loro carattere iniziale del nome è il punto Quindi se io faccio nel mondo unix
creo un F che si chiama punto esempio se io faccio un listato normale quello non lo vedo se faccio un listato esteso che
fa vedere anche i f nascosti lo andrò a vedere Ok Quindi nel mondo unix tutti i file di configurazione eccetera e ne fa
veramente tanti che sono nell onda eletro dell'utente e sono tutti i file che cominciano con il punto
ok Se volete magari vediamo se riesco a fare vità per esempio Quest è una cartella anche
se sono su Windows Ho installato un sistema così se se faccio un LS l' LS è l'equivalente del listato ok E vedo solo
i file normali Ok che sono questi E se io faccio LS - la vedete Quante quanti Fi
con il punto che ci sono questi Qui sono tutti i file di configurazione ok
Eh su Windows vediamo se riesco Ah allora normalmente sono così se io
Vediamo dovrebbe esserci quindi mettiamo esempio questo qua nelle proprietà se metto
nascosto questo file esempio eh Poi devo dare le
caratteristiche al file alla cartella opzioni eh
visualizzazione adesso ci ved talmente piccolo che non lo vedo
allora che sia Ah ecco qua Sì giusto non Visualizzare cartelle file unità nascosti se faccio
così quel quel file è sparito ok Quindi quando viene creato un file lo posso creare dargli la
caratteristica di non renderlo visibile Poi è ovvio che se come anche l' estensioni io normalmente l'estensione
le metto visibili l'impostazione standard non lo fa vedere quindi se io
riesco mettere di nuovo visibile e di nuovo comparso ok Quindi è è un attributo del
file e io posso posso andarlo a cambiare qui interattivamente ma anche a livello di
applicazione posso andarlo a fare la is Hidden mi mi dice vero o falso se è nascosto no e
c'è il corrispondente c'è No eh dovè già No sembrava ci fosse il metodo per
importarlo Eh allora ci volà un'altra classe per cambiare quello non lo so non mi ricordavo male e si può soltanto
testare non e non cambiare
Poi last modified last modify mi dice che mi restituisce la data di ultima modifica
per uno dice ma non mi stao una date mitice un Long perché voi avete studiato
m l'anno scorso la classe date no Quindi non sapete usare le date Fantastic alla fine siamo oltre la metà della della
quarta e non sappiamo usare le date eh andrebbe fatta una bella parentesi Vabbè proviamo a infilarci una parentesi
sulle date qua allora le date le date non so probabilmente evidentemente le usate solo come
stringhe Allora in Java le date si usano con diverse classi la classe anche se primordiale che viene ancora usata
abbastanza è la classe date viene usata più per questioni storiche per che è un classe che c'è
dall'inizio del di Quando è stato inventato Java e quindi programmi che usano questa classe ce ne sono ancora
tantissimi fondamentalmente viene viene usata per memorizzare la data in Nel formato suo interno che è un
l integer che il numero di millisecondi quindi il numero di millisecondi a partire dal primo gennaio del
1970 e questo viene messo in un Long quindi nella nell'oggetto di tipo date c'è solo un Long che è questo
ok Quindi se io faccio Now ugale a New date così questo mi crea un
oggetto di tipo date che dentro ha memorizzato il num integer che Memorizza il numero di
millisecondi dal momento in cui è stata creata la new quindi nel momento in cui è stato creato l'oggetto il Delta
rispetto al primo gennaio 1970 [Musica] Ok essendo numerico È molto facile
confrontare due due date perché non vado a confrontare giorno mese anno ore minuti secondi eccetera confronto due
Long Quindi se uno è più grande dell'altro vuol dire che è venuto dopo ok Non devo fare
nessun tipo di trasformazione quindi il il confronto facendo c'è un metodo che è Get
Time che restituisce Un long cioè restituisce il Long che c'è dentro l'oggetto
Ok tutti gli altri [Musica] metodi che ci sono nella classe sono
deprecati Eh magari vi capiterà se andate avanti a programmare in Java di usare delle classi e quando andate a
vedere la documentazione c'è una bella riga sopra il nome del metodo e è scritto nella documentazione
deprecated questo In realtà io non ricordo che ci siano delle classi che siano sta effettivamente o
dei metodi che siano stati effettivamente rimossi deprecati è un suggerimento per dire Guarda se puoi non
usarlo perché in genere i motivi sono non è particolarmente efficiente perché magari è stato inventato anni fa ed è
stato inventato qualcosa di più recente che funziona meglio ed è più veloce oppure c'è qualcosa di più completo
rispetto a quello OK e quindi meglio usare quello eh per esempio nella classe date c'era il modo di creare una data
con mettendogli parametri giorno mese e anno Ma pensate quanto l'ha pensata storta Dunque l'anno
e era mi pare un numero il numero di centinaia a partire da un ST
non so più bene Cosa è una cosa assolutamente non intuitiva per cui quei metodi lì li hanno messi
deprecati praticamente non uso più nessuno però come si fa a lavorare con le date che normalmente siamo abituati a
usare quindi con una stringa di testo Ok allora in questo viene in aiuto la simple
date format questa classe
Trasforma una stringa di testo in date e viceversa OK Praticamente è un modo per
trasformare una stringa di una data che è in formato testuale nel Long corrispondente a quella data
Ok Considerate che la classe date ha essendo stata pensata negli anni 80 credo E allora si parlava
fondamentalmente ancora di personal computer quindi le date erano localizzate all'uso del computer e basta
ormai adesso le date sono mondiali perché la maggior parte dei programmi Si usano anche in Internet eccetera per cui
dire che ore sono e Ok adesso qui sono le 95 ma a Londra sono le 815 a New York sono quello che è no
Quindi eh Intanto ci deve essere un riferimento assoluto e riferimento assoluto è
il GMT che è l'ora di Londra ma non l'ora locale di Londra perché anche Londra ha il ilus c'ha l'ora solare
l'ora l'ora legane ma è l'ora solare di Londra Ok quindi Eh questo
sarebbe tutti lo leggono gmic ho scoperto andando a Londra che in realtà si legge
gren non è Green metime ma è gren metime questo perché Sarebbe l'ora principale di gren perché
in Londra c'è un posto che si chiama gren è un quartiere di Londra in cui hanno determinato l'orario mondiale OK e
quindi è tutto relativo a quello quindi la date tendenzialmente dovrebbe
essere il numero m secondi rispetto al primo gennaio 70 e sul fuso di greenage Eh la L'unica alternativa è avere una
localizzazione Rispetto a dove si è ok in Java oggi ci sono altre classi più complete in cui posso creare l'oggetto
Java tanto di giorno Mez anno eccetera e una di queste è il Calendar che ha una sua variante che è il
gregorian Calenda gregorian calender Anche perché poi nel momento in cui si è cominciato a
estendere questa cosa nel mondo di calendario ce ne sono tanti per cui si è dovuto determinare Quale calendario
prendere in considerazione però vi assicuro che nella
programmazione quasi sempre si usa come contenitore dell'inazione data l'oggetto date che alla fine è soltanto questo
Long ok e si usa la simple Day Format per la conversione la conversione si
fa Dunque dovrebbe essere meglio cheed
Heads up!
This summary and transcript were automatically generated using AI with the Free YouTube Transcript Summary Tool by LunaNotes.
Generate a summary for freeRelated Summaries

Introduzione alla Classe File in Java: Gestione dei File e Directory
Il video fornisce un'introduzione alla classe File in Java, spiegando come interagire con il file system e gestire i file e le directory. Viene discusso il concetto di oggetti File, i costruttori, e i metodi principali per verificare l'esistenza di file e directory, oltre a come crearli.

Gestione delle Date in Java: Utilizzo di SimpleDateFormat e File
Il video tratta della gestione delle date in Java, focalizzandosi sulla classe SimpleDateFormat per la conversione tra stringhe e oggetti Date. Viene spiegato come memorizzare le date in formato numerico per un confronto più efficiente e come utilizzare metodi relativi ai file, come lastModified e setLastModified.

Gestione dei File e dei Processi in Informatica: Un'Introduzione Completa
Il video tratta la gestione dei file e dei processi in informatica, evidenziando l'importanza di salvare i dati in modo permanente e le differenze tra memoria RAM e dischi rigidi. Viene anche discusso il funzionamento dei file system e la frammentazione dei dati.

Understanding File Systems and File Management in Java
This video delves into the intricacies of file systems, focusing on how disks are partitioned and formatted. It explains the structure of file systems, the characteristics of files and directories, and how Java handles file management through specific classes.

Introduzione alla Programmazione: Vettori e Record in Java
Il video esplora i concetti fondamentali di programmazione in Java, concentrandosi sui vettori e sui record. Viene spiegato come i vettori contengano elementi dello stesso tipo e come i record possano contenere informazioni di diversi tipi, utilizzando classi e oggetti per gestire i dati in modo efficace.
Most Viewed Summaries

A Comprehensive Guide to Using Stable Diffusion Forge UI
Explore the Stable Diffusion Forge UI, customizable settings, models, and more to enhance your image generation experience.

Pamaraan at Patakarang Kolonyal ng mga Espanyol sa Pilipinas
Tuklasin ang mga pamamaraan at patakarang kolonyal ng mga Espanyol sa Pilipinas at ang mga epekto nito sa mga Pilipino.

Pamamaraan at Patakarang Kolonyal ng mga Espanyol sa Pilipinas
Tuklasin ang mga pamamaraan at patakaran ng mga Espanyol sa Pilipinas, at ang epekto nito sa mga Pilipino.

Kolonyalismo at Imperyalismo: Ang Kasaysayan ng Pagsakop sa Pilipinas
Tuklasin ang kasaysayan ng kolonyalismo at imperyalismo sa Pilipinas sa pamamagitan ni Ferdinand Magellan.

Ultimate Guide to Installing Forge UI and Flowing with Flux Models
Learn how to install Forge UI and explore various Flux models efficiently in this detailed guide.