- 浏览: 81248 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (66)
- Html (4)
- j2se (19)
- jsp (1)
- xml (0)
- eclipse (1)
- Linux (7)
- 心情 (13)
- javascript (2)
- db (1)
- javascript常用代码 (1)
- PHP (1)
- spring source (0)
- Spring (0)
- Ibatis (0)
- Memcached (0)
- Ehcache (0)
- freeMarker (0)
- velocity (0)
- UML (0)
- SQL (0)
- DB2 (0)
- Oracle (0)
- Mysql (0)
- Spring Security (0)
- Log4j (0)
- Tomcat (0)
- MongoDB (0)
- Solr (0)
- Spring CXF (0)
- Maven (0)
- JPbm (0)
- Design Pattern (0)
- JVM (0)
最新评论
-
greathjt:
watchpoint等等怎么设置?
eclipse debugger use
作者:Flyingis
JDK1.4开始便引入了java.nio.*包,其目的在于提高I/O的速度,这是因为该类库使用的结构更接近于操作系统执行I/O的方式,即通过通道和缓冲器来读写数据。在实际应用中,和我们直接交互的是缓冲器,然后把缓冲器派送到通道,通道要么从缓冲器获得数据,要么向缓冲器发送数据。
在基于Java的各种开发中,字符编码是常见的问题之一,在最基本的Java I/O中也存在这种问题。新的Java I/O通过通道和缓冲器来读写数据,缓冲器容纳的是普通的字节,为了把它们转换成字符,我们要么在输入的时候对其进行编码,要么在从缓冲器输出时对它们进行解码。
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import java.nio.charset.*;
public class ByteToCharacter {
private static final int SIZE = 1024;
public static void main(String[] args) throws Exception {
FileChannel fc = new FileOutputStream(“Output.txt”).getChannel();
ByteBuffer buffer = ByteBuffer.allocate(SIZE);
/**
* 在输入的时候进行编码方式一
*/
fc.write(ByteBuffer.wrap(“Good holiday!”.getBytes(“UTF-16BE”))); // UTF-16BE可以更换为其他编码方式
fc.close();
fc = new FileInputStream(“Output.txt”).getChannel();
fc.read(buffer);
buffer.flip(); //准备从缓冲区读取已经写入的数据
System.out.println(buffer.asCharBuffer());
/**
* 在输入的时候进行编码方式二
* 通过asCharBuffer()方法直接以char形式将字符写入
*/
fc = new FileOutputStream(“Output.txt”).getChannel();
buffer.clear();
buffer.asCharBuffer.put(“Good holiday has passed!”);
fc.write(buffer);
fc.close();
fc = new FileInputStream(“Output.txt”).getChannel();
buffer.clear();
fc.read(buffer);
buffer.flip();
System.out.println(buffer.asCharBuffer());
/**
* 从缓冲器输出时进行编码
*/
fc = new FileOutputStream(“Output.txt”).getChannel();
fc.write(ByteBuffer.wrap(“Once again!”.getBytes()));
fc.close();
fc = new FileInputStream(“Output.txt”).getChannel();
buffer.clear();
fc.read(buffer);
buffer.flip();
String encode = System.getProperty(“file.encoding”); // 平台缺省字符集,更加通用的方法,跨平台特性的体现之一
System.out.println(Charset.forName(encode).decode(buffer));
}
}
在上述代码中,如果不对从缓冲器写入的数据进行正确编码,那么当再次通过缓冲器读取这些数据时,将不能显示任何所需要的数据。
JDK中的java.nio.charset.Charset类提供了把数据编码成多种不同类型的字符集的工具,满足在各种应用中的编码需求。
发表评论
-
Java中获取系统环境信息
2013-03-15 07:10 901将 getProperty(String) 方法使用的当前 ... -
Java 编程的动态性
2012-10-11 02:04 0Java 编程的动态性,第 1 部分: 类和类装入 ... -
读《重构》笔记
2009-02-12 01:08 833重构:改善即有代码 重构是一个过程,在不改变即有代码的外在行为 ... -
Object 源码
2008-12-21 12:24 1284Oject 源码: /* * @(#)Object.java ... -
thread 源码
2008-12-21 11:57 1055线程的状态:NEW , RUNNABLE , BLOCKED, ... -
java gc工作原理
2008-12-19 11:20 3018GC基本工作原理: java内 ... -
看《告诉你最真实的招聘潜规则》 有感
2008-12-18 09:31 713告诉你最真实的招聘潜规则 http://www.iteye.c ... -
时间管理
2008-12-17 14:20 544积极主动 ; 按计划行事 ; 任务细分----按任务分段- ... -
测试驱动开发 笔记
2008-12-14 17:14 715测试驱动开发是测试作为软件开发过程的中心,它要求在编写任何产品 ... -
集合类
2008-12-12 17:58 676集合类 Set HashSet 优点: 后台 ... -
oracle 基础
2008-12-04 12:54 1385解锁用户:alert user scott acco ... -
think pattern in java 笔记1
2008-11-25 00:40 945模式概念: 模式是帮助 ... -
Linux jdk 安装
2008-10-22 19:54 7791.下载成功后上传至服务器任意目录 ... -
Hibernate对象持久化方法分析
2008-10-19 11:46 1934Hibernate对象持久化方 ... -
编写好的面向对象代码
2008-10-13 11:47 811本文是java.net上的一篇 ... -
???Java容器分析--Map
2008-10-13 11:31 840作者:Flyingis标准的Java类库中包含了几种类型的M ... -
Java容器分析--List和Set
2008-10-13 11:26 835作者:Flyingis ... -
Java I/O中的对象序列化
2008-10-13 11:17 785Java对象序列化将那些实现了Serializable接口 ... -
eclipse debugger use
2008-10-11 13:32 1795最基本的操作是:1, 首先在一个java文件中设断点,然后运行 ... -
java信徒齐(七)步走
2008-10-08 16:19 949Java信徒齐(七)步走: 0) ...
相关推荐
Java 新I/O,也称为NIO(New Input/Output),是Java平台中对传统I/O模型的一种改进。在Java 1.4版本中引入的NIO库为开发人员提供了更高效、非阻塞的数据处理方式,特别适用于高并发、低延迟的系统。NIO的核心在于...
Java I/O 编程是Java开发中的重要组成部分,主要用于处理数据的输入与输出。下面将详细阐述其中的关键概念和方法。 1. 数据流的概念及输入输出方法: 数据流是计算机中进行数据传输的通道,包括从外部设备到程序的...
过滤流(Filter Stream)是Java I/O框架中的一个重要概念,它提供了一种优雅的方式来进行数据的读写操作,同时允许我们添加额外的功能,如字符编码转换、数据压缩等。本篇文章将深入探讨Java I/O中的过滤流,以及...
Java 1.0 和 1.1 中的I/O类主要是基于两个基础类:`InputStream`和`OutputStream`,它们处理字节流。`InputStream`家族包括了如`ByteArrayInputStream`、`FileInputStream`等,它们分别从字节数组或文件中读取数据。...
Java I/O(输入/输出)系统是Java编程语言中用于处理数据流的重要组成部分,它允许程序与外部资源如文件、网络、硬件设备等进行交互。深入理解Java I/O的工作机制对于开发高效、可靠的系统至关重要。以下是对Java I/...
Java I/O(输入/输出)是Java编程语言中不可或缺的一部分,它允许程序与外部资源进行数据交换,如文件、网络连接、系统硬件等。在Java I/O中,我们使用流(Stream)的概念来处理数据,流是数据传输的通道。本套习题...
Java中的I/O流处理是程序与外部设备交互数据的关键机制,包括从文件、网络、内存等数据源读取数据和向这些目标写入数据。I/O流系统在Java的`java.io`包中被实现,提供了丰富的类和接口来支持各种类型的流操作。 **I...
在Java中,I/O操作主要基于流(Stream)的概念,流可以被视为数据的有序序列,既可以代表从源读取数据,也可以用于向目标写入数据。本文将深入探讨Java I/O层次结构,包括核心类、接口和它们的关系,以及常见用法。 ...
Java中的I/O流是程序与外部数据交互的重要机制,它允许数据在程序、文件、网络等之间流动。I/O流分为两大类:字符流(Character Stream)和字节流(Byte Stream),每类又分为输入流(Input Stream)和输出流...
Java中的I/O系统不仅涵盖了文件的读写,还包括网络数据交换、内存数据处理及控制台输入输出等多个方面。 Java通过引入流的概念,将各种不同类型的数据源(如文件、网络、内存)统一抽象为流,简化了程序员对不同...
Java中的I/O(输入/输出)是编程中一个至关重要的概念,特别是在处理文件操作、网络通信和数据交换时。在Java中,I/O是通过一系列流(Stream)类来实现的,这些类允许数据从一个源头(如键盘、文件、网络连接)传输...
Java I/O系统是Java平台中用于处理输入和输出的核心组件,它允许程序与外部资源进行交互,如磁盘文件、网络连接、系统设备等。在Java中,输入和输出流被设计为对象,使得数据传输变得简单且高效。本章节将深入探讨...
Java I/O, NIO以及NIO2是Java编程语言中处理输入输出操作的重要API集合,它们分别代表着不同的I/O处理方式和技术。 Java I/O是指传统的I/O操作,涉及经典的I/O类库,如File、RandomAccessFile以及各种流类(stream ...
Java I/O流是Java编程语言中的一个重要组成部分,用于在程序和外部资源(如磁盘、网络、内存等)之间传输数据。本教程涵盖了从基础到高级的Java流知识,包括文件读写、缓冲流、对象序列化等多个方面。 1. **文件的...
这本书详尽地涵盖了Java输入/输出(I/O)相关的各种概念和技术,旨在帮助程序员提升在处理数据流、文件操作、网络通信以及字符编码等方面的能力。 1. **Java I/O基础**: - Java I/O框架概述:书中介绍了Java I/O...
在Java编程语言中,I/O流(Input/Output Stream)是处理数据输入和输出的核心机制。本课程设计报告书——“Java课程设计报告书-学生版-1_I/O流与文件课程设计_”旨在帮助学生深入理解并掌握如何在Java中进行文件操作...
总的来说,理解Java的I/O系统需要掌握流的概念、缓冲技术、字符编码转换、非阻塞I/O、文件操作、网络通信以及对象序列化等多个方面。这些知识点构成了Java I/O系统的基础,是开发任何Java应用时都需要了解和掌握的...
Java语言中的二进制输入/输出(Binary I/O)是程序设计中不可或缺的一部分,尤其是在处理非文本数据如图像、音频或自定义数据结构时。在本章中,我们将深入理解二进制I/O与文本I/O的区别,并探讨Java I/O框架如何...
在Java编程语言中,编码转换是一项重要的任务,特别是在处理不同来源的数据时,如读取文本文件、网络数据传输或数据库交互。本资源包含一个名为`CodeConvert.java`的源代码文件,它提供了对多种编码格式进行转换的...
Java的I/O(输入/输出)系统是Java编程语言中不可或缺的一部分,它允许程序与外部世界进行数据交换。本文将对Java I/O进行详细的总结,包括基本概念、流的分类、缓冲区、转换流以及高级特性。 首先,理解Java I/O的...