-
Tại sao nó lại cần thiết
RandomAccessFile
?RandomAccessFile
là một lớp trong gói Java IO API, nó cho phép bạn điều hướng, đọc hoặc ghi vào tệp theo ý muốn. Bạn cũng có thể thay thế các phần hiện có của tệp; chúng ta đang nói về việc cập nhật nội dung của tệp hoặc chính xác hơn là cập nhật một đoạn của tệp. Điều này không thể được thực hiện vớiFileInputStream
orFileOutputStream
, nhưngRandomAccessFile
sẽ cung cấp cho bạn khả năng này.Liên kết: RandomAccessFile và các khả năng của nó
-
Điều gì xảy ra nếu tập tin mà nó đọc
RandomAccessFile
không tồn tại?Sẽ
FileNotFoundException
-
Điều gì xảy ra nếu tập tin nơi nó ghi
RandomAccessFile
không tồn tại?Nó sẽ tạo một cái mới và viết nó vào nó.
-
Tại sao chúng ta cần một lớp học
StringReader
?Lớp Java.io.StringReader là một luồng ký tự có nguồn là một chuỗi.
Biểu thị một luồng ký tự có nguồn được gọi là chuỗi
-
Tại sao chúng ta cần một lớp học
StringWriter
?public class StringWriter
extends Writer
Luồng ký tự thu thập đầu ra của nó trong bộ đệm chuỗi, sau đó có thể được sử dụng để xây dựng một chuỗi.
Đóng StringWriter không có hiệu lực. Các phương thức trong lớp này có thể được gọi sau khi luồng đã bị đóng mà không tạo ra IOException.
Một luồng ký tự thu thập luồng của nó vào một bộ đệm các chuỗi, sau đó có thể được sử dụng để tạo một chuỗi.
-
Tại sao chúng ta cần một lớp học
ByteArrayStream
?Vậy sau
ByteArrayInputStream
đóByteArrayOutputStream
.Các lớp này về cơ bản là tương tự
StringReader
và< code="">. Nó chỉ <>StringReader
đọc các ký tự (char) từ một chuỗi (String), nhưngByteArrayInputStream
đọc byte từ một mảng byte (ByteArray).StringWriter
đã viết các ký tự (char) thành một chuỗi, nhưngByteArrayOutputStream
ghi byte vào một mảng byte bên trong nó. Khi ghi vàoStringWriter
nó, chuỗi bên trong nó dài ra và khi ghi vàoByteArrayOutputStream
mảng bên trong, byte cũng tự động mở rộng. -
Tại sao chúng ta cần một lớp học
PrintStream
? Kể tên những nơi nó được sử dụng?Lớp
PrintStream
được phát minh để hiển thị thông tin theo cách dễ đọc. Nó bao gồm gần như hoàn toàn các phương thứcprint
vàprintln
. -
Tại sao nó lại cần thiết
DynamicProxy
?Java có một lớp đặc biệt (java.lang.reflect.Proxy) mà bạn thực sự có thể xây dựng một đối tượng trong thời gian chạy (động) mà không cần tạo một lớp riêng cho nó.
-
RMI hoạt động như thế nào?
RMI là viết tắt của Gọi phương thức từ xa. Hay nói cách khác, RMI là một cơ chế cho phép một đối tượng trong một máy Java gọi các phương thức của một đối tượng trong một máy Java khác, ngay cả khi chúng ở trên các máy tính khác nhau, ở các quốc gia khác nhau, ở các phía khác nhau trên toàn cầu.
Традиционный подход к выполнению 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
Mức độ
GO TO FULL VERSION