Danh mục

CoreJava 9: DÒNG VÀO/RA (I/O Streams)

Số trang: 22      Loại file: doc      Dung lượng: 202.50 KB      Lượt xem: 13      Lượt tải: 0    
tailieu_vip

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trong buổi học trước, chúng ta đã học về cách tạo các luồng đồng bộ. Ngăn chặncác luồng truy nhập đồng thời các đối tượng dùng chung. Toàn bộ tiến trình này đượcquản lý bởi cơ chế đợi thông báo (waitnotify).Phương thức wait() báo cho dòng gọi từ bỏmonitor và nhập vào trạng thái ngủ cho đến khi các luồng khác sử dụng xong monitor vàgọi phương thức notify(). Phương thức notify() và notifyAll() tạo ra thông báo cho các luồngkhác đã gọi phương thức wait() trên cùng đối tượng. Trong bài học trước, chúng ta cũnghọc về các điều...
Nội dung trích xuất từ tài liệu:
CoreJava 9: DÒNG VÀO/RA (I/O Streams)Chương9 DÒNGVÀO/RA(I/OStreams)Mục tiêuKếtthúcchương,bạncócóthể: ĐềcậpđếncáckháiniệmvềStream MôtảcáclớpInputStreamvàOutputStream MôtảvàoramảngByte Thựchiệnlọcvàđệmvào/ra DùnglớpRandomAccesFile. Môtảvào/rachuỗivàkýtự DùnglớpPrinterWriter.9.1 Giới thiệu Trongbuổihọctrước,chúngtađãhọcvềcáchtạocácluồngđồngbộ.Ngănchặncácluồngtruynhậpđồngthờicácđốitượngdùngchung.Toànbộtiếntrìnhnàyđượcquảnlýbởicơchếđợithôngbáo(waitnotify).Phươngthứcwait()báochodònggọitừbỏmonitorvànhậpvàotrạngtháingủchođếnkhicácluồngkhácsửdụngxongmonitorvàgọiphươngthứcnotify().Phươngthứcnotify()vànotifyAll()tạorathôngbáochocácluồngkhácđãgọiphươngthứcwait()trêncùngđốitượng.Trongbàihọctrước,chúngtacũnghọcvềcácđiềukiệnkhoáchếtlàgìvàcáchtránhchúng. Chươngnàygiớithiệukháiniệmvềdòng.Chúngtacũngthảoluậncáclớpkhácnhautronggóijava.iophụcvụvàora..9.2 Các dòng (stream) Theothuậtngữchung,streamlàmộtdònglưuchuyển.trongthuậtngữvềkỹthuậtdònglàmộtlộtrìnhmàdữliệuđượctruyềntrongchươngtrình.MộtứngdụngvềcácdòngmatađãquenthuộcđólàdòngnhậpSystem.in. Dònglànhữngống(pipelines)đểgửivànhậnthôngtintrongcácchươngtrìnhjava.Khimộtdòngdữliệuđượcgửihoặcnhận,tathamchiếunónhưđang“ghi”và“đọc”mộtdòngtươngứng.Khimộtdòngđượcđọchayghi,cácluồngkhácbịcónhucầuđọc/ghidòngđóđềuphảitạmdừng.Nếucómộtlỗixẩyrakhiđọchayghiđòng,mộtngoạilệkiểuIOExceptionđượctạora.Dovậy,cáccâulệnhthaotácdòngphảibaogồmI/O Streams 213khốitrycatch. Lớp‘java.lang.System’địnhnghĩacácdòngnhậpvàxuấtchuẩn.chúnglàcáclớpchínhcủacácdòngbytemàjavacungcấp.Chúngtacũngđãsửdụngcácdòngxuấtđểxuấtdữliệuvàhiểnthịkếtquảtrênmànhình.Dòngvào/rabaogồm:: LớpSystem.out:Dòngxuấtchuẩndùngđểhiểnthịkếtquảtrênmànhình. LớpSystem.in:Dòngnhậpchuẩnthườngđếntừbànphímvàđượcdùngđểđọc cáckýtựdữliệu. LớpSystem.err:Đâylàdònglỗichuẩn. Cáclớp‘InputStream’và‘OutputStream’cungcấpnhiềukhảnăngvào/rakhácnhau. CảhailớpnàycócáclớpthừakếđểthựchiệnI/Othôngquacácvùngbộnhớđệm, cáctậptinvàống(pipeline).CáclớpconcủalớpInputStreamthựchiệnvào,trongkhi cáclớpconcủalớpOutputStreamthựchiệnra..9.3 Gói java.ioCácluồnghệthốngrấtcóích.Tuynhiên,chúngkhôngđủmạnhđểdùngkhiứngphóvớiI/Othựctế.Góijava.iophảiđượcnhậpkhẩuvìmụcđíchnày.Chúngtasẽthảoluậntìmhiểuvềcáclớpthuộcgóijava.io.9.3.1LớpInputStreamLớpInputStreamlàmộtlớptrừutượng.Nóđịnhnghĩacáchthứcnhậndữliệu.Điểmquantrọngkhôngnằmởchổdữliệuđếtừđâu,màlàkhảnăngtruycập.LớpInputStreamcungcấpmộtsốphươngthứcđểđọcvàdùngcácdòngdữliệuđểlàmđầuvào.Cácphươngthứcnàygiúptatạo,đọcvàxửlýcácdòngđầuvào.Cácphươngthứcđượchiệntrongbản9.1Tênphươngthức Môtảread() Đọccácbytedữliệutừmộtdòng.Nếunhưkhôngcóbyte dữliệunào,nóphảichờ.Khimộtphươngthứcphảichờ,các luồngđangthựchiệnphảitạmdừngchođếnkhicódữliệu.read(byte[]) Trảvềsốbyteđọcđượchay‘1’nếunhưđãđọcđếncuối dòng.NógâyrangoạilệIOExceptionnếucólỗixảyra.read(byte[],int,int) Nócũngđọcvàomộtmảngbyte.Nótrảvềsốbytethựcsự đọcđượcchođếnkhi kết thúc dòng. Nógây rangoại lệ IOExceptionnếulỗixảyra.available() Phươngphápnàytrảvềsốlượngbytecóthểđọcđượcmà khôngpahỉchờ.Nótrảvềsốbytehiệntạicótrongdòng.Nó214 Core Java khôngphảilàphươngthứctincậyđểthựchiệntiếntrìnhxử lýđầuvào.close() Phươngthứcnàyđóngdòng.Nódùngđểgiảiphóngmọitài nguyên dòng đã sử dụng. Luôn luôn đóng dòng để chắc chắn rằng dòng xử lý được kết thúc. Nó gây ra ngoại lệ IOExceptionnếulỗixảyra.mark() Đánhdấuvịtríhiệntạicủadòng.markSupported() ...

Tài liệu được xem nhiều: