當前位置: 首頁>>代碼示例>>Java>>正文


Java Pipe.SourceChannel方法代碼示例

本文整理匯總了Java中java.nio.channels.Pipe.SourceChannel方法的典型用法代碼示例。如果您正苦於以下問題:Java Pipe.SourceChannel方法的具體用法?Java Pipe.SourceChannel怎麽用?Java Pipe.SourceChannel使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在java.nio.channels.Pipe的用法示例。


在下文中一共展示了Pipe.SourceChannel方法的14個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: main

import java.nio.channels.Pipe; //導入方法依賴的package包/類
public static void main(String[] args) throws Exception {
  Pipe pipe = Pipe.open();

  Pipe.SinkChannel sinkChannel = pipe.sink();
  Pipe.SourceChannel sourceChannel = pipe.source();
  String newData = "New String to write to file..." + System.currentTimeMillis();
  ByteBuffer buf = ByteBuffer.allocate(48);
  buf.clear();
  buf.put(newData.getBytes());
  buf.flip();

  ByteBuffer bufread = ByteBuffer.allocate(48);

  while (buf.hasRemaining()) {
    sinkChannel.write(buf);
    int bytesRead = sourceChannel.read(bufread);
    System.out.println(bytesRead);
  }

}
 
開發者ID:whyDK37,項目名稱:pinenut,代碼行數:21,代碼來源:PipeTest.java

示例2: SingleInputExpect

import java.nio.channels.Pipe; //導入方法依賴的package包/類
protected SingleInputExpect(
        final Pipe.SourceChannel source,
        final Pipe.SinkChannel sink,
        final InputStream input,
        final Charset charset,
        final Appendable echoInput,
        final Filter filter,
        final int bufferSize,
        final boolean autoFlushEcho) throws IOException {
    this.input = input;
    this.charset = charset;
    this.echoInput = echoInput;
    this.filter = filter;
    this.bufferSize = bufferSize;
    this.autoFlushEcho = autoFlushEcho;
    this.source = source;
    this.sink = sink;
    source.configureBlocking(false);
    buffer = new StringBuilder();
}
 
開發者ID:Alexey1Gavrilov,項目名稱:ExpectIt,代碼行數:21,代碼來源:SingleInputExpect.java

示例3: main

import java.nio.channels.Pipe; //導入方法依賴的package包/類
public static void main(String[] args){
    Pipe pipe;
    Pipe.SinkChannel sinkChannel;
    Pipe.SourceChannel sourceChannel;

    try {
        pipe = Pipe.open();
        new Thread(new ReadWork(pipe.source())).start();
        new Thread(new WriteWork(pipe.sink())).start();

    } catch (IOException e) {
        e.printStackTrace();
    }
}
 
開發者ID:StrongAndroid,項目名稱:JavaNote,代碼行數:15,代碼來源:PipeTest.java

示例4: testStreamNonBlocking

import java.nio.channels.Pipe; //導入方法依賴的package包/類
public void testStreamNonBlocking() throws IOException {
    Pipe.SourceChannel sourceChannel = createNonBlockingChannel("abc".getBytes("UTF-8"));
    try {
        Channels.newInputStream(sourceChannel).read();
        fail();
    } catch (IllegalBlockingModeException expected) {
    }
}
 
開發者ID:Sellegit,項目名稱:j2objc,代碼行數:9,代碼來源:ChannelsTest.java

示例5: testReaderNonBlocking

import java.nio.channels.Pipe; //導入方法依賴的package包/類
/**
 * This fails on the RI which violates its own promise to throw when
 * read in non-blocking mode.
 */
public void testReaderNonBlocking() throws IOException {
    Pipe.SourceChannel sourceChannel = createNonBlockingChannel("abc".getBytes("UTF-8"));
    try {
        Channels.newReader(sourceChannel, "UTF-8").read();
        fail();
    } catch (IllegalBlockingModeException expected) {
    }
}
 
開發者ID:Sellegit,項目名稱:j2objc,代碼行數:13,代碼來源:ChannelsTest.java

示例6: createNonBlockingChannel

import java.nio.channels.Pipe; //導入方法依賴的package包/類
private Pipe.SourceChannel createNonBlockingChannel(byte[] content) throws IOException {
    Pipe pipe = Pipe.open();
    WritableByteChannel sinkChannel = pipe.sink();
    sinkChannel.write(ByteBuffer.wrap(content));
    Pipe.SourceChannel sourceChannel = pipe.source();
    sourceChannel.configureBlocking(false);
    return sourceChannel;
}
 
開發者ID:Sellegit,項目名稱:j2objc,代碼行數:9,代碼來源:ChannelsTest.java

示例7: NBCircularIOStream

import java.nio.channels.Pipe; //導入方法依賴的package包/類
public NBCircularIOStream() throws IOException {
    final Pipe pipe = Pipe.open();
    sink = new BufferedWritableSelectableChannel(new PipeSinkWritableSelectableChannel(pipe.sink()));
    final Pipe.SourceChannel source = pipe.source();
    sink.configureBlocking(false);
    source.configureBlocking(true);
    in = Channels.newInputStream(source);
}
 
開發者ID:indeedeng,項目名稱:imhotep,代碼行數:9,代碼來源:NBCircularIOStream.java

示例8: testReadableByteChannel

import java.nio.channels.Pipe; //導入方法依賴的package包/類
@Test
public void testReadableByteChannel() throws Exception {
    int[] testSizes = { 0, 10, 1023, 1024, 1025, 2047, 2048, 2049 };

    for (int size : testSizes) {
        SelectorProvider sp = SelectorProvider.provider();
        Pipe p = sp.openPipe();
        Pipe.SinkChannel sink = p.sink();
        Pipe.SourceChannel source = p.source();
        sink.configureBlocking(false);

        ByteBuffer outgoingdata = ByteBuffer.allocateDirect(size + 10);
        byte[] someBytes = new byte[size + 10];
        generator.nextBytes(someBytes);
        outgoingdata.put(someBytes);
        outgoingdata.flip();

        int totalWritten = 0;
        while (totalWritten < size + 10) {
            int written = sink.write(outgoingdata);
            if (written < 0)
                throw new Exception("Write failed");
            totalWritten += written;
        }

        File f = File.createTempFile("blah"+size, null);
        f.deleteOnExit();
        RandomAccessFile raf = new RandomAccessFile(f, "rw");
        FileChannel fc = raf.getChannel();
        long oldPosition = fc.position();

        long bytesWritten = fc.transferFrom(source, 0, size);
        fc.force(true);
        if (bytesWritten != size)
            throw new RuntimeException("Transfer failed");

        if (fc.position() != oldPosition)
            throw new RuntimeException("Position changed");

        if (fc.size() != size)
            throw new RuntimeException("Unexpected sink size "+ fc.size());

        fc.close();
        sink.close();
        source.close();

        f.delete();
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:50,代碼來源:Transfer.java

示例9: source

import java.nio.channels.Pipe; //導入方法依賴的package包/類
public Pipe.SourceChannel source()
{
  return source;
}
 
開發者ID:vilie,項目名稱:javify,代碼行數:5,代碼來源:PipeImpl.java

示例10: ReadWork

import java.nio.channels.Pipe; //導入方法依賴的package包/類
public ReadWork(Pipe.SourceChannel sourceChannel){
    this.sourceChannel = sourceChannel;
}
 
開發者ID:StrongAndroid,項目名稱:JavaNote,代碼行數:4,代碼來源:PipeTest.java

示例11: testSocketIOWithTimeout

import java.nio.channels.Pipe; //導入方法依賴的package包/類
public void testSocketIOWithTimeout() throws IOException {
  
  // first open pipe:
  Pipe pipe = Pipe.open();
  Pipe.SourceChannel source = pipe.source();
  Pipe.SinkChannel sink = pipe.sink();
  
  try {
    InputStream in = new SocketInputStream(source, TIMEOUT);
    OutputStream out = new SocketOutputStream(sink, TIMEOUT);
    
    byte[] writeBytes = TEST_STRING.getBytes();
    byte[] readBytes = new byte[writeBytes.length];
    
    out.write(writeBytes);
    doIO(null, out);
    
    in.read(readBytes);
    assertTrue(Arrays.equals(writeBytes, readBytes));
    doIO(in, null);
    
    /*
     * Verify that it handles interrupted threads properly.
     * Use a large timeout and expect the thread to return quickly.
     */
    in = new SocketInputStream(source, 0);
    Thread thread = new Thread(new ReadRunnable(in));
    thread.start();
    
    try {
      Thread.sleep(1000);
    } catch (InterruptedException ignored) {}
    
    thread.interrupt();
    
    try {
      thread.join();
    } catch (InterruptedException e) {
      throw new IOException("Unexpected InterruptedException : " + e);
    }
    
    //make sure the channels are still open
    assertTrue(source.isOpen());
    assertTrue(sink.isOpen());

    out.close();
    assertFalse(sink.isOpen());
    
    // close sink and expect -1 from source.read()
    assertEquals(-1, in.read());
    
    // make sure close() closes the underlying channel.
    in.close();
    assertFalse(source.isOpen());
    
  } finally {
    if (source != null) {
      source.close();
    }
    if (sink != null) {
      sink.close();
    }
  }
}
 
開發者ID:rhli,項目名稱:hadoop-EAR,代碼行數:65,代碼來源:TestSocketIOWithTimeout.java

示例12: main

import java.nio.channels.Pipe; //導入方法依賴的package包/類
public static void main(String[] args) {

		try {
			// Creamos una instancia de Pipe
			Pipe pipe = Pipe.open();

			// Obtenemos el sink channel, el cual usamos para la escritura
			Pipe.SinkChannel sinkChannel = pipe.sink();

			String message = "Data sent through Java NIO Channels Pipe";

			ByteBuffer buffer = ByteBuffer.allocate(512);
			buffer.clear();
			buffer.put(message.getBytes());

			buffer.flip();
			
			// Escribimos el mensaje en el channel
			while (buffer.hasRemaining()) {
				sinkChannel.write(buffer);
			}
			
			// Obtenemos el source channel el cual usamos para leer
			Pipe.SourceChannel sourceChannel = pipe.source();
			buffer = ByteBuffer.allocate(512);

			// Vamos leyendo los datos y escribiendo en la consola
			while (sourceChannel.read(buffer) > 0) {
				buffer.flip();

				while (buffer.hasRemaining()) {
					System.out.print((char) buffer.get());
				}

				buffer.clear();
			}
		} catch (IOException e) {
			// Log and Handle exception
			e.printStackTrace();
		}
	}
 
開發者ID:ldebello,項目名稱:javacuriosities,代碼行數:42,代碼來源:Lesson07Pipe.java

示例13: getReadChannel

import java.nio.channels.Pipe; //導入方法依賴的package包/類
Pipe.SourceChannel getReadChannel() {
  return outboundSource;
}
 
開發者ID:FIXTradingCommunity,項目名稱:silverflash,代碼行數:4,代碼來源:PipeTransport.java

示例14: ReadPipe

import java.nio.channels.Pipe; //導入方法依賴的package包/類
public ReadPipe(Pipe.SourceChannel selectable) throws IOException{
    super(selectable, null);
}
 
開發者ID:santhosh-tekuri,項目名稱:jlibs,代碼行數:4,代碼來源:ReadPipe.java


注:本文中的java.nio.channels.Pipe.SourceChannel方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。