КампутарыПраграмаванне

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

 

 

 

 

Newest

Copyright © 2018 be.birmiss.com. Theme powered by WordPress.