[Java] Java I/O 的工作机制 →→→→→进入此内容的聊天室

来自 , 2020-02-09, 写在 Java, 查看 108 次.
URL http://www.code666.cn/view/81e5f81d
  1. try {
  2.             StringBuffer str = new StringBuffer();
  3.             char[] buf = new char[1024];
  4.             FileReader f = new FileReader("file");
  5.             while(f.read(buf)>0){
  6.                 str.append(buf);
  7.             }
  8.             str.toString();
  9.  } catch (IOException e) {}//源代码片段来自云代码http://yuncode.net
  10.                        
  11.  
  12.  
  13. public void selector() throws IOException {
  14.         ByteBuffer buffer = ByteBuffer.allocate(1024);
  15.         Selector selector = Selector.open();
  16.         ServerSocketChannel ssc = ServerSocketChannel.open();
  17.         ssc.configureBlocking(false);//设置为非阻塞方式
  18.         ssc.socket().bind(new InetSocketAddress(8080));
  19.         ssc.register(selector, SelectionKey.OP_ACCEPT);//注册监听的事件
  20.         while (true) {
  21.             Set selectedKeys = selector.selectedKeys();//取得所有key集合
  22.             Iterator it = selectedKeys.iterator();
  23.             while (it.hasNext()) {
  24.                 SelectionKey key = (SelectionKey) it.next();
  25.                 if ((key.readyOps() & SelectionKey.OP_ACCEPT) == SelectionKey.OP_ACCEPT) {
  26.                     ServerSocketChannel ssChannel = (ServerSocketChannel) key.channel();
  27.                  SocketChannel sc = ssChannel.accept();//接受到服务端的请求
  28.                     sc.configureBlocking(false);
  29.                     sc.register(selector, SelectionKey.OP_READ);
  30.                     it.remove();
  31.                 } else if
  32.                 ((key.readyOps() & SelectionKey.OP_READ) == SelectionKey.OP_READ) {
  33.                     SocketChannel sc = (SocketChannel) key.channel();
  34.                     while (true) {
  35.                         buffer.clear();
  36.                         int n = sc.read(buffer);//读取数据
  37.                         if (n <= 0) {
  38.                             break;
  39.                         }
  40.                         buffer.flip();
  41.                     }
  42.                     it.remove();
  43.                 }
  44.             }
  45.         }
  46. }//源代码片段来自云代码http://yuncode.net
  47.                        

回复 "Java I/O 的工作机制"

这儿你可以回复上面这条便签

captcha