-
Nima uchun kerak
RandomAccessFile
?RandomAccessFile
Java IO API toʻplamidagi sinf boʻlib, u sizga xohlagancha harakat qilish, faylni oʻqish yoki faylga yozish imkonini beradi. Siz shuningdek faylning mavjud qismlarini almashtirishingiz mumkin; biz fayl tarkibini yangilash yoki aniqrog'i faylning bir qismini yangilash haqida gapiramiz.FileInputStream
Buni yoki bilan amalga oshirib bo'lmaydiFileOutputStream
, lekinRandomAccessFile
sizga bu qobiliyatni beradi. -
Agar u o'qigan fayl
RandomAccessFile
mavjud bo'lmasa nima bo'ladi?iroda
FileNotFoundException
-
Agar u yozayotgan fayl
RandomAccessFile
mavjud bo'lmasa nima bo'ladi?U yangisini yaratadi va unga yozadi.
-
Nima uchun bizga sinf kerak
StringReader
?Java.io.StringReader klassi manbasi satr bo'lgan belgilar oqimidir.
Manbasi satr deb ataladigan belgilar oqimini ifodalaydi
-
Nima uchun bizga sinf kerak
StringWriter
?public class StringWriter
extends Writer
O'z chiqishini satr buferida to'playdigan belgilar oqimi, keyinchalik undan satr yaratish uchun foydalanish mumkin.
StringWriter-ni yopish hech qanday ta'sir qilmaydi. Ushbu sinfdagi usullar oqim yopilgandan keyin IOException yaratmasdan chaqirilishi mumkin.
O'z oqimini satrlar buferiga to'playdigan belgilar oqimi, keyinchalik undan satr yaratish uchun foydalanish mumkin.
-
Nima uchun bizga sinf kerak
ByteArrayStream
?Shunday qilib,
ByteArrayInputStream
vaByteArrayOutputStream
.StringReader
Bu sinflar mohiyatan va ga o'xshaydi< code="">. U faqat <>StringReader
satrdan (String) belgilarni (char) o'qiydi, lekinByteArrayInputStream
bayt massividan (ByteArray) baytlarni o'qiydi.StringWriter
satrga belgilar (char) yozadi, lekinByteArrayOutputStream
uning ichidagi bayt massiviga baytlarni yozadi. Unga yozishdaStringWriter
uning ichidagi satr uzaygan,ByteArrayOutputStream
ichki massivga yozishda esa bayt ham dinamik ravishda kengaygan. -
Nima uchun bizga sinf kerak
PrintStream
? U ishlatiladigan joylarni ayting?Sinf
PrintStream
ma'lumotni o'qilishi mumkin bo'lgan tarzda ko'rsatish uchun ixtiro qilingan. U deyarli butunlay usullardanprint
vaprintln
. -
Nima uchun kerak
DynamicProxy
?Java-ning maxsus sinfi (java.lang.reflect.Proxy) mavjud bo'lib, uning yordamida ob'ektni ishlash vaqtida (dinamik ravishda) alohida sinf yaratmasdan qurishingiz mumkin.
-
RMI qanday ishlaydi?
RMI qisqartmasi Remote Method Invokation degan ma'noni anglatadi. Boshqacha qilib aytganda, RMI - bu bitta Java mashinasidagi ob'ektga boshqa Java mashinasidagi ob'ekt usullarini, hatto ular turli kompyuterlarda, turli mamlakatlarda, dunyoning turli tomonlarida joylashgan bo'lsa ham chaqirish imkonini beruvchi mexanizm.
Традиционный подход к выполнению codeа на других машинах, разнесенных по сети может смутить из-за своей нудной и склонной к ошибкам реализации. Лучший способ рассмотреть эту проблему состоит в предположении, что некоторые an objectы располагаются на другой машине, и что вы можете посылать messages этим удаленным an objectм и получать результат, How будто они располагаются на вашей локальной машине. Это упрощение в точности является тем, что позволяет делать Удаленный Вызов Методов (RMI) в Java.
Вот статья по созданию собственной реализации RMI: Удаленный вызов методов (RMI)
-
Объекты Howих типов можно передавать по RMI?
Объекты должны имплементировать интерфейс
Serializable
Remote method Invocation — механизм, который позволяет вызывать метод удалённого an object. Согласно ему, все операции по подготовке и передаче данных инкапсулируются в вызываемом методе клиентского an object-заглушки (stub). Сам же вызов метода ничем не отличается от вызова метода обычного локального an object, за небольшим исключением:
- локальные an objectы передаются по значению (копии);
- при передаче удалённого (
Remote
) an object, если он экспортирован, передаётся stub этого an object; - передаваемые an objectы должны быть
Serializable
; - кроме всех прочих исключительных ситуаций, при вызове удалённого метода может возбуждаться исключение
RemoteException
(ошибки маршализации/демаршализации, передачи данных и другие возможные ошибки протокола);
Так же нужно отметить, что при вызове метода мы работаем с удалённым интерфейсом, а не с удалённым классом.
DefNeo
Daraja
GO TO FULL VERSION