`
qianhao_1987
  • 浏览: 20346 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

NIO学习总结

阅读更多
/** 
  * 使用传统的I/O读取文件内容
  * @param filePath  文件路径
   * @throws IOException
*/
 public static void ioRead(String filePath) throws IOException {
        File file = new File(filePath);
        FileInputStream fis = new FileInputStream(file);
        byte[] b = new byte[1024];
        fis.read(b);
        System.out.println(new String(b));
 }

/**
  * 使用NIO读取文件内容
  * @param filePath 文件路径
  * @throws IOException
*/
  public static void nioRead(String filePath) throws IOException {
        File file = new File(filePath);
        FileInputStream fis = new FileInputStream(file);
        FileChannel channel = fis.getChannel();
        ByteBuffer b = ByteBuffer.allocate(1024);
        channel.read(b);
        byte[] by = b.array();
        System.out.println(new String(by));
  }
	
/**
  * 传统I/O写文件
  * 
  * @param filePath  文件路径
  * @throws IOException
*/
  public static void ioWrite(String filePath) throws IOException 
  {
        File file = new File(filePath);
        FileOutputStream fos = new FileOutputStream(file);
        String[] contents = new String[] { "qian", "hao" };
        for (String content : contents) 
        {
	   byte[] b = content.getBytes(Charset.forName("UTF-8"));
	   fos.write(b);
        }
   }

/**
  * NIO写文件
  * @param filePath 文件路径
  * @throws IOException
*/
 public static void nioWrite(String filePath) throws IOException
 {
        File file = new File(filePath);
        FileOutputStream fos = new FileOutputStream(file);
        // 获取文件通道
         FileChannel channel = fos.getChannel();
        // 设置文件缓冲区
         ByteBuffer buffer = ByteBuffer.allocate(1024);
        String[] contents = new String[] { "qian", "hao" };
        // 将数据读入缓冲区中
         for (String content : contents) 
       {
	  buffer.put(content.getBytes());
       }
       // 通道反转(将读通道转化为写通道)
	  buffer.flip();
       // 将文件写入写通道中
	  channel.write(buffer);
 }

/**
  * 将一个文件内容复制到另外一个文件中
  * @param resource  源文件路径
  * @param destination 目标文件路径
  * @throws IOException
*/
 public static void nioCopyFile(String resource, String destination)
				throws IOException 
{
       // 设置文件输入流
        FileInputStream fis = new FileInputStream(resource);
       // 设置文件输出流
        FileOutputStream fos = new FileOutputStream(destination);
       // 设置输入通道
        FileChannel readChannel = fis.getChannel();
       // 设置输出通道
        FileChannel writeChannel = fos.getChannel();
       // 创建缓冲区
        ByteBuffer buffer = ByteBuffer.allocate(1024);
       // 复制文件
        while (true) 
       {
        // 清空缓冲,使其接受新的数据
	buffer.clear();
        // 从输入通道中将数据写入缓冲区中
	int len = readChannel.read(buffer);
        // 判断是否文件已读取完成
	if (len == -1) 
         {
	   break;
	}
        // 将缓冲区的数据些到另外一个通道,(输入通道反转到输出通道)
	   buffer.flip();
        // 从输出通道将数据写到缓冲区,写入文件中
	   writeChannel.write(buffer);
	}
 }
分享到:
评论

相关推荐

    JAVA_NIO学习总结

    JAVA_NIO学习总结J

    NIO学习总结经典

    NULL 博文链接:https://edison87915.iteye.com/blog/729203

    NIO学习与总结

    NIO的学习记录以及自己的总结,对关于NIO有个简单深刻的认识,可以应用在各个开发应用之中提升性能

    NIO学习资料大全

    最全的NIO学习资料总结! JAVA_NIO(全面细致).pdf,Java_NIO_细节.pdf nio原理与实例(看).png 提升网管通讯模块的消息吞吐量(两种模式比较).png

    Java NIO核心概念总结篇

    这是学习Java NIO过程中总结的核心概念,里面包含了基本的知识点,详细知识点也可以查看我的博客:pcwl_java里的Java NIO篇

    niosocket及其开源框架MINA学习总结收集.pdf

    niosocket及其开源框架MINA学习总结收集.pdf

    javaNIO.xmind

    自己总结的java中NIO的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者

    java7源码-java-nio-master:Java

    NIO学习总结 主要内容: NIO简介: Java NIO 是 java 1.4, 之后新出的一套IO接口NIO中的N可以理解为Non-blocking,不单纯是New。 NIO的特性/NIO与IO区别: 1)IO是面向流的,NIO是面向缓冲区的; 2)IO流是阻塞的,NIO流...

    The_Study_about_Java.nio.rar_java nio

    java.nio包的学习总结,看看确实有收获

    java IO NIO AIO.xmind

    涉及到java io, nio, aio相关知识点,学习过程中的一些总结,持续更新中,xmind 格式

    NIO(java)原生实现,没有用任何框架

    java nio 的服务端完整实现,应该可以商用,但我没有真实投入商用,就是一个学习过程的总结,代码应该算是很完整,对学习nio应该是很有帮助,而且没有使用任何框架,但借鉴了很多框架的核心代码。

    Java源码,可运行的实战SpringBoot服务源码(实战中总结测试)

    「喜欢的自提」 可以直接运行的代码,里面是我在工作中用来学和和测试的代码,一般是得到想要的测试结果,就直接用于实战项目中...17、BIO、NIO、AIO、Reactor、netty相关学习总结和测试(客户端/服务端通信测试demo)

    XSocket的学习和总结

    XSocket的学习和总结 应用服务器网络应用网络协议.net编程 xSocket是一个易于使用的基于NIO库来构建高性能,可扩展的网络应用。 它支持写入以及服务器端的应用,以直观的方式客户端应用程序。 检测问题,如低水平...

    Java基础知识点总结.docx

    无论是工作学习,不断的总结是必不可少的。只有不断的总结,发现问题,弥补不足,才能长久的进步!!Java学习更是如此,知识点总结目录如下: 目录 一、 Java概述 3 二、 Java语法基础 5 数据类型 5 运算符号 14 ...

    精通并发与netty视频教程(2018)视频教程

    48_Netty与NIO系统总结及NIO与Netty之间的关联关系分析 49_零拷贝深入剖析及用户空间与内核空间切换方式 50_零拷贝实例深度剖析 51_NIO零拷贝彻底分析与Gather操作在零拷贝中的作用详解 52_NioEventLoopGroup源码...

    J2EE(Java EE)技术总结-J2EE学习精华教程-电子书

    本书内容非常全面,涵盖了多册J2EE书籍所有知识要点,并结合作者自己经验总结而编写,内容相当丰富 众所周知,一般书籍为了销售需要,往往很少的知识点,却需要添加大量的废话、例子,以增加书本厚度,使得阅读者...

    精通并发与 netty 视频教程(2018)视频教程

    47_Netty服务器与客户端编码模式回顾及源码分析准备 48_Netty与NIO系统总结及NIO与Netty之间的关联关系分析 49_零拷贝深入剖析及用户空间与内核空间切换方式 50_零拷贝实例深度剖析 51_NIO零拷贝彻底分析与Gather...

    Java IO 体系.md

    Java IO 体系 - Java IO 体系 ...Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从 Java 的 BIO 开始,一步一步深入学习,引出 JDK1.4 之后出现的 NIO

Global site tag (gtag.js) - Google Analytics