Java: pracovat se soubory - psát, číst, mazat

Java má mnoho nástrojů pro správu souborů, které slouží jako datový sklad v mnoha aplikacích. Často je vyžadován přístup k souborům v jazyce Java pro Android. Všechny třídy pro práci se soubory umístěné v příbalovém java.io, kde jsou třídy také uložena pro vstup a výstup streamování. Přísně řečeno, v jazyce Java se soubory pracuje hlavně s bajtovými a znakovými vstupními /výstupními toky. Výjimkou je třída File. Začněme s tím.

Třída File Java - práce se soubory

Třída File interaguje přímo se soubory a soubory. Instance této třídy se primárně používá k přístupu k vlastnostem souborů a přesunutí podadresářových hierarchií. Není jisté, jak extrahovat a uložit do souboru, ale s touto třídou můžete získat mnoho informací o souboru, datum, čas, oprávnění a cestu k adresáři. Ve skutečnosti je třída Soubor objektově specifickou interpretací souboru nebo adresáře v Javě.


K vytvoření instance souboru, za použití jednoho ze svých konstruktérů: soubor (String cestu ke složce, String jméno souboru). Podívejme se na základní metody třídy, můžete získat informace o souboru nebo adresáři:
  • getName () - Vrací název souboru;
  • existuje () - vrací true, v případě, že soubor existuje nesprávné nebo jinak;
  • isfile () - specifikuje objekt body do souboru, vrátí příslušnou logickou hodnotu;
  • isDirectory () - vrací true pokud je složka;
  • canWrite () - vrátí true, pokud je soubor dostupný pro zápis;
  • canRead ()- vrátí true, pokud je soubor čitelný;
  • setReadOnly () - dělá soubor pouze pro čtení;
  • length () - vrátí velikost souboru v bytech;
  • renameTo (File nové jméno) - přejmenuje soubor podle předaného argumentu. Vrací true, pokud je operace úspěšná;
  • delete () - Vymaže soubor nebo složku (pokud je prázdná) označená volajícím objektem;
  • seznam () - výpis seznamu názvů objektů uložených v tomto adresáři jako pole řetězců (platí pouze pro adresáře).
  • Tudíž pomocí třídy File poskytuje Java práci se soubory a složkami.


    Práce se soubory s využitím tříd FileInputStream a FileOutputStream

    Použili jsme zmínku o tom, že v Javě pracujeme se soubory hlavně pomocí I /O toků. Bajtové toky pro práci se soubory jsou reprezentovány jako třídy FileInputStream a FileOutputStream. Tyto třídy jsou dědicové základních abstraktních tříd InputStream a OutputStream, takže metody těchto tříd jsou k dispozici pro práci se soubory. Zvažte nejprve soubor FileInputStream. Návrháři této třídy jsou uvedeni na následujícím obrázku:
    První konstruktor brání cestu k požadovanému souboru ve formě řetězce a druhý - ve formě reprezentace objektu. Ačkoli se první konstruktor používá častěji, v druhém případě je možné prozkoumat vlastnosti souboru, které jsou k dispozici v metodách třídy File. Při vytváření instance třídy FileInputStream otevírá vstupní proud pro čtení souboru.
    Konstruktory třídy FileOutputStream jsou zobrazeny níže:
    Situacepodobný FileInputStream, ale také to může trvat logickou hodnotu „přidat“, který když true označuje, že data zapisovatelný výsledný soubor bude dopysuvatysya stávajícím, a je-li false - půjde plné přepsání souboru, bude tedy stará data budou ztraceny . Podívejme se na příklad používající tyto třídy:
    FileInputStream vstupní proud čte data z soubor file1.txt pobaytovo pomocí metody read (). Každý bajt čtení je uložen v celočíselném čísle. Potom ve smyčce, zatímco proměnná předán jako argument k metodě kopie psát FileOutputStream, který píše obdržel bajtů v souboru file2.txt. Na konci obou podprocesů uzavírá povinné uzavření metodou zavření.

    Třídy FileReader a FileWriter

    Pokud samozřejmě vědí, že při práci se soubory budete muset vypořádat s textem, namísto bajtů toků smysl používat znak. Tyto podprocesy představují třídy FileReader a FileWriter v jazyce Java. Práce se soubory používajícími tyto třídy je zhruba stejná jako v předchozím případě. Jsou potomky tříd Reader a Writer, které definují základní metody pro vstupní a výstupní data. Návrháři tříd FileReader a FileWriter jsou uvedeny na následujícím obrázku:
    Souhlasíte, že prakticky neexistují žádné rozdíly v sémantikách ve srovnání s byteovými proudy. Spodní řádek je, že tyto třídy jsou speciálně navrženy tak, aby spolupracovaly s znaky v Unicode, které nelze provádět streamy bajtů. Takto jsou organizovány soubory jazyka Java. Příklad použití těchto tříd je uveden níže:
    Jak můžete vidět,nejsou pozorovány žádné rozdíly. Stojí za zmínku, že i když jsou toky symbolické, vrátí se metoda čtení a metoda zápisu má celočíselnou hodnotu. Ačkoli podpis metody zápisu zahrnuje přijetí argumentů typu int, do streamu jsou zapsány pouze 16 bitů, jelikož znaky v jazyce Java jsou reprezentovány právě tímto počtem bitů.

    Závěr

    Takže jsme rozložili základní třídy pro práci se soubory v Javě. Stojí za to poznamenat, že pokud se chystáte vyvíjet systém Java z Androidu, můžete tuto sadu nástrojů bezpečně použít.

    Související publikace