Кампутары, Праграмаванне
Java: праца з файламі - запіс, чытанне, выдаленне
Java мае мноства інструментаў для працы з файламі, паколькі яны служаць сховішчам дадзеных у многіх праграмах. Асабліва часта доступ да файлаў патрабуецца ў Java Android. Усе класы для працы з файламі размешчаны ў пакеце java.io, дзе таксама захоўваюцца класы для працы з патокамі ўводу і вываду. Строга кажучы, у Java праца з файламі адбываецца пераважна праз байтавая і знакавыя патокі ўводу-высновы. Выключэннем у гэтым выпадку з'яўляецца клас File. З яго і пачнём.
Клас File Java - праца з файламі
Клас File ўзаемадзейнічае непасрэдна з файламі і файлавай сістэмай. Асобнік дадзенага класа выкарыстоўваецца, перш за ўсё, для доступу да уласцівасцях файла і перамяшчэння па іерархіі падкаталогаў. У ім не вызначаны спосабы здабывання і захавання дадзеных у файл, але з дапамогай гэтага класа можна атрымаць мноства звестак аб самім файле: дата, час, правы доступу і шлях да каталога. Па сутнасці, клас File з'яўляецца аб'ектнай інтэрпрэтацыяй файла ці каталога ў Java.
Каб стварыць асобнік класа File, выкарыстоўваюць адзін з яго канструктараў: File (String шлях да тэчцы, String імя файла).
Разгледзім асноўныя метады дадзенага класа, якія дазваляюць атрымліваць звесткі аб файле або каталогу:
- getName () - вяртае імя файла;
- exists () - вяртае лагічнае значэнне true, калі файл існуе, або false ў зваротным выпадку;
- isFile () - вызначае, паказвае Ці аб'ект на файл, вяртаючы адпаведнае лагічнае значэнне;
- isDirectory () - вяртае true, калі гэта тэчка;
- canWrite () - вяртае true, калі файл даступны для запісу;
- canRead () - вяртае true, калі файл даступны для чытання;
- setReadOnly () - робіць файл даступным толькі для чытання;
- length () - вяртае памер файла ў байтах;
- renameTo (File новае імя) - пераназывае бягучы файл у адпаведнасці з перададзеным аргументам. Вяртае true, калі аперацыя паспяховая;
- delete () - выдаляе файл або тэчку (калі яна пустая), на які паказвае які выклікае аб'ект;
- list () - здабывае спіс імёнаў аб'ектаў, якія захоўваюцца ў дадзеным каталогу, у выглядзе масіва радкоў (выкарыстоўваецца і ў дачыненні выключна да каталогаў).
Такім чынам, з дапамогай класа File забяспечваецца ў Java праца з файламі і тэчкамі.
Праца з файламі пры дапамозе класаў FileInputStream і FileOutputStream
Раней мы згадвалі, што ў Java праца з файламі ажыццяўляецца пераважна з дапамогай патокаў ўводу-высновы. Байтавая патокі для працы з файламі прадстаўлены ў выглядзе класаў FileInputStream і FileOutputStream. Гэтыя класы з'яўляюцца спадкаемцамі базавых абстрактных класаў InputStream і OutputStream адпаведна, таму метады гэтых класаў даступныя для працы з файламі.
Разгледзім спачатку FileInputStream. Канструктары дадзенага класа прадстаўлены на малюнку ніжэй:
Першы канструктар прымае ў якасці аргументу шлях да мэтавага файла ў выглядзе радка, а другі - у выглядзе аб'ектнага прадстаўлення. Хоць першы канструктар выкарыстоўваецца часцей, у другім выпадку ёсць магчымасць вывучыць ўласцівасці файла даступнымі ў класе File метадамі. Пры стварэнні асобніка класа FileInputStream адкрывае паток ўводу для чытання файла.
Канструктары класа FileOutputStream паказаны ніжэй:
Сітуацыя падобная на FileInputStream, але ён таксама можа прымаць лагічнае значэнне "append", якое пры true кажа пра тое, што дадзеныя, якія запісваюцца ў мэтавай файл будуць дапісваць да ўжо наяўных, а пры false - будзе ісці поўная перазапіс файла, г.зн. старыя дадзеныя не захаваюцца.
Давайце разбярэм прыклад з выкарыстаннем гэтых класаў:
Паток ўводу FileInputStream чытае дадзеныя з файла file1.txt байтавыя пры дапамозе метаду read (). Кожны прачытаны байт захоўваецца ў зменную ў цэлалікавых выглядзе. Далей у целе цыклу while гэтая пераменная перадаецца ў якасці аргументу метадзе write асобніка FileOutputStream, які запісвае прыняты байт у файл file2.txt. У канцы абодва патоку ў абавязковым парадку зачыняюцца пры дапамозе метаду close.
Класы FileReader і FileWriter
Калі вам загадзя вядома, што пры працы з файламі вы будзеце мець справу з тэкстам, то замест байтавая патокаў мае сэнс выкарыстоўваць знакавыя. Дадзеныя патокі прадстаўлены класамі FileReader і FileWriter ў Java. Праца з файламі пры дапамозе гэтых класаў адбываецца прыкладна гэтак жа, як і ў папярэднім выпадку. Яны з'яўляюцца нашчадкамі класаў Reader і Writer адпаведна, у якіх вызначаны асноўныя метады для ўводу і вываду даных.
Канструктары класаў FileReader і FileWriter прадстаўлены на малюнку ніжэй:
Пагадзіцеся, адрозненняў ў семантыцы ў параўнанні з байтавая патокамі практычна няма. Сутнасць у тым, што дадзеныя класы прызначаны спецыяльна для працы з сімваламі ў Юнікодзе, чаго не могуць рабіць байтавая патокі. Вось такім чынам арганізавана ў Java праца з файламі. Прыклад выкарыстання дадзеных класаў прыведзены ніжэй:
Як бачыце, адрозненняў не назіраецца. Варта адзначыць, што хоць патокі знакавыя, метад read вяртае, а метад write прымае цэлалікавых значэнне. Хоць сігнатура метаду write мяркуе прыём аргументу тыпу int, запісваецца ў струмень толькі малодшыя 16 біт, паколькі сімвалы ў Java ўяўляюцца менавіта такой колькасцю біт.
заключэнне
Такім чынам, мы разабралі асноўныя класы для працы з файламі ў Java. Варта адзначыць, што калі вы збіраецеся распрацоўваць ПА пад Java Android, можаце смела выкарыстоўваць дадзены інструментар.
Similar articles
Trending Now