Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

15-Lekciya

.pdf
Скачиваний:
0
Добавлен:
28.11.2023
Размер:
678.33 Кб
Скачать

Fayllar menen islew. Fayllardan oqıtıw hám fayllarǵa jazıw

Jobası:

Javada fayllar menen islesiwshi potoklar

FileWriter hám FileReader klassları

BufferedWriter hám BufferedReader klassları

</TITUNF></PI></PROGRAMMALASTIRIW I></A.B.ORINBAEV>

InputStre

OutputStr

FileReade

FileWrite

am

eam

r

r

FileInputSt

FileOutputSt

FileReade

FileWrite

ream

ream

r

r

BufferedInp

BufferedOutp

BufferedR

BufferedW

utStream

utStream

eader

riter

ByteArrayIn

ByteArrayOut

CharArray

CharArray

putStream

putStream

Reader

Writer

FilterInput

FilterOutput

FilterRea

FilterWri

Stream

Stream

der

ter

DataInputSt DataOutputSt

ream ream

ObjectInput ObjectOutput

Stream Stream

Javada fayllar menen islesiwshi potoklar

Kópshilik programmalastırıw tilleriniń tiykarǵı múmkinshilikleriniń biri bul fayllar hám potoklar menen islew bolıp tabıladı. Javada potoklar menen islewshi java.io paketi bar.

Bunda potok tiykarǵı túsiniklerden biri esaplanadı. Biraq programmalastırıwda “potok” birneshe kóplegen mánislerdi bildiredi. Al bul temada potoklar degende fayllar menen islew hám kiritiw-shıǵarıwdı (oqıtıwjazıw) kórip shıǵamız.

Potok Javadaǵı kiritiw-shıǵarıw sisteması arqalı real fizikalıq qurılmalar menen baylanısadı. Yaǵnıy bizde qandayda bir potok bolıp, ol arqalı biz faylǵa maǵlıwmat jazıw hám oqıtıwǵa, bunnan tısqarı tarmaq arqalı maǵlıwmat jiberiw hám qabıl etiwge boladı. Javada usınday fayllarǵa jazıw hám oqıw, tarmaq arqalı maǵlıwmat almasıw, konsolǵa maǵlıwmat kiritiw hám shıǵarıw sıyaqlı máseleler potoklar járdeminde sheshiledi.

Maǵlıwmatlardı oqıw ushın jaratılǵan obyekt – kiritiw potoki, al jazıw ushın jaratılǵanı shıǵarıw potoki delinedi.

Baytlardı basqarıw ushın arnalǵan barlıq klasslardıń tiykarında 2 abstrakt klass boladı. Olar: InputStream (kiritiw potoki) hám OutputStream (shıǵarıw potoki).

</TITUNF></PI></PROGRAMMALASTIRIW I></A.B.ORINBAEV>

Baytlar menen islew, hárdayim qolaylı bola bermeydi. Sonıń ushın simvollar potoki menen islew ushın arnalǵan 2 abstrakt klass bolıp, olar: Reader (simvollar potokin oqıw) hám Writer (simvollar potokin jazıw).

Potoklar menen islewshi qalǵan barlıq klasslar, joqarıda aytılǵan abstrakt klasslardıń miyrasxorı esaplanadı. Potoklar menen islewshi tiykarǵı klasslar tómendegi kestede keltirilgen.

InputStream

OutputStream

Reader

Writer

 

 

 

 

FileInputStream

FileOutStream

FileReader

FileWriter

 

 

 

 

BufferedInputStream

BufferedOutStream

BufferedReader

BufferedWriter

 

 

 

 

ByteArrayInputStream

ByteArrayOutStream

CharArrayReader

CharArrayWriter

 

 

 

 

FilterInputStream

FilterOutputStream

FilterReader

FilterWriter

 

 

 

 

DataInputStream

DataOutStream

 

 

 

 

 

 

ObjectInputStream

ObjectOutStream

 

 

 

 

 

 

</TITUNF></PI></PROGRAMMALASTIRIW I></A.B.ORINBAEV>

FileWriter hám FileReader klassları

Maǵlıwmatlardı tekstli fayllarǵa jazıw hám tekstli fayllardan oqıwda Javada FileWriter hám FileReader klasslarınan paydalanıladı. Bul klasslar sáykes túrde Writer hám Reader abstrakt klasslarınıń miyrasxorı esaplanadı.

FileWriter klası. FileWriter klası tekstli fayllarǵa jazıwda qollanıladı. Bul klass obyektin jaratıwda, tómendegi konstruktorlardan paydalanıwǵa boladı.

Konstruktorlar

 

 

Wazıypası

 

 

 

 

 

FileWriter(File file)

 

File obyekti tiykarında taza obyekt jaratıladı.

 

 

 

 

FileWriter(File

file,

boolean

File obyekti hám append ózgeriwshileri tiykarında taza obyekt jaratıladı.

append)

 

 

Bunda append mánisi true bolsa, fayldıń izine jazıladı. Al false bolsa, fayl

 

 

 

qayta jazıladı

 

 

 

FileWriter(FileDescriptor fd)

 

FileDescriptor obyekti járdeminde taza obyekt jaratadı.

 

 

 

FileWriter(String fileName)

 

fileName ózgeriwshisi tiykarında taza obyekt jaratıladı. Bunda fileName

 

 

 

ózgeriwshisi fayl atı hám oǵan bolǵan joldı kórsetedi.

 

 

 

 

FileWriter(String

fileName,

boolean

filName hám append ózgeriwshisi tiykarında taza obyekt jaratıladı. Bunda

append)

 

 

fileName ózgeriwshisi fayl atı hám oǵan bolǵan joldı kórsetedi. Bunda

 

 

 

append mánisi true bolsa, fayldıń izine jazıladı. Al false bolsa, fayl qayta

 

 

 

jazıladı

 

 

 

 

</TITUNF></PI></PROGRAMMALASTIRIW I></A.B.ORINBAEV>

Tómendegishe ápiwayı mısaldı qarayıq. Bunda “test.txt” faylına qanday da bir tekstti jazıw kerek bolsın. Programma kodı tómendegishe boladı.

import java.io.*; public class Program {

public static void main(String[] args) {

try(FileWriter writer = new FileWriter("test.txt", false))

{

// Barlıq tekstlerdi jazıw

String text = "Qandayda bir tekst…"; writer.write(text);

// taza qatar writer.append('\n');

// simvol jazıw writer.append('A'); writer.flush();

}

catch(IOException ex){ System.out.println(ex.getMessage());

}

}

}

</TITUNF></PI></PROGRAMMALASTIRIW I></A.B.ORINBAEV>

Bunda FileWriter writer = new FileWriter("test.txt", false) qatarı taza obyekt jaratadı. "test.txt" – faylǵa bolǵan jol hám fayl atın bildiredi. false – fayl qayta jazılıwın bildiredi. try catch bloki IOException qáteliginiń aldın alıw ushın qollanılǵan. writer.write(text) qatarı writer obyektine text qatarın qosadı. Tap usınday append() metodı writer obyektine simvoldı qosadı. writer.flush() metodı writer obyektin tazalaw ushın, ex.getMessage() metodı júz bergen IOExcepton haqqında xabar beriw ushın qollanıladı.

FileReader klası. FileReader klası tekstli fayllardan oqıw imkaniyatın beredi. Bul klass obyektin jaratıwda tómendegi konstruktorlardan birin paydalanıwǵa boladı.

Konstruktorlar

Wazıypası

FileReader(String fileName)

String ózgeriwshisi tiykarında taza obyekt

 

jaratıladı. Bunda fileName ózgeriwshisi fayl

 

atı hám oǵan bolǵan joldı kórsetedi.

FileReader(File file)

File obyekti tiykarında taza obyekt jaratıladı.

FileReader(FileDescriptor fd)

FileDescriptor obyekti járdeminde taza

 

obyekt jaratadı.

</TITUNF></PI></PROGRAMMALASTIRIW I></A.B.ORINBAEV>

Tómendegishe ápiwayı mısaldı qarayıq. Bunda “test.txt” faylına jazılǵan tekstti oqıw kerek bolsın. Programma kodı tómendegishe boladı.

import java.io.*; public class Program {

public static void main(String[] args) {

try(FileReader reader = new FileReader("test.txt"))

{

// simvol boyınsha birme-bir oqıw int c; while((c=reader.read())!=-1){

System.out.print((char)c);

}

}

catch(IOException ex){ System.out.println(ex.getMessage());

}

}

}

</TITUNF></PI></PROGRAMMALASTIRIW I></A.B.ORINBAEV>

Bunda dáslep reader obyekti jaratıladı, onda "test.txt" – bul oqıtılıwı kerek bolǵan faylǵa bolǵan jol hám fayl atı reader.read() metodı fayldaǵı simvollardı birme-bir oqıydı hám sol simvoldıń kodın int tipinde qaytaradı. Eger metod -1 mánisin qaytarsa onda fayldaǵı simvollar tolıq oqılıp bolınǵanlıǵın bildiredi. while cikl operatorı reader.read() metodı -1 mánisin qaytarǵansha fayldaǵı simvollardı oqıydı. (char)c arqalı qaytadan simvolǵa aylandırıladı. try catch joqarıda aytılǵanday wazıypanı atqaradı.

Tekstli fayldan oqıtıwda simvollardı birme-bir emes, al simvollar massivi arqalı oqıtsaqta boladı. Bunda programma kodı tómendegishe boladı.

import java.io.*;

import java.util.Arrays; public class Program {

public static void main(String[] args) {

try(FileReader reader = new FileReader("test.txt"))

{

</TITUNF></PI></PROGRAMMALASTIRIW I></A.B.ORINBAEV>

char[] buf = new char[256]; int c;

while((c = reader.read(buf))>0){ if(c < 256){

buf = Arrays.copyOf(buf, c);

}

System.out.print(buf);

}

}

catch(IOException ex){ System.out.println(ex.getMessage());

}

}

}

Bunda fayldan buf massiv arqalı oqıtıladı. Yaǵnıy, bir waqıttıń ózinde 256 simvolǵa deyin oqıtılıwı múmkin. Eger faylda 256 simvoldan az bolsa (máselen 73 simvol), sol bólegi Arrays.copyOf() metodı arqalı ózine qayta nusqalanadı. Bunda fayldan oqıtılǵan simvollar ǵana qaladı.

</TITUNF></PI></PROGRAMMALASTIRIW I></A.B.ORINBAEV>

Соседние файлы в предмете Программирование на Java