Java: rad s datotekama - pisanje, čitanje, brisanje

Java ima mnogo alata za rukovanje datotekama, jer oni služe kao skladište podataka u mnogim aplikacijama. Često je potreban pristup datotekama u Java Androidu. Sve klase za rad s datotekama nalaze se u java.io paketu, koji također pohranjuje klase za rad s ulaznim i izlaznim strujama. Strogo govoreći, u Java rad s datotekama je uglavnom zbog bajt i znak ulaz /izlaz potoci. Izuzetak je klasa Datoteka. Počnimo s tim.

Klasa Datoteka Java - rad s datotekama

Klasa datoteka izravno komunicira s datotekama i datotekama. Primjer ove klase prvenstveno se koristi za pristup svojstvima datoteka i kretanje kroz hijerarhije poddirektorija. Ne definira načine za izdvajanje i spremanje podataka u datoteku, ali s ovom klasom možete dobiti mnogo informacija o datoteci, datumu, vremenu, dozvolama i putanji do direktorija. U stvari, klasa File je objektno-specifična interpretacija datoteke ili direktorija u Javi.


Za stvaranje instance klase File, koristite jedan od njegovih konstruktora: File (String put do mape, String filename). Razmotrite osnovne metode ove klase, koje vam omogućuju da dobijete informacije o datoteci ili direktoriju:
  • getName () - vraća naziv datoteke;
  • postoji () - vraća logičku vrijednost true ako datoteka postoji, ili inače nije točna;
  • isFile () - definira, specificira objekt u datoteku, vraća odgovarajuću logičku vrijednost;
  • isDirectory () - vraća true ako je mapa;
  • canWrite () - vraća true ako je datoteka dostupna za pisanje;
  • canRead ()- vraća true ako je datoteka čitljiva;
  • setReadOnly () - čini datoteku dostupnom samo za čitanje;
  • length () - vraća veličinu datoteke u bajtovima;
  • preimenujTo (File new name) - preimenuje datoteku prema zadanom argumentu. Vraća true ako je operacija uspješna;
  • delete () - briše datoteku ili mapu (ako je prazna) označena pozivnim objektom;
  • list () - izdvaja popis imena objekata pohranjenih u ovom direktoriju kao niz nizova (odnosi se samo na direktorije).
  • Dakle, korištenje klase Datoteka pruža Java rad s datotekama i mapama.


    Rad s datotekama korištenjem klasa FileInputStream i FileOutputStream

    Nekada smo spominjali da se u Java radu s datotekama uglavnom radi pomoću I /O tokova. Tokovi bajtova za rad s datotekama predstavljeni su kao klase FileInputStream i FileOutputStream. Ove klase su nasljednici osnovnih apstraktnih klasa InputStream i OutputStream, tako da su metode ovih klasa dostupne za rad s datotekama. Prvo razmotrite FileInputStream. Dizajneri ove klase prikazani su na sljedećoj slici:
    Prvi konstruktor uzima kao argument put do željene datoteke u obliku niza, a drugi - u obliku objektnog prikaza. Iako se prvi konstruktor koristi češće, u drugom slučaju moguće je ispitati svojstva datoteke koja je dostupna u metodama klase File. Kada stvarate instancu klase FileInputStream, ona otvara ulazni tok za čitanje datoteke.
    Konstruktori razreda FileOutputStream prikazani su u nastavku:
    Situacijaslično FileInputStream, ali može prihvatiti i logičku vrijednost "append", što u pravom slučaju znači da će podaci snimljeni u konačnoj datoteci biti dodani postojećim, a kod false - doći će do potpunog prepisivanja datoteke, odnosno stari podaci neće biti spremljeni. , Pogledajmo primjer koristeći ove klase:
    Ulazna struja FileInputStream čita podatke iz bajta datoteke file1.txt pomoću metode read (). Svaki čitaj bajt je pohranjen u cijeli broj. Sljedeće u tijelu ciklusa dok je ova varijabla proslijeđena kao argument za metodu upisivanja instance FileOutputStream, koja piše primljeni bajt u datoteku file2.txt. Na kraju oba navoja obavezno zatvaranje zatvara se metodom zatvaranja.

    Klase FileReader i FileWriter

    Ako znate da kada radite s datotekama, radit ćete s tekstom, a umjesto bajtnih tokova ima smisla koristiti znak. Ove niti su predstavljene s FileReader i FileWriter klasama u Javi. Rad s datotekama koje koriste ove klase otprilike je isti kao u prethodnom slučaju. Oni su potomci klase Reader i Writer, koji definiraju osnovne metode za ulazne i izlazne podatke. Dizajneri klasa FileReader i FileWriter prikazani su na sljedećoj slici:
    Slažem se, praktički nema razlika u semantici u usporedbi s tokovima bajtova. Donja crta je da su ove klase posebno dizajnirane za rad s znakovima u Unicodeu, koji se ne mogu obavljati bajtovima. Ovako su organizirane Java datoteke. Primjer korištenja ovih klasa dat je u nastavku:
    Kao što možete vidjeti,nisu uočene razlike. Važno je napomenuti da iako su tokovi simbolički, metoda čitanja se vraća, a metoda upisivanja uzima cjelobrojnu vrijednost. Iako potpis metode upisivanja uključuje prihvaćanje argumenata tipa int, samo se 16 bitova zapisuje u tok, budući da su znakovi u Javi predstavljeni samo tim brojem bitova.

    Zaključak

    Dakle, rastavili smo osnovne klase za rad s datotekama u Javi. Važno je napomenuti da ako želite razvijati Java iz Androida, možete sigurno koristiti ovaj alat.

    Povezane publikacije