nio的作用:提高速度
包括FileChannel,相当于数据的存储;
ByteBuffer,相当于每次读取的一部分数据存储器。
package star20110531;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class GetChannel {
private static final int BSIZE = 1024;
public static void main(String[] args) throws IOException {
//FileOutputStream产生一个FileChannel通道
FileChannel fileChannel = new FileOutputStream("B05\\star20110531\\test.txt").getChannel();
//ByteBuffer相当于往这个通道提供的一份份数据
//wrap()是将字节数组放到ByteBuffer这个缓冲区中
fileChannel.write(ByteBuffer.wrap("star very good".getBytes()));
fileChannel.close();
//add to the end of the file
fileChannel = new RandomAccessFile("B05\\star20110531\\test.txt","rw").getChannel();
//移动位置
fileChannel.position(fileChannel.size());
fileChannel.write(ByteBuffer.wrap("bobo is good too".getBytes()));
fileChannel.close();
//读取数据
fileChannel = new FileInputStream("B05\\star20110531\\test.txt").getChannel();
ByteBuffer byteBuffer = ByteBuffer.allocate(BSIZE);
System.out.println(byteBuffer);
//上面的syso结果:java.nio.HeapByteBuffer[pos=0 lim=1024 cap=1024]
fileChannel.read(byteBuffer);
byteBuffer.flip();
//flip()方法首先对当前位置设置限制,然后将该位置设置为零。如果已定义了标记,则丢弃该标记。
// System.out.println(byteBuffer.flip());
//上面的syso结果:java.nio.HeapByteBuffer[pos=0 lim=0 cap=1024]
while(byteBuffer.hasRemaining()){
System.out.print(byteBuffer.remaining()+"->");
System.out.print((char)byteBuffer.get()+"\t");
}
}
}
分享到:
相关推荐
ByteBuffer的用法是Java NIO学习中的核心内容。 首先,我们了解下ByteBuffer的基本概念。ByteBuffer是一个字节缓冲区,可以存储字节序列。在NIO中,所有的数据读写都通过缓冲区进行,ByteBuffer与其他类型的Buffer...
Java NIO(New Input/Output)是Java标准库在JDK 1.4引入的一组新的I/O API,它提供了一种不同于传统IO的高效、非阻塞的I/O操作方式。NIO的核心概念包括Channel、Buffer和Selector,它们共同构建了一个与操作系统...
自己总结的java中NIO的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者
Java JDK 5.0是Java开发工具包的一个重要版本,由Sun Microsystems(后被Oracle收购)于2004年发布。...通过阅读“良葛格Java JDK 5.0学习笔记”,读者可以系统地学习和掌握这些内容,进一步提升自己的Java编程技能。
java学习笔记1(java io/nio)设计模式
**NIO(Non-blocking Input/Output)**是Java在1.4版本引入的一种新的I/O模型,它提供了与传统I/O不同的数据处理方式。在传统的IO模型中,数据的读写是阻塞式的,即在读取或写入数据时,程序会暂停执行,等待数据...
通过分析和理解`SimpleDirectoryListener`源码,你可以学习到如何使用Java的文件系统API来处理文件系统事件,这是一项非常实用的技能,特别是在需要实时响应文件系统变化的应用场景中。同时,这也是一个很好的机会,...
5. **NIO.2文件系统API**:引入了`java.nio.file`包,提供了一套新的文件系统操作API,支持文件路径操作、文件属性查询和变更、文件观察等,相比传统的I/O操作更加强大和高效。 6. **字符串拼接优化**:JDK 7对字符...
### Java NIO 学习笔记 #### 一、概述 Java NIO (Non-Blocking IO,也称为 Java New IO),是 Java 对传统 IO 模型的一次重大改进,旨在提高程序处理大量并发连接的能力。NIO 的核心组件包括 Channels、Buffers 和 ...
Java NIO(New Input/Output)是Java标准库在JDK 1.4版本中引入的一个新特性,它提供了一种不同于传统IO流的高效I/O处理方式。NIO的核心概念包括通道(Channel)和缓冲区(Buffer),这两个组件使得数据以块的形式...
学习和理解这些源码可以帮助我们更好地掌握Java的文件系统监控能力,以及如何在实际项目中实现高效可靠的目录监视器。在开发过程中,根据具体需求,我们可以选择使用标准的`WatchService`API,或者采用第三方库来...
在Java学习的过程中,`java_study-master`这个文件名很可能是一个项目或教程的仓库名称,通常在学习资源中,这样的命名表示这是一个关于Java学习的资料集,可能是代码示例、练习项目或者是课程笔记。 在Java编程中...
- **java.util.logging**:日志记录支持。 - **java.util.prefs**:用户偏好设置支持。 - **java.util.regex**:正则表达式支持。 - **java.util.spi**:服务提供者接口支持。 - **java.util.zip**:ZIP压缩和...
Java NIO,全称Non-Blocking Input/Output,是非阻塞式输入输出,它是Java从1.4版本开始引入的一种新的I/O模型,为Java程序员提供了处理I/O操作的新方式。NIO的主要特点是其能够使Java程序以更有效的方式处理I/O流,...
java_Java_学习笔记.pdf Java_Performance.pdf java代码效率优化.docx Java内存模型的历史变迁.docx Java在游戏服务器开发中的应用.docx java基础总结大全.txt Java开发与技术挑战——关于技术的技术思考.docx Java...
这份《java学习》笔记包含了多个核心主题,旨在帮助初学者和有经验的开发者深入理解和掌握Java技术。 1. **正则表达式(正则.md)**: 正则表达式在Java中用于文本匹配和搜索,是处理字符串的强大工具。Java提供了...
本篇学习笔记将深入解析Java线程池的框架、结构、原理以及相关源码,帮助读者全面理解线程池的工作机制。 1. 线程池模块结构 线程池框架分为多层结构,其中包括核心实现类、辅助类和接口等组件。例如,`sun.nio.ch....
以下是对"Javajdk5学习笔记"中可能包含的知识点的详细解析: 1. **自动装箱与拆箱**:JDK 5引入了自动装箱和拆箱功能,使得基本类型和它们对应的包装类之间可以无缝转换,提高了代码的简洁性。例如,`Integer i = ...
这个压缩包“Java JDK 6学习笔记.zip”显然是一个包含有关Java JDK 6深入学习资源的集合,可能是PDF文档、笔记或者其他形式的教学材料。 在Java JDK 6中,有几个关键的特性值得我们关注: 1. **改进的性能**:JDK ...
Java编写的命令行文件/文件夹管理程序是一个实用工具,它允许用户通过命令行界面执行常见的文件操作。...通过学习和理解这些知识点,不仅可以更好地理解和使用这个程序,也能提升Java编程和系统管理的技能。