-
لماذا هو مطلوب
RandomAccessFile
؟RandomAccessFile
هي فئة في حزمة Java IO API، فهي تسمح لك بالتنقل في ملف أو القراءة منه أو الكتابة فيه كما تريد. يمكنك أيضًا استبدال الأجزاء الموجودة من الملف؛ فنحن نتحدث عن تحديث محتويات الملف، أو بشكل أكثر دقة عن تحديث جزء من الملف. لا يمكن القيام بذلك باستخدامFileInputStream
أوFileOutputStream
، ولكنهRandomAccessFile
سيمنحك هذه القدرة.الرابط: RandomAccessFile وإمكانياته
-
ماذا يحدث إذا كان الملف الذي يقرأ منه
RandomAccessFile
غير موجود؟سوف
FileNotFoundException
-
ماذا يحدث إذا كان الملف الذي يكتب فيه
RandomAccessFile
غير موجود؟سيتم إنشاء واحدة جديدة والكتابة عليها.
-
لماذا نحتاج إلى فئة
StringReader
؟فئة Java.io.StringReader عبارة عن دفق أحرف مصدره عبارة عن سلسلة.
يمثل دفقًا من الأحرف التي يسمى مصدرها سلسلة
-
لماذا نحتاج إلى فئة
StringWriter
؟public class StringWriter
extends Writer
دفق أحرف يجمع مخرجاته في مخزن مؤقت للسلسلة، والذي يمكن استخدامه بعد ذلك لإنشاء سلسلة.
إغلاق StringWriter ليس له أي تأثير. يمكن استدعاء الأساليب الموجودة في هذه الفئة بعد إغلاق الدفق دون إنشاء IOException.
دفق من الأحرف يجمع دفقه في مخزن مؤقت للسلاسل، والذي يمكن بعد ذلك استخدامه لإنشاء سلسلة.
-
لماذا نحتاج إلى فئة
ByteArrayStream
؟لذا
ByteArrayInputStream
وByteArrayOutputStream
.هذه الفئات تشبه في الأساس
StringReader
و< code="">. فهو <>StringReader
يقرأ فقط الأحرف (char) من سلسلة (String)، ولكنهByteArrayInputStream
يقرأ البايتات من مصفوفة بايت (ByteArray).StringWriter
كتب أحرفًا (char) في سلسلة، لكنهByteArrayOutputStream
يكتب البايتات في مصفوفة بايت بداخلها. عند الكتابة إليهStringWriter
، تطول السلسلة الموجودة بداخله، وعند الكتابة إلىByteArrayOutputStream
صفيفه الداخلي، يتوسع البايت أيضًا ديناميكيًا. -
لماذا نحتاج إلى فئة
PrintStream
؟ اذكر الأماكن التي يستخدم فيها؟تم اختراع الفصل
PrintStream
لعرض المعلومات بطريقة قابلة للقراءة. وهو يتألف بالكامل تقريبًا من الأساليبprint
وprintln
. -
لماذا هو مطلوب
DynamicProxy
؟تحتوي Java على فئة خاصة (java.lang.reflect.Proxy) يمكنك من خلالها إنشاء كائن في وقت التشغيل (ديناميكيًا) دون إنشاء فئة منفصلة له.
-
كيف يعمل RMI؟
يرمز RMI إلى استدعاء الطريقة عن بعد. أو بمعنى آخر، RMI هي آلية تسمح لكائن في أحد أجهزة Java باستدعاء أساليب كائن في جهاز Java آخر، حتى لو كانت موجودة على أجهزة كمبيوتر مختلفة، في بلدان مختلفة، على جوانب مختلفة من الكرة الأرضية.
Традиционный подход к выполнению 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
مستوى
GO TO FULL VERSION