muzruno.com

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

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

Клас Java на файла - работа с файлове

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

За да създадете потребителски модел на файловия клас, използвайте един от конструкторите му: Файл (Струнен път към папката, Име на файла на низа).

Нека разгледаме основните методи от този клас, които ви позволяват да получите информация за файл или директория:

  • getName () - връща името на файла;
  • exists () - връща булевата стойност вярна, ако файлът съществува или е иначе погрешен;
  • isFile () - определя дали обектът сочи към файл, връщайки съответната булева стойност;
  • isDirectory () - връща true ако това е папка;
  • canWrite () - връща true ако файлът е написан;
  • canRead () - връща true, ако файлът е четлив;
  • setReadOnly () - прави файла само за четене;
  • length () - връща размера на файла в байтове;
  • renameTo (File new name) - преименува текущия файл според предавания аргумент. Връща true, ако операцията е успешна;
  • delete () - изтрива файла или папката (ако е празен), посочен от обекта на повикване;
  • списък () - извлича списък с имена на обекти, съхранени в тази директория, като масив от низове (приложим само към директории).

По този начин, използвайки класа File, Java работи с файлове и папки.

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

По-рано споменахме, че в Java работата с файловете се извършва главно чрез входно-изходни потоци. Байт потоци за файловете, представени под формата на класове FileInputStream и FileOutputStream. Тези класове са наследниците на основните абстрактни класове InputStream и OutputStream, така че методите от тези класове са достъпни за работа с файлове.

Помислете първо за FileInputStream. Конструкторите от този клас са показани на фигурата по-долу:

java работи с файлове

Първият конструктор възприема като аргумент пътя към целевия файл като низ, а вторият конструктор като обектно представяне. Макар че първият конструктор се използва по-често, във втория случай е възможно да се проучат наличните файлове в методите на File class. Когато се създаде копие на класа, FileInputStream отваря входящ поток за четене на файла.

Конструкторите на класа FileOutputStream са показани по-долу:

java android



Ситуацията е подобна на FileInputStream, но може също така да вземе логическа стойност "се прикрепя към него", който, когато е вярно показва, че данните се записват в съответния файл ще бъде добавена към съществуващата, и ако фалшиво - ще отидат изцяло презапишете файла, т.е. старите данни няма да бъдат запазени.

Нека да разгледаме един пример, използващ тези класове:

java работи с примерни файлове

Входният поток FileInputStream чете данните от file1.txt по байт, като използва метода read (). Всеки прочитан байт се съхранява в променлива в цяло число. По-нататък в тялото докато линия тази променлива се предава като аргумент към метода за запис на файла FileOutputStream, който записва получения байт в file2.txt. Накрая и двете нишки са затворени с близкия метод.

Класове FileReader и FileWriter

Ако знаете, че когато се занимавате с файлове, ще се занимавате с текст, а вместо байтови потоци има смисъл да се използват символни. Тези потоци се представят от класовете FileReader и FileWriter в Java. Работата с файлове, използващи тези класове, е почти същата като в предишния случай. Те са потомци съответно на класовете Reader и Writer, които определят основните методи за въвеждане и извеждане на данни.

Конструкторите за класовете FileReader и FileWriter са показани на фигурата по-долу:

java работи с файлове и папки

Съгласен съм, практически няма разлика в семантиката в сравнение с байтовите потоци. Долната линия е, че тези класове са създадени специално за работа с символи на Unicode, които байтови потоци не могат да направят. Така Java работи с файлове. Пример за използване на тези класове е показан по-долу:

java работи с файлове

Както виждате, няма разлика. Струва си да се отбележи, че въпреки че нишките са символични, методът за четене се връща и методът за запис има цяло число. Макар че подписът на метода за записване предполага въвеждане на аргумент int, само долните 16 бита се записват в потока, тъй като героите в Java се представят точно от този брой битове.

заключение

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

Споделяне в социалните мрежи:

сроден