Thông tin tài liệu:
Tham khảo tài liệu giáo trình java cơ bản - chương 9, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Giáo trình java cơ bản - Chương 9Chươ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ác luồng đồngbộ.Ngăn chặ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ọi từ bỏ monitorvà nhậpvàotrạngtháingủ cho đếnkhicácluồngkhácsử dụngxong monitorvà 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ồm I/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ác lớp ‘InputStream’ và ‘OutputStream’ cung cấp nhiều khả năng vào/ra khác nhau.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, trongkhicá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ận tìmhiểuvềcáclớpthuộcgóijava.io.9.3.1LớpInputStreamLớp InputStreamlà mộtlớptrừutượng.Nó địnhnghĩacáchthứcnhậndữ liệu. Điểmquan trọng không nằm ở chổ dữ liệu đế từ đâu, mà là khả năng truy cập. LớpInputStreamcungcấpmộtsốphươngthứcđểđọcvàdùngcácdòngdữliệuđểlàmđầu và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 đếnkhikếtthúcdòng.Nó gâyrangoạilệ 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.214 Core Java Nókhôngphảilàphươngthứctincậyđểthựchiệntiếntrình xửlýđầuvào.close() Phươngthứcnàyđóngdòng.Nódùngđểgiảiphóngmọitài nguyêndòng đã sử dụng.Luônluôn đóngdòng để chắc chắnrằng ...