`
qianhao_1987
  • 浏览: 21311 次
  • 性别: 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);
	}
 }
分享到:
评论

相关推荐

    NIO学习总结经典

    《NIO学习总结经典》这篇文章主要探讨了Java的New IO(NIO)框架,这是一个用于高效处理I/O操作的重要库,特别是在处理大量并发连接时。NIO与传统的IO(-blocking I/O)相比,提供了非阻塞的I/O模型,极大地提高了...

    JAVA_NIO学习总结

    ### JAVA_NIO学习总结 #### 重要知识点概览 JAVA_NIO(Non-blocking I/O,非阻塞I/O)是Java平台中用于替代传统IO(Blocking IO)的一种高性能IO处理模型,首次出现在JDK 1.4中。NIO通过引入通道(Channel)和缓冲区...

    NIO学习与总结

    ### NIO学习与总结 #### 一、NIO概述与核心概念 **NIO(New IO)**,即新输入/输出技术,是Java 1.4版本开始引入的一种新的I/O处理方式,旨在提高Java应用程序的I/O处理效率。与传统的基于流的I/O相比,NIO更加...

    nio学习文档及代码

    本资料包包含了"nio学习文档及示例代码",旨在帮助开发者快速理解和应用NIO。 **1. NIO基础** NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。通道是数据传输的路径,如文件通道、...

    javaNIO.xmind

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

    javaNIO学习笔记

    ### Java NIO 学习笔记 #### 一、概述 Java NIO (Non-Blocking IO,也称为 Java New IO),是 Java 对传统 IO 模型的一次重大改进,旨在提高程序处理大量并发连接的能力。NIO 的核心组件包括 Channels、Buffers 和 ...

    Java NIO系列教程(一) Java NIO 概述

    ### Java NIO 系列教程(一):Java NIO 概述 #### 一、引言 Java NIO(New IO)是Java SE 1.4版本引入的一个新的I/O处理框架,它...在未来的学习过程中,继续深入理解这些概念将有助于您更好地掌握Java NIO技术。

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

    总结来说,NIO 和 MINA 为Java网络编程提供了更高效、更灵活的解决方案。相比于传统的阻塞式socket,NIO降低了系统资源的消耗,MINA则进一步简化了NIO的使用,使得开发者能更专注于应用的业务逻辑。对于需要处理大量...

    nio入门 IBM教材,pdf格式

    ### NIO 入门知识点详解 #### 一、NIO 的引入及其...通过对 NIO 的学习和实践,程序员能够更好地应对现代软件开发中的高性能需求。无论是对于初学者还是有一定经验的开发者来说,掌握 NIO 都是一项非常有价值的技能。

    NIO网络通讯编程

    总结来说,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流...

    Java.NIO资源下载资源下载

    根据提供的文件信息,我们可以提取并总结出关于Java NIO(New Input/Output)的重要知识点。 ### Java NIO 概述 Java NIO 是 Java 平台的一个重要特性,首次出现在 Java 1.4 版本中。它为 Java 开发者提供了一套...

    NIO.rar_NIO_java nio

    总结来说,Java NIO提供了更高效、灵活的I/O处理机制,特别是对于高并发、大数据量的场景,NIO的优势更为明显。通过学习和掌握NIO,开发者可以编写出更高效、更具扩展性的I/O密集型应用。"NIO修正版書面例子"这个...

    NIO实例

    总结来说,NIO是Java提供的一种高效、非阻塞的I/O模型,适用于高并发场景,包括通道、缓冲区、选择器等核心组件。通过阅读相关博文和研究代码实例,我们可以深入理解并掌握NIO技术,提高我们的Java网络编程能力。

Global site tag (gtag.js) - Google Analytics