删除织梦综合网站微信小程序源代码
删除织梦综合网站,微信小程序源代码,做网站的图片,做个人网站需要哪些Java#xff1a;全面 清晰的 NIO 学习攻略发布时间#xff1a;2018-11-19 09:19,浏览次数#xff1a;202, 标签#xff1a;JavaNIO前言* JDK 1.4后#xff0c;Java提供了一个全新的IO API#xff0c;即 Java New IO* 本文 全面 详细解析Java New IO全面 清晰的 NIO 学习攻略发布时间2018-11-19 09:19,浏览次数202, 标签JavaNIO前言* JDK 1.4后Java提供了一个全新的IO API即 Java New IO* 本文 全面 详细解析Java New IO希望你们会喜欢目录储备知识Java IO1. 定义* 即 Java New IO* 是1个全新的、 JDK 1.4后提供的 IO API2. 作用* 提供了与标准IO不同的IO工作方式* 可替代 标准Java IO 的IO API3. 新特性对比于 Java IONIO具备的新特性如下4. 核心组件Java NIO的核心组件 包括* 通道(Channel)* 缓冲区(Buffer)* 选择器(Selectors)下面将详细介绍5. 具体使用5.1 基于通道 缓冲数据具体步骤如下// 1. 获取数据源 和 目标传输地的输入输出流(此处以数据源 文件为例) FileInputStream fin newFileInputStream(infile); FileOutputStream fout new FileOutputStream(outfile);// 2. 获取数据源的输入输出通道 FileChannel fcin fin.getChannel(); FileChannel fcout fout.getChannel(); // 3. 创建 缓冲区 对象Buffer(共有2种方法) // 方法1使用allocate()静态方法ByteBuffer buff ByteBuffer.allocate(256); // 上述方法创建1个容量为256字节的ByteBuffer //注若发现创建的缓冲区容量太小则重新创建一个大小合适的缓冲区 // 方法2通过包装一个已有的数组来创建 //注通过包装的方法创建的缓冲区保留了被包装数组内保存的数据 ByteBuffer buff ByteBuffer.wrap(byteArray); //额外若需将1个字符串存入ByteBuffer则如下 String sendString你好,服务器. ; ByteBuffer sendBuff ByteBuffer.wrap(sendString.getBytes(UTF-16)); // 4. 从通道读取数据 写入到缓冲区 // 注若以读取到该通道数据的末尾则返回-1 fcin.read(buff); // 5. 传出数据准备将缓存区的写模式 转换- 读模式buff.flip(); // 6. 从 Buffer 中读取数据 传出数据到通道 fcout.write(buff); // 7. 重置缓冲区 //目的重用现在的缓冲区,即 不必为了每次读写都创建新的缓冲区在再次读取之前要重置缓冲区 // 注不会改变缓冲区的数据只是重置缓冲区的主要索引值buff.clear();5.2 基于选择器(Selecter)具体步骤如下// 1. 创建Selector对象 Selector sel Selector.open(); // 2. 向Selector对象绑定通道 // a.创建可选择通道并配置为非阻塞模式 ServerSocketChannel server ServerSocketChannel.open();server.configureBlocking(false); // b. 绑定通道到指定端口 ServerSocket socket server.socket(); InetSocketAddress address new InetSocketAddress(port);socket.bind(address); // c. 向Selector中注册感兴趣的事件 server.register(sel,SelectionKey.OP_ACCEPT); return sel; // 3. 处理事件 try { while(true) { //该调用会阻塞直到至少有一个事件就绪、准备发生 selector.select(); // 一旦上述方法返回线程就可以处理这些事件Set keys selector.selectedKeys(); Iterator iter keys.iterator(); while (iter.hasNext()) { SelectionKey key (SelectionKey)iter.next(); iter.remove(); process(key); } } } catch (IOException e) {e.printStackTrace(); }6. 实例讲解* 实例说明实现文件复制功能* 实现方式通道FileChannel、 缓冲区ByteBuffer import java.io.FileInputStream; importjava.io.FileOutputStream; import java.io.IOException; importjava.nio.ByteBuffer; import java.nio.channels.FileChannel; public class Test {public static void main(String[] args) throws IOException { // 设置输入源 输出地 文件String infile C:\\copy.sql; String outfile C:\\copy.txt; // 1. 获取数据源 和目标传输地的输入输出流(此处以数据源 文件为例) FileInputStream fin new FileInputStream(infile);FileOutputStream fout new FileOutputStream(outfile); // 2. 获取数据源的输入输出通道FileChannel fcin fin.getChannel(); FileChannel fcout fout.getChannel(); //3. 创建缓冲区对象 ByteBuffer buff ByteBuffer.allocate(1024); while (true) { // 4.从通道读取数据 写入到缓冲区 // 注若 以读取到该通道数据的末尾则返回-1 int r fcin.read(buff); if (r -1) { break; } // 5. 传出数据准备调用flip()方法 buff.flip(); // 6. 从 Buffer 中读取数据 传出数据到通道 fcout.write(buff); // 7. 重置缓冲区 buff.clear(); } } }7. 与Java IO的区别8. 总结* 本文全面讲解了Java中的NIO的相关知识* 下面我将继续对 Android Java中的知识进行深入讲解 有兴趣可以继续关注Carson_Ho的安卓开发笔记请帮顶 / 评论点赞因为你的鼓励是我写作的最大动力
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/86396.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!