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, можете спокойно да използвате този инструментариум.