`
pluto418
  • 浏览: 169568 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

NIO基本(1)

    博客分类:
  • J2SE
阅读更多
1. FileChannel

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class SimpleChannel {
	private static String SOURCE_PATH = "d:/aa/aa.txt";
	private static String CLONE_PATH = "d:/bb/bb.txt";
	
	public static void main(String[] args) throws Exception {
		FileInputStream fis = new FileInputStream(new File(SOURCE_PATH));
		FileChannel fcInput = fis.getChannel();
		
		FileOutputStream fos = new FileOutputStream(new File(CLONE_PATH));
		FileChannel fcOutput = fos.getChannel();
		
		ByteBuffer dst = ByteBuffer.allocate(1024);
		while(true) {
			// before read clear()
			dst.clear();
			if(fcInput.read(dst) == -1) {
				break;
			}
			System.out.print(new String(dst.array()));
			
			// before write flip()
			dst.flip();
			fcOutput.write(dst);
			
		}
		fos.flush();
		fcInput.close();
		fcOutput.close();
		fis.close();
		fos.close();
	}
}


还可以使用下面方式进行操作,在FileChannel中有两个特殊方法可以允许我们直接将两个通道相连:
long transferFrom(ReadableByteChannel src, long position, long count);
long transferTo(long position, long count, WriteableByteChannel targets);
另外
java.nio.channels.Channels类中提供了实用方法,可以在通道中产生Reader和Writer
Reader和Writer可以通过 Channels.newReader(); Channels.newWriter();

2. Charset 字符集
Charset.forName(charCode).newDecoder().decode(buffer).toString();
分享到:
评论

相关推荐

    Java NIO Socket基本

    Java NIO(New Input/Output)是Java标准库中提供的一种I/O模型,与传统的 Blocking I/O(同步阻塞I/O)相对。NIO在Java 1.4版本引入,其设计目标是提供一种更高效、更灵活的I/O操作方式,特别适合处理大量并发连接...

    基于nio实现的多文件上传源码

    首先,理解NIO的基本概念是必要的。NIO中的“非阻塞”意味着当数据不可用时,读写操作不会被挂起,而是立即返回,这极大地提高了程序的效率。NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器...

    nio demo for nio学习笔记(体系结构以及模块介绍)

    在学习NIO时,首先需要理解Channel、Buffer、Selector的基本概念和使用方法,然后通过实例来熟悉它们的交互过程。例如,可以通过创建一个简单的服务器,使用ServerSocketChannel监听连接,SocketChannel处理客户端...

    java NIO实例

    1. **Selector(选择器)**:选择器是NIO的核心组件,它能够监控多个通道(Channel)的状态变化,当某个通道准备进行读写操作时,选择器会通知用户线程。这样,一个线程就可以管理多个通道,实现多路复用。 2. **...

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

    1. 创建Selector对象。 2. 将Channel注册到Selector上,并指定感兴趣的事件(如读、写事件等)。 3. 调用Selector的`select()`方法等待事件的发生。如果没有任何事件发生,则此方法会阻塞直到有事件可用。 4. ...

    基于nio的简易聊天室

    缓冲区是NIO中数据存储的主要方式,它们是固定大小的数组,可以用于存储各种基本类型的数据,如字符、字节、整数等。在读写操作中,数据会先被存入缓冲区,然后再从缓冲区传输,这样可以提高效率。在这个聊天室应用...

    Java IO, NIO and NIO.2

    1. 改进的文件系统接口(File API):引入了java.nio.file包,其中包括Path、Paths、Files类,提供了更为现代和灵活的文件处理方法。 2. 异步I/O(Asynchronous I/O):提供了更多的异步操作支持,允许I/O操作在后台...

    JAVA-NIO-DEMO

    1. **通道(Channels)**:通道是数据传输的路径,可以从一个数据源读取数据或向一个目的地写入数据。例如,FileChannel用于文件操作,SocketChannel用于网络通信。 2. **缓冲区(Buffers)**:缓冲区是数据操作的...

    《NIO与Socket编程技术指南》_高洪岩

    1. NIO基础:介绍NIO的基本概念,如通道、缓冲区、选择器以及它们之间的交互。 2. 文件操作:讲解如何使用NIO进行文件的读写操作,包括文件通道和MappedByteBuffer的使用。 3. 非阻塞I/O:对比NIO和BIO,解释非阻塞I...

    Java.NIO资源下载资源下载

    #### 1. Buffer(缓冲区) - **Buffer 基础**:介绍了 Buffer 的基本概念,包括如何创建 Buffer、复制 Buffer 以及 ByteBuffer 的具体用法。 - **创建 Buffer**:讨论了多种创建 Buffer 的方法。 - **复制 Buffer**...

    nio入门 IBM教材,pdf格式

    ### NIO 入门知识点详解 #### 一、NIO 的引入及其背景 - **NIO 的起源**:NIO(New Input/Output)库是在 JDK 1.4 中引入的,旨在解决传统 Java I/O 操作的局限性和性能瓶颈。 - **改进目标**:NIO 通过提供高速...

    深入浅出NIO

    《深入浅出NIO》 在Java编程领域,NIO(New Input/Output)是一种用于替代标准IO模型的机制,其核心在于非阻塞的I/O操作和通道(Channel)...通过理解NIO的基本概念和机制,我们可以构建出更高效、可扩展的应用程序。

    java NIO 写文件

    首先,理解Java NIO的基本概念非常重要。NIO中的“N”代表“非阻塞”,这意味着在进行I/O操作时,程序可以继续执行其他任务,而不是等待数据传输完成。NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择...

    java nio 实现socket

    #### 三、NIO实现Socket通信的基本流程 基于Java NIO的Socket通信流程大致如下: 1. **创建ServerSocketChannel**:服务器端首先需要创建一个`ServerSocketChannel`,用于监听客户端的连接请求。 2. **创建...

    NIO实现邮件接收原码

    1. **NIO基础** - **通道**:通道是数据传输的路径,它可以读取或写入数据,比如SocketChannel、FileChannel等。 - **缓冲区**:缓冲区是NIO的核心,它是数据的容器,提供了读写数据的方法,并且有自动管理内存的...

    java nio 读文件

    一、NIO的基本概念 1. 缓冲区(Buffer):NIO的核心组件,用于存储数据。Java提供了多种Buffer类,如ByteBuffer、CharBuffer、IntBuffer等,分别对应不同数据类型。每个Buffer都有特定的方法用于写入、读取、清理和...

    java nio 入门

    三、NIO基本操作 1. **打开通道**:通过类的静态方法创建通道,如FileChannel.open()用于打开文件。 2. **分配缓冲区**:通过Buffer子类的allocate()方法创建缓冲区,然后通过put()和get()方法存取数据。 3. **...

    apache nio 很好的学习资料

    首先,我们要理解NIO的基本理念。传统的BIO模型在进行I/O操作时,如果一个线程正在读取或写入数据,那么这个线程会一直被阻塞,直到I/O操作完成。而在NIO中,I/O操作不再阻塞线程,而是采用“选择器”(Selector)来...

Global site tag (gtag.js) - Google Analytics