-
Dlaczego jest to potrzebne
RandomAccessFile
?RandomAccessFile
to klasa w pakiecie Java IO API, która umożliwia nawigację, odczytywanie i zapisywanie pliku według własnego uznania. Można także podmienić istniejące części pliku, mówimy o aktualizacji zawartości pliku, a dokładniej o aktualizacji fragmentu pliku. Nie można tego zrobić za pomocąFileInputStream
lubFileOutputStream
, aleRandomAccessFile
da ci to możliwość. -
Co się stanie, jeśli plik, z którego odczytuje,
RandomAccessFile
nie istnieje?Będzie
FileNotFoundException
-
Co się stanie, jeśli plik, w którym zapisuje,
RandomAccessFile
nie istnieje?Utworzy nowy i zapisze go do niego.
-
Dlaczego potrzebujemy zajęć
StringReader
?Klasa Java.io.StringReader to strumień znaków, którego źródłem jest ciąg znaków.
Reprezentuje strumień znaków, którego źródło nazywa się ciągiem
-
Dlaczego potrzebujemy zajęć
StringWriter
?public class StringWriter
extends Writer
Strumień znaków gromadzący dane wyjściowe w buforze ciągów znaków, którego następnie można użyć do skonstruowania ciągu znaków.
Zamknięcie StringWriter nie ma żadnego efektu. Metody w tej klasie można wywołać po zamknięciu strumienia bez generowania wyjątku IOException.
Strumień znaków gromadzący swój strumień w buforze ciągów, który następnie można wykorzystać do utworzenia ciągu.
-
Dlaczego potrzebujemy zajęć
ByteArrayStream
?Tak
ByteArrayInputStream
iByteArrayOutputStream
.Klasy te są zasadniczo podobne do
StringReader
i< code="">. Odczytuje tylko <>StringReader
znaki (char) z ciągu znaków (String), aleByteArrayInputStream
odczytuje bajty z tablicy bajtów (ByteArray).StringWriter
zapisał znaki (char) w łańcuchu, aleByteArrayOutputStream
zapisał bajty w tablicy bajtów znajdującej się w nim. Podczas zapisywania doStringWriter
niego znajdujący się w nim ciąg znaków wydłużał się, a podczas zapisywania doByteArrayOutputStream
wewnętrznej tablicy bajt również dynamicznie się rozszerzał. -
Dlaczego potrzebujemy zajęć
PrintStream
? Podaj nazwy miejsc, w których jest używany?Klasa
PrintStream
została wymyślona, aby wyświetlać informacje w czytelny sposób. Prawie w całości składa się z metodprint
iprintln
. -
Dlaczego jest to potrzebne
DynamicProxy
?Java ma specjalną klasę (java.lang.reflect.Proxy), za pomocą której możesz faktycznie skonstruować obiekt w czasie wykonywania (dynamicznie) bez tworzenia dla niego osobnej klasy.
-
Jak działa RMI?
RMI oznacza zdalne wywołanie metody. Innymi słowy, RMI to mechanizm, który pozwala obiektowi na jednej maszynie Java wywoływać metody obiektu na innej maszynie Java, nawet jeśli znajdują się one na różnych komputerach, w różnych krajach, po różnych stronach globu.
Традиционный подход к выполнению kodа на других машинах, разнесенных по сети может смутить из-за своей нудной и склонной к ошибкам реализации. Лучший способ рассмотреть эту проблему состоит в предположении, что некоторые obiektы располагаются на другой машине, и что вы можете посылать wiadomości этим удаленным obiektам и получать результат, Jak будто они располагаются на вашей локальной машине. Это упрощение в точности является тем, что позволяет делать Удаленный Вызов Методов (RMI) в Java.
Вот статья по созданию собственной реализации RMI: Удаленный вызов методов (RMI)
-
Объекты Jakих типов можно передавать по RMI?
Объекты должны имплементировать интерфейс
Serializable
Remote method Invocation — механизм, который позволяет вызывать метод удалённого obiektа. Согласно ему, все операции по подготовке и передаче данных инкапсулируются в вызываемом методе клиентского obiektа-заглушки (stub). Сам же вызов метода ничем не отличается от вызова метода обычного локального obiektа, за небольшим исключением:
- локальные obiektы передаются по значению (копии);
- при передаче удалённого (
Remote
) obiektа, если он экспортирован, передаётся stub этого obiektа; - передаваемые obiektы должны быть
Serializable
; - кроме всех прочих исключительных ситуаций, при вызове удалённого метода может возбуждаться исключение
RemoteException
(ошибки маршализации/демаршализации, передачи данных и другие возможные ошибки протокола);
Так же нужно отметить, что при вызове метода мы работаем с удалённым интерфейсом, а не с удалённым классом.
DefNeo
Poziom 36
GO TO FULL VERSION