Java: работа с файлове - запис, четене, изтриване

Java има много инструменти за обработка на файлове, тъй като те служат като хранилище на данни в много приложения. Често достъпът до файловете се изисква в Java Android. Всички класове за работа с файлове се намират в пакета java.io, който също съхранява класове за работа с входни и изходни потоци. Строго погледнато, в Java работата с файловете се дължи главно на байта и символа вход /изход потоци. Изключение от това е файловата класа. Да започнем с него.

Class File Java - работа с файлове

Class File взаимодейства директно с файлове и файлове. Екземпляр от този клас се използва предимно за достъп до свойствата на файловете и за придвижване през йерархиите на поддиректориите. Той не дефинира начини за извличане и запазване на данни във файл, но с този клас можете да получите много информация за файла, датата, часа, разрешенията и пътя до директорията. Всъщност класът File е специфична за обекта интерпретация на файл или директория в Java.


За да създадете екземпляр от класа File, използвайте един от неговите конструктори: File (String path до папката String filename). Помислете за основните методи на този клас, които ви позволяват да получите информация за файл или директория:
  • getName () - връща името на файла;
  • съществува () - връща логическата стойност true, ако файлът съществува, или false в противен случай;
  • isFile () - дефинира, определя обект към файл, връщайки съответната логическа стойност;
  • isDirectory () - връща true, ако е папка;
  • canWrite () - връща true, ако файлът е достъпен за писане;
  • canRead ()- връща true, ако файлът е четим;
  • setReadOnly () - прави файла наличен само за четене;
  • length () - връща размера на файла в байтове;
  • renameTo (Файл ново име) - преименува файла според предадения аргумент. Връща true, ако операцията е успешна;
  • delete () - Изтрива файл или папка (ако е празна), посочена от повикващия обект;
  • list () - извлича списък с имена на обекти, съхранени в тази директория, като масив от низове (важи само за директории).
  • По този начин, използването на класа Файл осигурява Java работа с файлове и папки.


    Работа с файлове, използващи класовете FileInputStream и FileOutputStream

    По-рано споменахме, че в Java работата с файлове се извършва главно чрез I /O потоци. Байтов поток за работа с файлове са представени като класове FileInputStream и FileOutputStream. Тези класове са наследници на основните абстрактни класове InputStream и OutputStream съответно, така че методите на тези класове са достъпни за работа с файлове. Помислете първо за FileInputStream. Дизайнерите от този клас са представени на фигурата по-долу:
    Първият конструктор приема като аргумент пътя към желания файл под формата на низ, а вторият - под формата на представяне на обект. Въпреки че първият конструктор се използва по-често, във втория случай е възможно да се изследват свойствата на файла, достъпен в методите на класа File. Когато създавате екземпляр на класа FileInputStream, той отваря входния поток за четене на файла.
    Конструкторите на класове FileOutputStream са показани по-долу:
    Ситуацияподобно на FileInputStream, но също така може да приеме логическата стойност на "append", която в действителност заявява, че данните, записани в окончателния файл, ще бъдат добавени към съществуващите, а при false - ще има пълно презаписване на файла, т.е. старите данни няма да бъдат запазени. , Нека да разгледаме един пример, използвайки тези класове:
    Входният поток FileInputStream чете данни от файловия байт file1.txt, използвайки метода read (). Всеки байт за четене се съхранява в цяло цяло число. Следното в тялото на цикъла, докато тази променлива се предава като аргумент на метода на запис на екземпляра FileOutputStream, който записва получения байт във файла file2.txt. В края на двете нишки задължителното затваряне се затваря с метода за затваряне.

    Класове FileReader и FileWriter

    Ако знаете, че когато работите с файловете, ще се занимавате с текста, а вместо байтови потоци има смисъл да използвате характер. Тези нишки са представени от класовете FileReader и FileWriter в Java. Работата с файлове, използващи тези класове, е приблизително същата като в предишния случай. Те са потомци на класовете Reader и Writer, съответно, които определят основните методи за входни и изходни данни. Дизайнерите на класовете FileReader и FileWriter са представени на фигурата по-долу:
    Съгласен съм, че практически няма разлики в семантиката в сравнение с байтовите потоци. Долната линия е, че тези класове са специално проектирани да работят с символи в Unicode, които не могат да се правят байтови потоци. Така се организират Java файловете. Пример за използване на тези класове е даден по-долу:
    Както виждате,не се наблюдават разлики. Струва си да се отбележи, че въпреки че потоците са символични, методът за четене се връща и методът на запис заема цяло число. Въпреки че подписът на метода на запис включва приемане на аргументи от типа int, само 16 бита се записват в потока, тъй като символите в Java са представени само от този брой битове.

    Заключение

    И така, разглобихме основните класове за работа с файлове в Java. Заслужава да се отбележи, че ако ще разработите Java от Android, можете спокойно да използвате този инструментариум.

    Свързани публикации