Understanding File Systems and File Management in Java
Overview of File Systems
- Disks are divided into partitions and formatted for use.
- Low-level formatting divides partitions into equal blocks to optimize disk space.
- A logical structure called a file system is created above this low-level formatting.
Types of File Systems
- Various file systems have evolved over the years, each tailored to different operating systems.
- The file system organizes files and directories, where files contain actual data and directories act as containers for files.
Characteristics of Files and Directories
- Each file and directory can have several attributes, including:
- Size: The actual size of the file versus the space it occupies on the disk.
- Ownership: Each file has an owner and a group associated with it.
- Access Rights: Common rights include Read (R), Write (W), and Execute (X).
Access Rights Explained
- Access rights can be assigned to the owner, group, and others, allowing for granular control over file permissions.
- The rights can be represented in octal format, where different combinations represent different permissions.
File Management in Java
- Java provides classes for file management, primarily the File class and
RandomAccessFile
class. - The
File
class is used for interacting with the file system, whileRandomAccessFile
allows for reading and writing data at any position in a file. - Understanding how to use these classes is crucial for effective file management in Java applications. For a broader understanding of Java programming concepts, refer to Java Programming: A Comprehensive Guide to Understanding Java and Its Concepts.
Working with Paths
- Paths can be absolute (starting from the root of the file system) or relative (based on the current working directory).
- The working directory can change based on the context in which a program is executed, affecting how paths are resolved.
Conclusion
- The video emphasizes the importance of understanding file systems and how Java interacts with them, highlighting the need for careful management of file permissions and paths to ensure data integrity and security. For more insights on file management and processes in computing, check out Gestione dei File e dei Processi in Informatica: Un'Introduzione Completa.
registrazione Va ben Allora proseguiamo sul discorso del del fatto che siamo arrivati a dire
che il nostro disco in realtà oltre a essere diviso di partizioni normalmente viene in qualche
modo preparato per essere utilizzato attraverso quello che si chiama la formattazione di un file system Quindi
c'è la format di basso livello che divide il la partizione in blocchi tutti uguali
per poter ottimizzare l'utilizzo dello spazio del disco ma poi al di sopra di questa formattazione di basso livello
Viene creato una struttura logica che si chiama file system ok e di file system vi ho accennato Ce ne sono diversi tipi
perché intanto negli anni si sono evoluti E poi perché ogni sistema operativo la pensa un po' a suo modo e
quindi crea il suo file system e il file system appunto è il sistema di organizzazione dei file su disco Ok la
coppia in realtà sono file e Directory quindi il file il contenuto di Byte veri e propri la directory è un tenitore di
file tra le caratteristiche che ha il file system è che ogni file può avere una serie ogni
file ogni Directory può avere una serie di informazioni per esempio Quindi
no informazioni del file tipicamente c'è una
Size Byte anche qui Se vi ricordate c'è la differenza tra la Size reale e la Size
di spazio occupato disco perché qualcuno si ricorda immaginiamo che io ho un file
che in cui ho inserito effettivamente 6755 by
ok Quindi questa è la sua dimensione reale Questi sono i b che effettivamente ho messo miei Ok ma lo spazio disco
occupato sarà Esattamente 6755 no perché dei Blocchi che hanno una
dimensione predeterminata che non è sicuramente all'unità ok Quindi se io avessi una formattazione con blocchi da
4 Byte questo occuperebbe 8k Ok se fosse formattato
[Musica] a a a 2 Byte Idem combinazione se fosse formato formattato a 1k Sare ne
occuperebbe 7 se fosse un formattato a 16k ne occuperebbe 16 Ok quindi uno è lo spazio reale di contenuto effettivo e
l'altro l'occupazione che ha sul disco Ok allora una caratteristica è la Size un'altra caratteristica è quella che è
la ownership ership vuol dire proprietà la proprietà
in quasi tutti i sistemi ha diciamo una doppia associazione Il vero e proprio owner ok E poi il gruppo
di appartenenza ok Quindi in realtà Eh quasi tutti i file system recenti possono attribuire al singolo
file la proprietà reale del singolo utente e poi il gruppo questo perché è possibile quindi tra le altre
informazioni dare un elenco di diritti di accesso diritti di accesso i diritti d'
acccesso diciamo i più importanti sono R Read V Write
X execute questo questi tre tipi di diritti di accesso sono tipica amente
presenti tutti i file system eh in altri in alcuni file system è possibile avere anche la la
Delete o la la
pend Cioè posso soltanto non solo perché la vite è più generica io posso andare sia a aggiungere sia a cancellare
qualcosa Ok Mentre invece se io vado in append io potrei dire vabbè sai che c'è su questo file se
nessuno può effettivamente fare dei danni cancellando i dati di un altro posso dire
che è più libero l'accesso ok Perché intanto se uno fa mette delle cose sue non va a danneggiare qualcosa fatto da
altri quindi su un file condiviso potrebbe che lascio più libertà nell append Diciamo che i i più usati e
comunque presenti in tutti i sistemi file system recenti sono questi tre gli altri sono diciamo Ci sono
alcuni file system per questo vi dicevo che non tutti sono uguali perché fanno Poi alcune differenze di
di su alcune caratteristiche un po' speciali di e execute vuol dire che dentro a un file
ci ho messo un programma e lo posso eseguire execute vuol dire Esegui Ok in qualche altro sistema magari c'è
runnable magari runn Cioè può essere
lanciato Nel senso che di per sé come Forse avete capito tutta l'informatica non sonoo altro che
dei bit ok E dipende come io li interpreto e quindi se io in un file scrivo del testo e poi gli dico è
eseguibile provo a eseguirlo ovviamente il sistema Prova a eseguirlo e si schianta perché non c'è il codice
assembler del processore ok Quindi sta all'utente dare il diritto di execute a un file che effettivamente
dentro abbia un programma ok E se io ho messo un programma ma non gli ho dato il diritto di execute Comunque
il programma il Sist Cioè il programma è eseguibile ma è la parte di sistema operativo che va a analizzare il file
che non vede il diritto di acccesso e nonan in esecuzione dice che non è permesso questo perché Perché queste tre
Diciamo tre o diciamo anche di più diritti di accesso al F sono poi differenziati qui in realtà è
moltiplicate per le tipologie [Musica]
di di associazione del tipo owner Group e
other cioè tutti gli altri nel senso che un file può essere di un proprietario
immaginiamo c'è un file di classe Ok ogni studente potrebbe avere Se avreste un file system condiviso Potreste avere
dei file che sono vostri e nello stesso tempo siccome voi siete un utente della classe quarta a automaticamente essendo
voi utenti della classe quarta a il file creato da voi è anche della classe quarta a ok e
però cosa succede che siccome voi siete proprietari potete in qualche modo assegnare questi diritti Quindi
questi diritti sono differenti tra l'utente il gruppo e gli altri Ok quindi è come se noi avessimo adesso io
sintetizzo i primi tre Perché diciamo sono più usati rvx
rvx rvx Ok allora io posso dire che normalmente i miei file sono tutti leggibili e
scrivibili Anzi mettiamo Così così Sono leggibili in verde e scrivibili ma normalmente l'eseguibile
non c'è perché perché normalmente i file non sono programmi io ci scrivo un testo un documento Word qualsiasi cosa Sono
pochi i programmi che sono eseguibili quando effettivamente ho un programma eseguibile gli vado a forzare questa
caratteristica In modo tale che lo sia quindi questo qua se è un programma gli andrò a mettere anche la x e molto
probabilmente Anzi facciamo così senò ci confondiamo Allora se un se è un programma normale se un file
normale la x non c'è se ho un programma invece eseguibile
probabilmente sarà così nel senso che il programma il sistema deve poterlo leggere per mettere
per metterlo in memoria e poi lo deve eseguire ma io non voglio che uno anche inavvertitamente vada a modificare il
contenuto del programma ok il programma andrà a scrivere i dati da un'altra parte Ma il programma di per sé è un
codice che non va modificato Ok quindi il diritto di Write anche sui miei programmi lo tolgo perché
non voglio che per errore vada a modificarne il contenuto ok E invece ai gruppi deciderò io cosa
voglio fare quindi potrei dire che Che ne so eh gli altri non c'hanno niente Quindi i miei file non sono accessibili
a nessuno ok Ah quelli del mio gruppo possono solo magari alcuni leggerli ok e basta non possono Né modificarli né
eseguirli poi se c'è un programma Scus se voglio permettere abamo detto che mettiamo gli permetto di leggere e non
gli permetto di scrivere né di eseguire quindi decido file per file in base alle
caratteristiche che che voglio che abbia di accesso vado a determinare sia gli accessi miei perché vado a
togliere eh dei diritti quando inavvertitamente potrei fare dei danni ok oppure che ne so Ho un file anche mio
ma in cui ho messo dei dati importanti e non voglio inavvertitamente cambiarli gli vado a togliere il diritto di
scrittura Poi è ovvio che se per caso diventano da modificare Allora gli ridò il diritto di scrittura lo modifico e
poi glielo ritol Ok questo mi evita di modificare inavvertitamente il contenuto di un file che invece magari contiene
dei dati importanti OK e quindi con questa Terna che tra l'altro se voi usaste dei se voi per
caso userete dei sistemi unix questi qui è come se fossero dei bit
OK e quindi a seconda se ho questo diritto o Questo no questo no avrò dei numeri decimali anzi in realtà dei
numeri Eh alla fine in ottale Perché sono tre se ho tutti e tre a un che numero
avrò set Ok quindi dare il diritto 7 vuol dire che gli do tutto se se do il diritto 6
Leggi e scrivi ok in sola lettura sua lettura 4
ok Infatti nei sistemi unix in realtà la terna se io voglio fare dare i diritti di accesso a un certo file normalmente
si fa 640 Per esempio questo vuol dire che io come proprietario posso leggere e
scrivere il mio gruppo può leggere gli altri non possono far niente Ok se lo voglio tutto per me e
non voglio che nessuno ci acceda faccio 600 se è importante Non voglio fare cavolate Lo metto in
400 Ok per i Domi per me e nessuno accesso agli altri per esempio ci sono dei file riservati
che contengono le password e cose di questo genere e i programmi pretendono che siano
impostati in se in 400 se non sono in 400 il programma ve lo segnala e vi dice no dovete
impostarlo in quel modo sennò proprio per venirvi incontro dire Ok ci hai messo dentro i dati di password eccetera
però adesso lo devi proteggere perché altrimenti qualcun altro potrebbe nel sistema Se un computer
condiviso andare a ad accedere ai vostri dati sicurezza Quindi Queste sono delle
caratteristiche alcune delle caratteristiche che ci possono essere dentro a a
un a un file rispetto a quello che vi permette il file system Eh quindi nella formattazione del file system tutte
queste informazioni sono ovviamente scritte da qualche parte quindi vuol dire che ogni volta che voi create un
file un pezzettino di disco viene riservato per mettere queste informazioni ok perché deve essere
possibile averle memorizzate associate al file quindi nel file voi mettete i dati che vi interessano
ma senza che lo sappiate il sistema operativo mette queste informazioni sono delle caratteristiche di specifiche
sul sul file per accedere operazioni di questo genere
ehm le director invece cosa sono alla fine in realtà È come se voi aveste un una tabella in cui ci sono c'è il nome
del file e poi c'è il punto del disco in cui cominciano i dati veri e propri
ok E poi vabbè realtà prima di questo anche queste informazioni di in genere son dipende dal System in
certi casi queste informazioni sono dentro alla Directory e in certi altri sono dentro al file in realtà dipende da
come è fatto il file system in realtà potrebbero essere qui e poi esserci il puntatore oppure nel dove c'è
il vostro file ci sono le info e poi ci sono i vostri Byte Ok quindi la directory
Directory di per sé è come se fosse un file o meglio in realtà è un file L'unica cosa è che è un file speciale su
cui voi non potete andare ad aprire e a modificare il contenuto perché è un file che è sotto la giurisdizione del
sistema operativo Ok Poi in realtà non è vero che non potete proprio farlo nel senso che se voi faceste delle
operazioni di basso livello in cui andate ad aprire il disco a lavorarci sui bte direttamente senza diciamo
utilizzare il sistema operativo per farne l'accesso potreste andarci a a mettere mano ed è il funzionamento che
hanno in genere le utility che vanno a controllare che so Fi cancellati che invece volete recuperare eccetera quindi
in realtà il disco non è che non è leggibile È ovvio che se io ci Accedo e comincio a metterci mano Poi
potrei rompere il corretto funzionamento perché vado a fare dei danni ok e quindi normalmente uno accede tramite
il sistema operativo che sa Come'è fatto il F System e va a mettere opportunamente le le informazioni dove
serve Ok però di per sé questi sono dei bik su disco e quindi se se volete metterci mano teoricamente lo potete
fare ok ovvio che a vostro rischio pericolo ok eh detto
questo arriviamo a capire come utilizzarlo questa cosa Ok allora noi nella gestione dei file
vedremo fondamentalmente due classi Java Ok che sono la classe file guarda caso il nome piuttosto Facile da ricordare e
poi un'altra che è Random Random Access file
in realtà classi Java che operano sui file ce ne sono tante Ok Quest Allora la classe file è la
prima e diciamo Quella è effettivamente universalmente utilizzata e adesso vi spiego perché e non ha
particolari alternative ed è quella che vi permette di lavorare sul file system quindi non mi risulta che ci siano poi
magari questo Java è ancora evoluto quindi può anche darsi che ci sia qualcosa altro però non
credo E se c'è c'è poco altro e questa è quella che serve per che è la prima che studieremo che serve per lavorare sulle
sui file su Directory quindi sul file system del sistema invece la Random Access file è quella che serve a
lavorare sul contenuto del file Ok quindi sui Byte veri e propri all'interno di un file
e in questo caso di classi Java ce ne sono parecchie Nel senso che ci sono
soprattutto classi che hanno diciamo degli usi più specifici quindi a seconda di come Dovete usare il contenuto di un
del file sono state realizzate delle classi partic Parolari soprattutto anche dal punto di
vista della ottimizzazione delle prestazioni l'uso di bufferizzazione
cioè la bufferizzazione vuol dire che dove tutto dove'è possibile tengo delle informazioni nella RAM che come vi ho
spiegato è una memoria molto più veloce rispetto a quella del disco anche se i dischi di oggi sono praticamente veloci
quindi questa ottimizzazione aveva particolarmente senso quando c'erano i dischi magnetici o quando si usano
ancora adesso i dischi magnetici qui il disch è stato solido l'ottimizzazione c'è ma non esagerata Sta di fatto che
comunque portano a dei miglioramenti di prestazione soprattutto se unoe fare tantissime operazioni su sui file
e utilizzare poi una classe piuttosto che un'altra è abbastanza
una volta che uno ha capito come funzionano i file è abbastanza facile Il vantaggio di usare questa è che è quella
che vi vi dà una visibilità più a basso livello del file quindi è quella con cui potremo fare delle operazioni
abbastanza versatili cioè possiamo fare quasi di tutto con questa Random Access file si e dal punto di vista del Java il
modo più a basso livello per lavorare sui byte di un file per esempio a dei metodi in cui io posso andare avanti a
scrivere a crescere come anche tornando indietro sovrascrivere eccetera per esempio ci sono delle classi Java che
lavorano sui file che sono solo performanti se io vado ad aggiungere dei dati Ok meno se io devo andare a
modificare Però nell'aggiunta sono molto più performanti che non una Random Access file o in certi casi magari potrà
anche darsi che sotto utilizzino Random Access file e c'hanno scritto sopra degli strati software per migliorare le
prestazioni OK e quindi in realtà non facciamo una uno studio esaustivo delle varie classi
perché comunque l'importante è capire bene come funzionano i file e poi a seconda delle esigen
se avrete occasione userete una classe piuttosto che un'altra ok Quindi affrontiamo
inizialmente questa classe la classe che serve per interagire con il F System Quindi con questa struttura qua che
abbiam visto la volta scorsa Quindi la struttura syst è un qualche cosa che è diviso cioè che mi permette di
organizzare il disco con una l ad albero rovesciato quindi ho una radice un punto principale e poi si divide tutto in
modo come a seconda di come io l'ho organizzato questa organizzazione per esempio è già una
delle cose che non posso anche se Java cerca di essere standard perché come vi ho spiegato più volte Java ha vantaggio
di poter dire faccio un programma in Java e lo uso in tutte le piattaforme ok Quindi che ne so lo faccio per Windows e
poi lo stesso programma lo uso su su Apple oppure su lo uso su un mainframe o su un server di rete unix eccetera in
genere sì nel momento in cui io devo andare invece a interagire con il file system e questo purtroppo non posso
farlo perché cioè ovvio che il programma Java funziona ma devo andare dentro ai comandi di Java mettere qualcosa che è
specifico comunque del file system che vado a usare e adesso vi spiego perché perché per esempio voi usate
sempre Immagino la maggior parte di voi usi Windows e i dischi sono organizzati con delle lettere ok Quindi avete il
disco C2 punti E che ne so disco di due punti Se ne avete due e Potreste avere un altro disco che ne so e due punti
e all'interno di questi dischi c'è l'organizzazione ad albero ok Quindi ogni disco ha il suo file system e il su
System è comunque esplicitamente distinto uno dall'altro questa cosa per esempio sia
nel mondo Apple che ne mondo Linux o sui mainframe non è vera Nel senso
che la radice dell'albero de dei dati in quei sistemi è una sola quindi non c'è
differenza sui dischi fisici ma c'è soltanto la radice che è Slash quindi la radice Slash e poi tutto
è sotto questa radice e Voi direte Ma se io ho più dischi come funziona in questo caso i
dischi vengono agganciati nella eh struttura ad albero generale Quindi
se io a un certo punto ho eh immaginate che questo sia il vostro equivalente al disco C Ok il disco principale Se voi
avete un secondo disco dovete decidere nella struttura principale del primo disco cioè del
disco principale dove andare a agganciare il secondo quindi che ne so quello che succede in genere è eh vi
parlo S del mondo Linux che del mondo Apple in genere Qui c'è una cartella che si chiama
m NT che è l'abbreviazione l'acronimo di Mount ok Quindi quando io aggancio un disco si dice che monto un
disco quindi Mount disk o unmount sgancio il disco ok anche un disco anche una chiavetta in realtà Cosa succede se
voi inserite una chiavetta in Windows c'è un'altra lettera di un altro disco Ok nel mondo Linux e Apple sul mainframe
non è così quando io Inserisco una chiavetta o automaticamente o in modo esplicito viene montata nella struttura
generale ok per cui la radice è sempre una sola e quindi la monto e quindi qui poi io gli do posso dargli io il nome
che voglio Ok che ne so questo lo posso chiamare chiavetta e quest'altro e qui ci sono
tutti i dentro la chiavetta da qui in giù e poi magari invece qui ho disco 2 disco 2 che è il mio secondo disco in
cui ho messo delle altre cose ok Quindi queste cose sono completamente separate Quindi questo
è un disco E che ne so è questo è un altro e e
[Musica] quest'altro un altro non ce l'ho Vabbè e questo è Quello
principale la radice è una sola ed è Slash Ah questo è ancora
ovviamente del principale quando io faccio la Mount e sgancio disco tutto quello che c'è qua
sotto sparisce ok perché tolgo il disco e quindi tutta la sua
struttura una cosa importante da dire mentre parlo di come fatto e organizzato F System è
questa allora anche se sono agganciati nella stessa struttura sono fisicamente dei
diversi e quindi all'interno e quindi ogni disco ha il suo file
system allora nel mondo Windows non credo che si possa fare nel mondo unix addirittura si potrebbe fare questo io
potrei avere il file system principale che è un F System unit Ok poi aggancio chiavetta questa
chiavetta l'ho formattata su Windows e questo è un file system Windows Ok quindi è vero che io lo vedo
come struttura organizzata tutta unica quindi in realtà i percorsi quando l'ho agganciato proseguono se io qui avessi
Eh una cartella che si chiama esercizi Ok la cartella esercizi è dentro la chiavetta ma dopo che l'ho
montata io nel mio F System principale avrò SL mnt chiavette esercizi Quindi il percorso
Ok lo posso ottenere partendo dalla radice che è la radice del file system principale e Poi
proseguo entrando nel file system che ci sta sotto ok La cosa da tener presente però che
comunque i f System sono separati e ve lo dico per questa caratteristica di cui verrà fuori quando ne parliamo più
avanti Entrando sul dettaglio dei file i file in certi sistemi possono essere
spostati da una cartella a un'altra ok Quindi se io immaginiamo qui avessi il file qui con dei dati che ne so è un
film ok qui magari Ho 2 GB del film film 1 ok e decido di riorganizzare le cartelle e questo film lo voglio
spostare di qua Ok siccome vi avevo disegnato lo trovo questa cosa qua
Allora siccome le Directory sono una anche loro dei file con una tabellina che ha il nome del
file e il riferimento a Dove si trova il file dei dati Ok quindi immaginiamo di avere quella cartella là Qui c'è scritto
film 1 Eh aspetta cancelliamo Qui c'è scritto film 1 che è
il nome del del del film e qui c'è il riferimento dove il mio file film 1 contiene Effettivamente tutti i dati
della registrazione se io voglio spostare in un'altra cartella vuol dire che ci sarà da un'altra parte un'altra
cartella in cui posso mettere le cose se faccio un spostamento Ok che normalmente prende il termine di Move cioè sposto un
file in realtà cosa viene fatto se sono nello stesso file system questo riferimento
qua come i puntatori nella memoria Ram in realtà è un numero che so 722 che è il numero del blocco della
formattazione dove cominciano i dati vi ricordate il file system è diviso in tanti blocchi Ok tutti a immaginiamo 8k
ok E sono numerati come se fosse un vettore da Zer a Alla fine
ok Quindi il file Cosè fatto da un nome alcune sue caratteristiche e poi il numero del blocco in cui comincia quindi
il primo blocco del file poi se il tuo file è 8 Gig saranno tanti blocchi da 8k concatenati Ok però io ho il primo
dentro la directory se io devo spostare il file da una Directory all'altra semplicemente vuol dire che devo
togliere questa riga da qua ok e in un'altra cartella scrivo la stessa cosa magari anche con un nome
diverso Ok invece che film 1 lo chiamo registrazione 1 ok E poi mentre fa la Move scrive sempre 722 di qua
che equivale ad avere il riferimento allo stesso blocco di dati Ok quindi spostare un file fare
la Move di un file dentro un file system vuol dire semplicemente che cancello il nome e le
informazioni del file da una Directory che è un file e le vado a scrivere dentro un'altra Directory tenendo per
buono il riferimento a dove iniziano i dati veri e propri Ma questo è possibile solo se io
sposto i file all'interno dello stesso file system perché in quel file system il numero dei Blocchi sono sotto il mio
controllo Ok se io questo file lo dovessi trasferire da qua a qua Ok essendo un altro file system
non posso fare semplicemente quell'operazione perché devo anche prendere tutti i blocchi di dati e
spostarli fisicamente nell'altro disco perché se io copiasse soltanto il nome del file è il mio 722 che è il puntatore
Ma questo 722 è il numero del blocco in quel F System lì e chissà che cosa Celli ok Quindi quando attenzione questo è
molto importante e magari uno dice Ah ho fatto uno spostamento di un file eh all'interno di C il mio film l'ho
spostato TAC in un attimo è avvenuto velocissimo l'ho spostato sul secondo disco ci ha messo qualche minuto e vo
dire come mai per quello perché lo spostamento all'interno del file system cambio solo il nome lo tolgo da una
parte lo metto dall'altra il riferimento dei dati è lo stesso se io invece lo sposto da un disco a un
altro anche se io non chiedo la copia Ma chiedo lo spostamento in realtà deve fare una copia e poi cancellare
l'originale Ok quindi questo attenzione mentre parlavo di questo sembra momento giusto di spiegarvelo quindi il F System
ha questa organizzazione cioè il nome associato al puntatore di dove inizo i dati veri e propri quindi spostare un
file all'interno del System è immediato spostare St file da un file system ad un altro file system vuol dire copiarci i
dati Ok ok Eh detto questo allora sì dicevamo
dobbiamo affrontare la classe file andiamo a prendere la documentazione che avevo preparato
qua è questa Quindi come al solito Andate su Java api eh Eh quindi la ricerca che ho fatto è questa Dov'è No
Ah no vabbè la la rifaccio par vedere Java api doc doc e Java platform se orc eccetera andate
qua se mi risponde dai qualche problema di rete
Ah Vabè e ok Vabbè interrompiamo un attimo per l'intervallo
Dov'è la registrazione qua quindi allora qui si entra nella documentazione di Java
e siccome le operazioni su disco sono le operazioni di gli input output Se non ricordo
male in questa parte qui c'è l'elenco dei package no Quindi raggruppamento per Directory di tutte le classi che hanno
una certa coerenza seleziono questo qua sotto mi evidenzia solo le classi di quel tipo e
infatti vedete che qui tra le classi c'è file una e più avanti random maess F che sono le due
che useremo e quasi tutte queste sono operazioni che possono
lavorare su su file o canali di scrittura e lettura quindi per esempio questa file Reader è
una classe che è solo per leggere no ed è ottimizzata per leggere c C'è file writer solo per per scrivere quella che
vi spiegherò io invece fa tutto Ok quindi parliamo una con cui potenzialmente si fa tutto poi a seconda
dei casi potrebbe essere preferibile scegliere qualcos'altro Eh quindi Cominciamo con la classe file
seleziono questo e eh qui ci dà la spiegazione Eh la classe è direttamente derivata da
object quindi una classe primaria e c'è tutta una spiegazione e poi ci
sono Vabbè quese sonoo dei campi statici Ne parleremo Poi più avanti e la cosa importante da da capire subito
è come usare i costruttori Ok i costruttori non esiste il costruttore senza parametri ok Quindi
comunque devo usarne devo metterci dei parametri uno o più di un e quello che si usa
diciamo inizialmente che più facile è questo ok file parametro di tipo String che è il part name e quindi a questo
punto dobbiamo fare una piccola spiegazione su part name
teorica allora Pat name Che cosa vuol dire Pat name e che tipi di patn ci sono
Pat name la traduzione letterale è il nome Il
nome di un percorso Ok il percorso che cos'è è l'insieme
di Directory che devo percorrere per arrivare al file o al Directory che mi interessa
ok E qui abbiamo due tipi di Pat name assoluto e relativo E il relativo relativo a che
cosa alla Working Directory Allora po name assoluto
inizia dalla radice del file
system quindi e questo cambia seconda se siamo su file system unix o su file system Linux quindi su Windows che ne so
C du punti eh utenti il mio che è Lorenzo e poi
Esercizi esercizi Java eh esercizio 1 esercizio
1 Java faccio esempio ok Questo Pad name assoluto comincia dalla radice
del del file system se io ce l'avessi su su unix probabilmente sarà slash Home
users Anzi SL users East SL users e
slash Lorenzo eccetera ma comincia
da slash ok E invece questo comincia da C ah
dai due punti slash Che cos'è com'è invece P relativo è che
cos'è la Working Directory letteralmente la Working directory è la cartella in cui io sto lavorando e questo cartello
in cui sto lavorando dipende da dal programma che sto usando eccetera quando se non so se vi è capitato di
usare Se io uso se interagisco con il sistema operativo tramite un terminale a
caratteri quindi non in modo grafico in cui apro le cartelline cliccando su sulle cartelle eccetera
facciamo un esempio così che magari qualcuno non non è abituato a vedere queste
cose cioè se io ho il mio F System se io V su C2 punti vado graficamente qui sono utenti faccio
doppio click Lorenzo la mia cartella faccio doppio click qui ho tutte le mie cose no
quindi questa è un interazione grafica se io interagisco da Command line che è tramite un terminale a
caratteri il il terminale mi permette di lavorare sul sul disco spostandomi di cartella ok E
qui a sinistra mi dice In che cartella sono quindi adesso sono in C2 SL Ok cd che è il comando che dice Change
Directory cambia Directory se io metto users vedete Mi sono spostato sotto la cartella users se
guardo cosa c'è qua dentro che è il comando dir vedo che ci sono è troncato Loren
invece che Lorenzo è Public se io faccio CD Loren vedete che mi sono spostato nella
cartella C2 sluser Loren ok E cosa c'è qua ci sono le stesse cose
che io vedo qua Quando ci sono andato graficamente Ok ma ci sono andato con il terminale Nel terminale in questo
momento se io C'è un comando che Print Working Directory pvd mi dice qual è la Working Directory in questo momento
Quindi Directory in questo momento la mia è C users Lauren Ok se io lancii un programma Java adesso
da qua il programma Java avrebbe come Directory corrente C2 punti users Loren
se io mi sposto invece dall'altra parte quella è la cartella Se invece usate l'ambiente
Java di un programma di un ambiente Ide tipo intellij o netb doveste
controllare In quale cartella work Directory in genere potrebbe essere o la cartella in cui è stato
installato la parte utente non applicativa quindi la parte dati o la cartella in cui
o il problema è che in realtà poi è anche possibile anche in Windows dire che quando parte un programma anche
graficamente impost naturamente Potete dirgli fallo partire in questa cartella invece che in un'altra ok qui in realtà
adesso non so se qui probabilmente se io guardo CD idea Projects CD
scuola ok questa per esempio se io lancio intellij vediamo se è vero se io lancio intellig
Ok adesso sono in un certo progetto eh qui c'è il simbolo di terminal se cliccate qua mi apre un
terminale e vedete che questa qua è la cartella di lavoro Ok Se io qui faccio pvd mi dice che la Working directory è
questa Ok quindi intellij Imposta come cartella di lavoro la
cartella dentro cui avete il progetto quindi qui dentro Poi ci sono le cose che graficamente vedete qua
no i package le cartelle SRC se io vado CD SRC poi faccio dire c'è main e test che sono queste due cartelle che ci sono
qua graficamente main e test ok se vado faccio CD [Musica]
main c'è Java eccetera Ok comunque la la home Directory la la Working Directory di
dell'ambiente di sviluppo in genere è quella del progetto Ok quando lanciate il programma Java Se
non l'hanno aggiunto recentemente S posso documentari un attimo velocemente Eh lo cerchiamo qua così vedete i
risultati della ricerca Ok sì forse si può fare è un un'operazione un
po' un po' più banale che impostando delle proprietà di sistema quando il programma è partito
dovrebbe essere qualcosa del genere se settando property Diciamo che non è così oppure quando lo lanciate impostate user
Dear e eccetera Però diciamo che tendenzialmente non è un'operazione
così eh facile ok Quindi quello che dovete capire quando lanciate un programma qual è la
vostra erator per poter usare i Pat i Pat name di tipo relativo eh Poi in altri linguaggi ci sono proio
dei dei comandi apposta per cambiare la work director quindi in C per esempio è molto facile cambiare la Working
Directory quindi il programma parte in una cartella poi potete cambiare la Working Directory
opportunamente Sta di fatto che il fatto che possiate cambiarla o non cambiarla tornando
all'argomento è che il Pat relativo è un Pat appunto che parte dal posto in cui siete
e questo uno dice ma tanto vale c'è il Pat assoluto usiamo quello assoluto il problema è che se io dovessi fare tante
operazioni qua sotto Ok io sono nella mia cartella Java e io lancio il programma esercizio 1 ma poi devo fare
il file di dati file 1 file 1 file 2 eccetera quindi devo fare dei file di documento sempre in questa cartella Se
tutte le volte devo mettere tutta questa sbrodolata di coro diventa un po' lungo e noioso OK e quindi Spesso si usano dei
percorsi di tipo relativo Ok In modo tale che a quel punto è soltanto il nome del
file poi in realtà potrebbe non essere solo il nome del file perché magari io questi file se il mio programma è qua
magari tutti i miei dati delles izi li vado a mettere in una sottocartella dati ok Quindi in realtà sarebbe C
utenti Lorenzo esercizi Java dati e poi qui ci metto file 1 dati F du eccetera
quindi cosa succede che se io ho il Pat relativo e ho una sottocartella è sufficiente che io metta il nome della
cartella e il nome del file senza tutto quello che ci sta prima quindi il Pat assoluto comincia
sempre con la radice Ok la Rot
Directory invece un Pat relativo comincia con un nome di Directory o direttamente il nome di un
file ok Eh sui Pat c'è da aggiungere ancora un una cosa
particolare che probabilmente non vi è mai capitato perché è rarissimo che uno lavori da
terminare i percorsi possono avere [Musica] anche cioè Esistono delle cartelle
particolar che si chiamano punto punto che in realtà sono delle cartelle fittizie che fanno riferimento alla
risalita Cioè se io ho slash dir 1 dir
2 dir 3 e qui poi ho ancora dir 1.1 e dir 1.2 e qui diciamo
dir 1 eh scusate 3 1 Allora il Pat assoluto di questo
è adesso lo faccio con unix oppure mettiamo C2 punti va C2 punti SL dir1 SL dir
1.1 Ok e se qui avessi il file a ci sarà slash file
a Ok se questa se dir 1o è la mia Working Directory ok
Il Pat relativo di questo quale sarebbe se questa qua è la mia Working Directory Qual è il Pat relativo di file
a no Senza slash perché la slash vuol dire che parto dalla radice Ok quindi un p
relativo non ha mai Lo slash iniziale e neanche il drive ok Quindi sarà dir 1.1 SL file
a Se io avessi un file V qua Il Pat relativo sarebbe
dir 1.2 SL file B bene facciamo un altro esercizio spostiamo la Working Directory dentro a
dir 1 Ok quindi la Working Directory non è più qua ma la Working directory è qua
dentro ok ripensiamo ai percorsi file a come patn assoluto a cosa
Uguale come prima Perfetto Ok Quindi il vantaggio di un pnem assoluto che io mi sposto dove voglio è sempre quello ok
Quindi anche se sono in dir 1 1 Il Pat assoluto è C due punti dir 1 dir 1 1 file a invece il Pat relativo di file a
qual è È solo F là ok adesso la cosa un po' più complicata
come faccio a mettere il P relativo di file B Allora cosa devo fare devo
risalire Allora in tutte le directory è presente sono presenti due due file anzi che in realtà sono due director speciali
che sono Directory punto Directory punto punto Ok vediamo se si vedono
qua se io li guardo qua Ah questo non lo fa vedere e Windows Ah sì perché devo fare forse slash a no slash h
No come non mi ricordo più mi ricordo il Windows uso talmente poco
eh Allora ve lo faccio vedere nell'altra nell'altro terminale che è stile che è
stile Linux in Linux in unix la dir che Visualizza il contenuto in realtà è l
LS quindi qui sono in Home Loren ok come prima e vedete che i file sono sempre gli stessi ma se vedete
qui ho intanto quella cosa che vi spieg dei diritti di accesso vedete rvx r-
x-- Questo vuol dire che questo file qui prendiamone uno Allora questo file di configurazione è leggibile a tutti e
da me è scrivibile questo qui invece è leggibile e scrivibile da me ma nessun altro può
farci niente la x E vabbè la x nel caso delle se c'è d vuol
dire che è una Directory ok e la x nel caso de Directory vuol dire
non vuol dire che può essere eseguita la directory ma vuol dire può essere passata
attraverso Quindi io posso entrare nella Directory se se ho la x detto questo vedete che ci sono questi
due queste due directory str che sono punto e punto punto in realtà ci sono anche dentro a
Windows Quindi anche se io faccio così faccio CD punto punto vedete che è
salito perché vi stavo per dire queste due directory strane hanno uno strano comportamento del tipo la
diret di punto fa riferimento a se stessa Ed è un uso molto strano Direi molto molto raro la
directory invece punto punto è molto più utile è molto più usata e serve per fare riferimento alla cartella
sopra quindi il percorso relativo del file D in questo caso sarebbe punto
punto vuol dire da dir un su e poi scendo in dir 1 2 dir 1.2
SL file B ok Quindi col punto punto da qui sembra di scendere ma in realtà sto
salendo quando sono qua dentro c'è la cartella ti1 2 e poi c'è quest'altra se volessi risalire in modo relativo se
volessi mettere un Pat assoluto per il file qua
file C Allora il Pat assoluto del file C quale sarà C due
punti dir 3 3 dir 3.1 slash F
C se la se sono in questa Working Directory quale sarà
come Sì sì quella rossa no si dice punto punto eh Ok
ok Quindi vedete che in alcuni casi tipo questo o quello che c'era prima in cui
scendevo di una cartella era comodo il pad name di tipo relativo in questo
caso potrebbe essere ancora comodo se sono giù di tante cartelle perché già per esempio nel
progetto qui vedete che se io da qui dovessi andare solo nella sottocartella in un'altra sottocartella di SRC è
sicuramente conveniente mettere un Pat relativo punto punto perché qui di cartelle da da scrivere ce ne sono tante
Ok ma in un esempio come questo invece andare nella
cartella che è tanto lontana ma più vicina alla alla radice conviene mettere il patter di
tipo assoluto per esempio una cosa che si fa spesso in unix una delle cartelle in cui si
mettono tutti i dati temporanei è sotto slash tmp Ok nei sistemi unix la cartella
sotto la radice quindi slash la radice c'è sempre una cartella tnp in cui tutti possono
scrivere e quindi quello è il posto tipico dove io vado mettere dei file temporanei e allora si usa un
file un patn di tipo assoluto perché vado dritto è un percorso breve e so che è facile metterci delle cose anche in
Windows Potrei essere in una qualsiasi sottodirectory spesso c'è c Windows Windows
SL Temp vediamo se è vero dovrebbe esserci sempre
se i vado [Musica]
C Windows Ok vedete Temp Ah in questo caso ci vogliono i
diritti per scriverci è strano adesso un grandissimo utente di di
Windows Comunque quando studiamo adesso poi la classe Java vedrete che in Java internamente a Java c'è un po' c'è un un
metodo apposta per lavorare sui Fi temporanei e ci pensa Java a trovare il posto
giusto Va bene Allora io direi che facciamo ancora solo visto che vi ho introdotto i
Pat e spiego ancora solo più questa cosa allora il costruttore si fa mettendo il
pad name ok E il pname può essere assoluto o relativo Quindi quando per creare un oggetto
metto file file 1 questo come sempre è un puntatore Che
punta null ok E poi lo create facendo file 1 uguale a new
file e qui ci mettete tra virgolette a vostra scelta o un p relativo che ne so dir 1.2
SL file C Anzi no quello era file a oppure C2 pun
SL users SL eccetera Allora una cosa importante che devo
spiegare e che vi deve entrare assolutamente in testa questa qui stiamo lavorando su degli elementi Java ok
Quindi questa è una classe Java ok Questo è un puntatore quando faccio New cosa
creo un ogetto Java Ok attenzione questa New non ha niente a che vedere col fatto che sto creando un file su disco ok Ho
creato un oggetto Java
di tipo file fai vederci questo non non ha niente a che
vedere sul fatto che il file esista o no ci sarà e lo vedremo un modo esplicito per vedere cosa c'è sul disco Ok ma
questo ha soltanto creato un oggetto file immaginate come se fosse un oggetto che contiene solo la
stringa di testo Ok quindi la vostra operazione quindi il vost la vostra il vostro puntatore file 1 che è un
puntatore in memoria Ok inizialmente Vale null Quando fate new file e gli mettete una stringa di testo lui va a
cercare un'area di memoria in cui ci stia quel testo lì ok Quindi qui dentro alla classe file
credo che ci sia una variabile della classe che credo sia Pat name adesso lo andiamo anche a
cercare vedere se è vero e qui ci scrive C du punti slash eccetera eccetera eccetera Ok Questo è un oggetto quindi
questo Val un indirizzo 7211 e quindi qua si finisce 721 1 e quindi il vostro
oggetto il vostro puntatore punta un oggetto che ha dentro la stringa di testo e
basta Vediamo se riesco a trovarlo Tanto per curiosità eh Java
sources Class filea più facile provarlo forse questo
No forse fai il punto di Peccato Forse Vediamo se forse se faccio un piccolo programma dentro intellig
riesco a vederlo Andiamo sui vostri progetti così intanto Faremo delle cose
sicuramente in una in un package che chiamamo files Camo un nuovo progetto
se io qui faccio Static Void ovviamente qua devo
includere eror come mi fa la Import
Vabbè ogni tanto viene fuori sottolineato ogni tanto Ok ce
Anzi Mettiamoci la cartella così però se io faccio questo
Ok intellig vi permette di andare direttamente sui soggetti di Java vedete quindi questa è la classe è
la classe file scritta in Java ok E tra i dati che ci sono
diciamo il principale è questo che è la una stringa che contiene il P quindi l'oggetto che voi
create avrà questi campi solo questi tre anche questo FS
Pat Eh questo è un quindi non è scritta dentro e status ok Quindi questi quattro Alla fine gli altri non credo che li
useremo quello fondamentale è questo quindi è come se voi creaste un oggetto che dentro ho una stringa di testo
quindi non c'è ancora niente relativo al disco di di competenza ok Quindi in realtà tutte le
operazioni che si faranno saranno fatte attraverso dei i metodi che sono qua dentro ok Quindi dentro questa classe ci
sono tutti i metodi che fanno delle operazioni che vi spiegherò di operazioni sul disco
guardiamo il costruttore visto che qui abbiamo a disposizione sorgenti e come vedete quello che io vi ho vi ho fatto è
questo in cui voi Passate il pad name che può essere assoluto e relativo se uno passa uname
Nullo Guardate il solito modo che io vi dicevo quando uno come faccio a controllare il dominio di un dato Se uno
mi sta passando un valore che non voglio l'unico modo non è che scrivo all'utente con
una System out eccetera genero un exception ok E quindi qui dico che è stato passato in realtà forse io avrei
messo una c'è un exception parameter exception qualcosa del genere
avrei scelto il fatto che è stato dato un parametro scorretto però va bene anche po quindi se voi Passate un PN che
è una stringa Quindi è un puntatore se gli passate null lui si protegge E dà un ex
altrimenti Chiama una cosa che normalizza il percorso nel senso che lo lo rende compatibile diciamo come
stringa e che per esempio credo che potrebbe essere che faccia una trasformazione se voi mettete i back
slash li trasforma in slash qualcosa del genere se vogliamo possiamo anche andare a vedere
e e poi si salva questo prefisso che non vediamo della normaliz cosa fa
Ah no eh Probabilmente questa è è una è una cosa stratta perché probabilmente a
seconda del file system viene implementato diversamente e quindi dentro la Class dentro questo non
c'è perché è specifico per l'architettura su cui viene installato Quindi comunque
tornando a noi ente qui in questo caso avendo fatto questa operazione L'unica cosa che ho fatto è ho creato un oggetto
e dentro c'è finita questa stringa di testo eventualmente leggermente manipolata ma alla fine è
questa Boh direi che inutile che inizio le cose a metà adesso e proseguiamo Poi la prossima settimana
ok Ci sono domande fondamentale questo concetto è che voi non State creando un file State
creando un oggetto Java Questa è la base fondamentale su cui ragionare Perché spesso uno quando comincia quello Ah
questo ho creato new file automaticamente c'è un file dietro no ok Questo è un oggetto e basta associato a
una stringa su cui poi si possono fare delle operazioni che vedremo ok
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.

Analisi dei Metodi di Gestione dei File in Java
Il video fornisce un'analisi dettagliata dei metodi di gestione dei file in Java, spiegando le differenze tra metodi statici e dinamici, e come utilizzarli per operazioni sui file. Vengono presentati vari metodi, come 'createTempFile', 'exists', 'canExecute', e altri, con esempi pratici e spiegazioni sui diritti di accesso ai file.

Java Programming: A Comprehensive Guide to Understanding Java and Its Concepts
Explore Java programming concepts including OOP, exception handling, and collections. Learn how to build robust applications!

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.
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.