-
Perché è necessario
RandomAccessFile
?RandomAccessFile
è una classe nel pacchetto API Java IO, ti consente di navigare, leggere o scrivere su un file come preferisci. Puoi anche sostituire parti esistenti di un file; stiamo parlando di aggiornare il contenuto di un file, o più precisamente di aggiornare un frammento di un file. Questo non può essere fatto conFileInputStream
oFileOutputStream
, maRandomAccessFile
ti darà questa capacità.Collegamento: RandomAccessFile e le sue funzionalità
-
Cosa succede se il file da cui si legge
RandomAccessFile
non esiste?Volere
FileNotFoundException
-
Cosa succede se il file in cui scrive
RandomAccessFile
non esiste?Ne creerà uno nuovo e lo scriverà su di esso.
-
Perché abbiamo bisogno di una lezione
StringReader
?La classe Java.io.StringReader è un flusso di caratteri la cui origine è una stringa.
Rappresenta un flusso di caratteri la cui origine è denominata stringa
-
Perché abbiamo bisogno di una lezione
StringWriter
?public class StringWriter
extends Writer
Un flusso di caratteri che raccoglie il proprio output in un buffer di stringhe, che può quindi essere utilizzato per costruire una stringa.
La chiusura di uno StringWriter non ha alcun effetto. I metodi di questa classe possono essere chiamati dopo che il flusso è stato chiuso senza generare una IOException.
Un flusso di caratteri che raccoglie il proprio flusso in un buffer di stringhe, che può quindi essere utilizzato per creare una stringa.
-
Perché abbiamo bisogno di una lezione
ByteArrayStream
?Così
ByteArrayInputStream
eByteArrayOutputStream
.Queste classi sono essenzialmente simili a
StringReader
e< code="">. Legge solo <>StringReader
caratteri (char) da una stringa (String), maByteArrayInputStream
legge byte da un array di byte (ByteArray).StringWriter
ha scritto caratteri (char) in una stringa, maByteArrayOutputStream
scrive byte in un array di byte al suo interno. Durante la scrittura su diStringWriter
esso, la stringa al suo interno si allungava e durante la scrittura sulByteArrayOutputStream
suo array interno, anche il byte si espandeva dinamicamente. -
Perché abbiamo bisogno di una lezione
PrintStream
? Quali sono i luoghi in cui viene utilizzato?La classe
PrintStream
è stata inventata per visualizzare le informazioni in modo leggibile. Consiste quasi interamente in metodiprint
eprintln
. -
Perché è necessario
DynamicProxy
?Java ha una classe speciale (java.lang.reflect.Proxy) con la quale puoi effettivamente costruire un oggetto in fase di esecuzione (dinamicamente) senza creare una classe separata per esso.
-
Come funziona l'RMI?
RMI sta per Invocazione del metodo remoto. O in altre parole, RMI è un meccanismo che consente a un oggetto in una macchina Java di richiamare i metodi di un oggetto in un'altra macchina Java, anche se si trovano su computer diversi, in paesi diversi, su parti diverse del globo.
L'approccio tradizionale all'esecuzione del codice su altre macchine in una rete può creare confusione a causa della sua implementazione noiosa e soggetta a errori. Il modo migliore per considerare questo problema è presupporre che alcuni oggetti si trovino su un'altra macchina e che sia possibile inviare messaggi a questi oggetti remoti e ricevere il risultato come se si trovassero sulla macchina locale. Questa semplificazione è esattamente ciò che la Remote Method Invocation (RMI) ti consente di fare in Java.
Ecco un articolo sulla creazione della tua implementazione RMI: Remote Method Invocation (RMI)
-
Quali tipi di oggetti possono essere trasferiti tramite RMI?
Gli oggetti devono implementare un'interfaccia
Serializable
L'invocazione del metodo remoto è un meccanismo che consente di chiamare un metodo su un oggetto remoto. Secondo esso, tutte le operazioni per la preparazione e la trasmissione dei dati sono incapsulate in un metodo chiamato dell'oggetto stub del client. La chiamata al metodo in sé non è diversa dalla chiamata a un metodo su un normale oggetto locale, con alcune eccezioni:
- gli oggetti locali vengono passati per valore (copie);
- quando si trasferisce un
Remote
oggetto remoto ( ), se viene esportato, viene trasferito lo stub di questo oggetto; - gli oggetti passati devono essere
Serializable
; - oltre a tutte le altre situazioni eccezionali, quando si chiama un metodo remoto, può essere sollevata un'eccezione
RemoteException
(errori di marshalling/unmarshalling, errori di trasferimento dati e altri possibili errori di protocollo);
Va anche notato che quando chiamiamo un metodo, lavoriamo con un'interfaccia remota e non con una classe remota.
DefNeo
Livello 36
GO TO FULL VERSION