Java基础知识杂文-创新互联

1.基本概念

站在用户的角度思考问题,与客户深入沟通,找到鸠江网站设计与鸠江网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广、域名申请、网络空间、企业邮箱。业务覆盖鸠江地区。

IO是主存和外部设备(硬盘、终端和网络等)拷贝数据的过程。IO是操作系统的底层功能实现,底层通过I/O指令进行完成。

所有语言运行时系统提供执行I/O较高级别的工具。(c的printfscanf,java的面向对象封装)

2.Java标准io回顾

Java标准IO类库是io面向对象的一种抽象。基于本地方法的底层实现,我们无须关注底层实现。InputStream\OutputStream(字节流):一次传送一个字节。Reader\Writer(字符流):一次一个字符。

3.nio简介

nio是javaNewIO的简称,在jdk1.4里提供的新api。Sun官方标榜的特性如下:

–为所有的原始类型提供(Buffer)缓存支持。

–字符集编码解码解决方案。

–Channel:一个新的原始I/O抽象。

–支持锁和内存映射文件的文件访问接口。

–提供多路(non-bloking)非阻塞式的高伸缩性网络I/O。

本文将围绕这几个特性进行学习和介绍。

4.Buffer&Chanel

Channel和buffer是NIO是两个最基本的数据类型抽象。

Buffer:

–是一块连续的内存块。

–是NIO数据读或写的中转地。

Channel:

–数据的源头或者数据的目的地

–用于向buffer提供数据或者读取buffer数据,buffer对象的唯一接口。

–异步I/O支持

例子 1:CopyFile.java:

package sample;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class CopyFile {
	public static void main(String[] args) throws Exception {
		String infile = "C:\\copy.sql";
		String outfile = "C:\\copy.txt";
		// 获取源文件和目标文件的输入输出流 
		FileInputStream fin = new FileInputStream(infile);
		FileOutputStream fout = new FileOutputStream(outfile);
		// 获取输入输出通道 
		FileChannel fcin = fin.getChannel();
		FileChannel fcout = fout.getChannel();
		// 创建缓冲区 
		ByteBuffer buffer = ByteBuffer.allocate(1024);
		while (true) {
			// clear方法重设缓冲区,使它可以接受读入的数据 
			buffer.clear();
			// 从输入通道中将数据读到缓冲区 
			int r = fcin.read(buffer);
			// read方法返回读取的字节数,可能为零,如果该通道已到达流的末尾,则返回-1 
			if (r == -1) {
				break;
			}
			// flip方法让缓冲区可以将新读入的数据写入另一个通道 
			buffer.flip();
			// 从输出通道中将数据写入缓冲区 
			fcout.write(buffer);
		}
	}
}

当前题目:Java基础知识杂文-创新互联
分享路径:http://myzitong.com/article/dppsii.html