Questo è un classico: come si può leggere() se non c'è nulla da leggere? NIO è chiaramente ad alte prestazioni, dedicato al raggiungimento di un io non bloccante. Provare a fare nio su Socket.read() - si otterrà comunque un'operazione di blocco o di caduta del timeout ... nessuna quantità di fantasia farà apparire i dati sulla 'porta' a meno che non si generino alcuni dati ...
final SecureRandom dataGenerator = SecureRandom.getInstance("SHA1PRNG");
final Integer range = new Integer('z' - 'a');
for (big loop)
{
buffer.append(dataGenerator.nextInt (range.intValue() + (int) 'a'));
// ............
do.something(buffer.toString());
Ora le tue abilità di sviluppo si spostano, anche se a un ritmo glaciale ma si muovono.
try {
// Create a read/writeable file channel
File file = new File("filename");
FileChannel channel = new RandomAccessFile(file, "rw").getChannel();
// Create an output stream on the channel
OutputStream os = Channels.newOutputStream(channel);
// Create an inputstream on the channel
InputStream is = Channels.newInputStream(channel);
// Close the channel
is.close();
} catch (IOException e) {
}
messaggio Modifica: afferro la tua risposta critica, aspettare che i tuoi dodicimila linee in CORBA cercando di attuare readObjectNoData() (utile per l'inizializzazione degli oggetti deserializzate correttamente nonostante un flusso di fonti "ostile" o incompleta)
Il mio unico codice psuedo prevedeva una sorta di flusso di dati da decodificare, ricaricare o qualsiasi altra cosa - rileggo il tuo post; Penso che dica come leggere() non bloccare l'io su un oggetto che potrebbe non esserci ... che approfondisce profondamente i noti problemi di Eccezione e programmazione, diventa rischioso di provare a farlo funzionare con qualcuno che pone la domanda nel modo lo hai formulato, prova a riformulare e ad altri mi spieghi che cosa stai chiedendo.
Andrò al banco dei taco proprio al momento.
fonte
2009-09-26 18:44:46
forse è possibile utilizzare il metodo available() se il flusso da interrogare se ci sono byte da leggere. – clamp
typo: che dovrebbe ovviamente leggere "... del flusso .." – clamp