basic i o operations java
У овом упутству за видео, разговараћемо о Јава механизму за улаз-излаз, као што су Јава кориснички унос, ИнпутСтреам, Јава Принтф, Принтлн итд., Са стандардним И / О уређајима:
У сваком програмском језику морамо имати механизам за читање улазних података и такође слање обрађених података који су такође познати као излазни подаци крајњем кориснику.
Као што знате, у свету софтвера постоји много улазних и излазних уређаја које програмери могу користити за читање података и записивање или изношење података на њих.
Прочитајте кроз наш Комплетна серија Јава обуке како би стекли бољи увид у концепте Јаве.
Шта ћете научити:
- Видео лекције о основним И / О операцијама на Јави
- Додатни примери - улазно / излазни токови
- Закључак
Видео лекције о основним И / О операцијама на Јави
Помоћу Јава програма можете читати и писати податке из различитих извора и одредишта. Читање и писање извора података и одредишта укључују:
- Фајлови
- Цеви
- Мрежне везе
- Међуспремници у меморији ( На пример: низови)
- Систем.ин, Систем.оут, Систем.еррор
У овом видео упутству имат ћемо улаз као датотеку и истражити разне класе, интерфејсе и методе који су доступни за читање података из датотеке.
Основне ИО операције на Јави:
Јава Филе Оператионс:
Јава И / О (Инпут-Оутпут) је стандардни механизам који обрађује улаз и генерише излаз. Пакет „јава.ио“ садржи методе за извођење свих улазних и излазних операција.
За брже извођење И / О операција Јава користи концепт токова. Ток се може дефинисати као низ података који се састоји од бајтова.
Научимо више о Јава И / О стреамовима !!
Стандардни И / О токови у Јави
Јава језик нуди приступ системским ресурсима, стандардним улазно-излазним уређајима итд. Користећи класу „Систем“. Ова класа имплементира програмски интерфејс који зависи од система за приступ различитим ресурсима.
Класа Систем припада пакету „јава.ланг“ на Јави. Поред пружања стандардних И / О токова, класа Систем такође омогућава приступ променљивим окружења, спољним променљивим, учитавању датотека и библиотека, као и услужни метод арраиЦопи за копирање дела низа.
Како се овај водич заснива само на стандардним И / О, овде ћемо прескочити остатак објеката које нуди класа Систем.
Са становишта улаз-излаз, класа Систем нуди следеће токове:
# 1) Стандардни улазни ток (Систем.ин)
Улазни ток који пружа класа Систем, Систем.ин, користи се за читање улазних података са стандардног улазног уређаја попут тастатуре.
Ток остаје отворен и спреман је за читање података које корисник доставља на стандардни улазни уређај.
Следећи пример приказује функцију Систем.ин.реад за читање једне целобројне цифре.
public class Main { public static void main(String args()) throws java.io.IOException { int ch; System.out.println('Enter the character to be displayed : '); ch = System.in.read(); System.out.println('You entered : ' + (char)ch); } }
Излаз:
# 2) Стандардни излазни ток (Систем.оут)
Интерфејс Систем.оут класе Систем користи се за писање излаза програма на стандардни излазни уређај попут монитора. У већини случајева интерфејс Систем.оут уписује излаз наредбе на стандардни излазни уређај.
Користи три методе из класе „ПринтСтреам“, јер стандардни излаз потиче из ове класе.
тестирајте веб локацију за рањивост убризгавања скл-а
Ове методе су:
- штампати
- принтлн
- писати
Методе „принт“ и „принтлн“ имају исту функционалност, осим једне разлике у којој метода принтлн додаје знак новог реда ( н) на излаз.
Метода писања се не користи често, осим у случајевима када се приказују подаци који нису АСЦИИ.
Следећи пример демонстрира ток Систем.оут.
public class Main { public static void main(String args()) throws java.io.IOException { String stringType = 'Java Tutorial Series'; char() charTypeArray = { 'a', 'e', 'i', 'o', 'u' }; boolean booleanType = true; int integerType = 10; double doubleType = Math.PI; long longType = Long.MAX_VALUE; float floatType = Float.MIN_VALUE; System.out.println('String::' + stringType); System.out.print('Character::'); System.out.println(charTypeArray); System.out.println('Boolean::' + booleanType); System.out.println('Integer::' + integerType); System.out.println('Double::' + doubleType); System.out.println('Long::' + longType); System.out.println('Float::' + floatType); } }
Излаз:
Горњи програм приказује функције „принт“ и „принтлн“ које се користе са Систем.оут интерфејсом. Овде смо дефинисали променљиве различитих типова података и приказали сваку од њих помоћу интерфејса Систем.оут.
# 3) Стандардни ток грешака (Систем.ерр)
Стандардни ток грешака, Систем.ерр, користи се за приказ грешака ако их има током извршавања програма.
Као и ток Систем.оут, ток грешке такође подржава три методе класе ПринтСтреам, принт, принтлн и врите.
Методе за читање података са конзоле
Осим горе описаног улазног тока, постоји још неколико метода помоћу којих можемо читати улазне податке са конзоле на Јави.
О овим методама се говори у наставку.
# 1) БуффередРеадер класе
Класа БуффередРеадер први пут је представљена у ЈДК 1.0 и класична је метода читања улазних података са конзоле.
Улазни ток (Систем.ин) је умотан у класу ИнпутСтреамРеадер која је заузврат умотана у БуффередРеадер.
Следећи програм приказује употребу класе БуффередРеадер за читање улазних података од корисника.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String() args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.println('Enter the input string'); String name = reader.readLine(); System.out.println('You entered: ' + name); } }
Излаз:
иоутубе то вав цонвертер бесплатно преузимање
У горе наведеном програму прогласили смо објекат класе БуффередРеадер иницијализован за ток Систем.ин. Користећи овај објекат, прочитали смо читав ред уноса.
Као што видите, можете читати целокупне баферисане податке чинећи ову функцију врло ефикасном. Једини недостатак је тајновити код који се можда сваки пут тешко памти.
# 2) Класа конзоле
Класа „Систем.цонсоле“ може се користити за читање уноса са конзоле. Ово се користи за посебно читање улазних знакова попут лозинке из командне линије.
Метод читања улазних података помоћу класе конзоле тренутно је најефикаснији и најпожељнији метод у Јави.
Следећи програм демонстрира класу Систем.цонсоле.
public class Main { public static void main(String() args) { System.out.println('Enter the input string'); String name = System.console().readLine(); System.out.println('You entered: ' + name); } }
Излаз:
Коришћењем класе Систем.цонсоле можете читати улазне знакове без понављања знакова. Стога је овај метод кориснији за читање лозинки. Друго, за форматирање улазних података такође можете користити низове форматирања, сличне онима који се користе у Систем.оут.принтф ().
Иако је ово преферирани начин читања улазних података, имајте на уму да се класа Систем.цонсоле не може користити са интерактивним Јава окружењем попут ИДЕ-а.
# 3) Скенер
Коришћење класе скенера за читање улазних података је вероватно најбржи и најпожељнији метод. Скенер се углавном користи за рашчлањивање типова података, укључујући примитивне типове и низове. Али се такође може користити за читање улазних података и њихово рашчлањивање помоћу токенизованог уноса.
Класа скенера у ту сврху користи регуларне изразе.
Следећи програм чита улазне податке од корисника помоћу класе скенера.
import java.util.Scanner; class Main { public static void main(String args()) { Scanner myscan = new Scanner(System.in); System.out.println('Enter the input:'); String mystr = myscan.nextLine(); System.out.println('You entered a string:'+mystr); System.out.println('Enter Next input:'); int num = myscan.nextInt(); System.out.println('You entered an integer:'+num); } }
Излаз:
У горе наведеном програму користили смо класу скенера за читање низа и целобројних података.
Форматирање излаза у Јави помоћу принтф
Већ смо видели како приказати излаз у Јава програму. У овом одељку ћемо видети како да форматирате овај излаз. У ту сврху користимо функцију принтф класе „ПринтСтреам“ заједно са „Систем.оут“ током Јава.
Функција принтф у Јави слична је функцији принтф у Ц / Ц ++. За разлику од Систем.оут.принт и Систем.оут.принтлн функција које узимају један аргумент, Систем.оут.принтф узима више аргумената.
Следе варијације функције принтф у Јави.
Не | Прототип функције | Опис |
---|---|---|
један | Систем.оут.принтф (стринг); | Штампа низ наведен у аргументу без икаквог форматирања |
два | Систем.оут.принтф (формат, аргументи); | Штампа излаз користећи низ формата и формата низа одређеног формата. |
3 | Систем.оут.принтф (локализација, формат, аргументи); | Штампа излаз помоћу низа одређеног формата применом локализације и аргумената. |
Имајте на уму да је функција Систем.оут.формат () иста као Систем.оут.принтф ().
Општа синтакса за одређивање низа формата је следећа:
%specifier => + for right-aligning, - for left-aligning. => to specify leading/trailing zeros and precision => suggests the data type.
На пример:
System.out.println(“ ‘%05.2f’%n”, 2.28);
Генерираће следећи излаз:
’02 .28 ’
О принтф-у на Јави детаљно ћемо разговарати у каснијим темама овог водича.
Често постављана питања
П # 1) Шта су стандардни улаз и стандардни излаз?
Одговор: Стандардни улазни и излазни токови су унапред повезани канали за комуникацију између рачунарског програма и спољног окружења када програм започне своје извршавање. Три различита стандардна И / О тока су стандардни улаз (стдин), стандардни излаз (стдоут), стандардна грешка (стдерр).
К # 2) Шта је стандардни улаз у програмирању?
Одговор: Стандардни улаз или стдин је ток који се користи за читање уноса са стандардног уређаја за унос попут тастатуре.
К # 3) Шта је улазно-излазни ток?
Одговор: Улазно-излазни ток представља извор из којег читате улаз и одредиште на које усмерите свој излаз.
Поток, генерално, представља многе уређаје који се користе као извор и одредишта, наиме тастатуру, датотеку диска, мониторе итд.
К # 4) Шта је стандардни унос у Јави?
Одговор: Стандардни унос у Јави пружа класа Систем као Систем.ин ток. Класа Систем је део пакета јава.ланг.
К # 5) Шта је стандардни излаз у Јави?
Одговор: Стандардни излаз у Јави пружа класа Систем као Систем.оут ток. Класа Систем је део пакета јава.ланг.
Додатни примери - улазно / излазни токови
Потоци представљају ток података и ти подаци могу бити у било ком формату (попут бајта, текста, примитивног типа података итд.). За упис података у одредиште користи се излазни ток, а за читање података користи се улазни ток.
Различити формати за читање и писање
Улаз / излаз се могу читати / писати у следећим различитим форматима:
# 1) Читање датотеке као бајтни ток
Овде ће се подаци читати у бајт формату. „ ФилеИнпутСтреам ” и ' ФилеОутпутСтреам „Часови се користе за читање садржаја као бајт. На тај начин, за сваки бајт, компајлер ће послати захтев ОС-у.
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class ByteStreamsDemo { public static void main(String() args) throws IOException { FileInputStream fin =null; FileOutputStream fout =null; try { fin=new FileInputStream('input.txt'); fout=new FileOutputStream('out.txt'); int c; while((c=fin.read() )!= -1) { fout.write(c); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if(fin!=null) { fin.close(); }if(fout!=null) { fout.close(); } } } }
# 2) Читање датотеке као ток знакова
На тај начин, улазни ток ће се читати у формату знакова. Дакле, за сваки знак, компајлер ће послати захтев ОС-у. „ ФилеРеадер ” и ' ФилеВритер ” часови су корисни за читање садржаја као лика.
public class CharStreamDemo { public static void main(String() args) throws IOException { FileReader input = null; FileWriter output = null; try { input = new FileReader('input.txt'); output = new FileWriter('out1.txt'); int c; while ((c = input.read()) != -1) { output.write(c); } } finally { if (input != null) { input.close(); } if (output != null) { output.close(); } } } }
# 3) Међуспремник улазно / излазног тока
Када користите класе ФилеИнпутСтреам или ФилеРеадер, за сваку операцију читања или писања, нови захтев ће бити послат ОС-у. Дакле, ово може довести до проблема са перформансама. Да би се избегао овај БуффередИнпутСтреам или БуффередРеадер, класе се користе за умотавање небуферисаних класа.
Ово чита улазни ток када је бафер празан.
Слично томе, класе ФилеОутпутСтреам или ФилеВритер, класе су умотане са БуффередОутпутСтреам или БуффередВритер да би написали излаз када се ме успремник напуни.
public class BufferedStreamDemo { public static void main(String() args) throws IOException { BufferedReader input = null; BufferedWriter output = null; try { input = new BufferedReader(new FileReader('input.txt')); output = new BufferedWriter(new FileWriter('out1.txt')); int c; while ((c = input.read()) != -1) { output.write(c); } } finally { if (input != null) { input.close(); } if (output != null) { output.close(); } } } }
# 4) Читање као ток података
У овој методи, ДатаИнпутСтреам или ДатаОутпутСтреам, класе се користе за читање и писање садржаја као примитивни типови података као што су боолеан, цхар, бите, схорт, инт, лонг, флоат, доубле и Стринг. Углавном ће се користити ДатаИнпутСтреам и ДатаОутпутСтреам.
public class DataInputOutputStreamDemo { public static void main(String() args) { File file = new File('read.bin'); FileOutputStream fos = null; DataOutputStream dos = null; try { fos=new FileOutputStream(file); dos=new DataOutputStream(fos); dos.writeInt(50244); dos.writeDouble(400.253); dos.writeChar('d'); dos.flush(); } catch (IOException e) { e.printStackTrace(); }finally { try { if(fos!=null){ fos.close(); } if(dos!=null){ dos.close(); } } catch (Exception e) { e.printStackTrace(); } } /*Reading operation */ FileInputStream fis = null; DataInputStream dis = null; try { fis = new FileInputStream(file); dis = new DataInputStream(fis); System.out.println(dis.readInt()); System.out.println(dis.readDouble()); System.out.println(dis.readChar()); } catch (IOException e) { e.printStackTrace(); }finally { try { if(fis!=null){ fis.close(); } if(dis!=null){ dis.close(); } } catch (Exception e) { e.printStackTrace(); } } } }
# 5) Читање као објектни ток
ОбјецтИнпутСтреам / ОбјецтОутпутСтреам, класе су корисне за писање објеката у датотеку и читање објеката из датотеке. За чување објекта у датотеци, класа треба да имплементира серијски интерфејс.
public class ObjectStreamDemo implements Serializable { int age ; String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Направићемо објекат за ову класу „ОбјецтСтреамДемо“ и записаћемо тај објекат у датотеку и читати исти објекат из те датотеке.
public class ObjectStreamDemoTest { public static void main(String() args) { // TODO Auto-generated method stub ObjectStreamDemo obj=new ObjectStreamDemo(); obj.setAge(32); obj.setName('bob'); try { FileOutputStream fos = new FileOutputStream('t.tmp'); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(obj); oos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } FileInputStream fis; ObjectInputStream ois; try { fis = new FileInputStream('t.tmp'); ois = new ObjectInputStream(fis); ObjectStreamDemo obj1 = (ObjectStreamDemo)ois.readObject(); System.out.println(obj1.name); System.out.println(obj1.age); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch(Exception e) { e.printStackTrace(); } } }
Датотеке И / О операција
Класа датотека је корисна за извршавање операција датотека.
Неке од операција датотека извршених помоћу класе Филе укључују:
- Направите датотеку
- Проверите да ли датотека постоји
- Пронађите пут до датотеке
- Напишите датотеку
- Прочитајте датотеку
- Избришите датотеку и преименујте је
- Проверите дозволе за датотеке и промените дозволе за датотеке
- Преместите датотеку из једног директоријума на друго место
Демо програм за креирање, читање и писање датотеке:
како написати тест случај
public class CreateFileDemo { public static void main(String() args) throws IOException { File newfile=new File('created.txt'); if(!newfile.exists()) { newfile.createNewFile(); System.out.println('file not exist'); } try { String FILENAME='created.txt'; String content='hi how are u'; FileWriter fwt = new FileWriter(FILENAME); BufferedWriter bwt = new BufferedWriter(fwt); bwt.write(content); System.out.println('writing completed ...'); bwt.close(); } catch (IOException e) { e.printStackTrace(); } } }
Кључне тачке које треба напоменути:
- Ток је логичан приказ тока података.
- Можете читати / писати податке у другом формату попут бајта, знака, објекта, примитивног типа података.
- Класа датотека се користи за стварање датотеке, брисање датотеке и премештање, копирање или преименовање датотеке.
- БуффередИнпутСтреам или БуффередОутпутСтреам се користи за побољшање перформанси баферовањем података.
Закључак
Јава има пакет јава.ланг који пружа стандардне могућности уноса и излаза помоћу класе Систем.
Поред токова, Систем.ин и Систем.оут који се користе за стандардни унос, односно излаз, постоје и друге методе попут БуффередРеадер, класе конзоле и класе скенера која се користи за читање уноса од корисника.
Стреам Систем.оут користи функцију класе „ПринтСтреам“, принт и принтлн за приказ резултата. То су функције које се користе за приказ резултата без форматирања. Друга функција „принтф“ која је слична функцији принтф у Ц / Ц ++ такође се користи у Јави за форматирани излаз.
Више ћемо истражити о класи скенера и функцији принтф на Јави у нашим предстојећим водичима.
=> Посетите овде за ексклузивну серију лекција за Јава тренинг.
ПРЕВ Туториал |. | СЛЕДЕЋА Лекција
Препоручено читање
- Основне улазно / излазне операције на Ц ++
- Излазне операције уноса датотека у Ц ++
- Водич за Јава Цоллецтионс Фрамеворк (ЈЦФ)
- Примена Јава-а: Стварање и извршавање Јава ЈАР датотеке
- Јава виртуелна машина: како ЈВМ помаже у покретању Јава апликације
- Улаз-излаз и датотеке у Питхону (Питхон отвара, чита и пише у датотеку)
- Приступити модификаторима у Јави - Водич са примерима
- Водич за Јава рефлексију са примерима