`
Aga
  • 浏览: 218670 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

指定编码器、解码器,并且利用ByteBuffer读写文件

    博客分类:
  • J2SE
阅读更多
指定编码器、解码器,并且利用ByteBuffer读写文件。
做个例子,以后编写程序的时候使用。
package cxz.net;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;

public class TryByteBuffer {

	String url = "D:\\workspace\\target";

	public static void main(String[] args) throws IOException {
		// new TryMappedByteBuffer().write();
		new TryMappedByteBuffer().read();
	}

	private void read() throws IOException {
		Charset chrst = Charset.forName("UTF-16");
		File f = new File(url);
		FileChannel readChannel = new FileInputStream(f).getChannel();
		ByteBuffer reader = ByteBuffer.allocate(1024 * 1024);
		readChannel.read(reader);
		reader.flip();//You need call this method befor decode~
		CharBuffer charReader = chrst.decode(reader);
		System.out.println("value=" + charReader.toString());
	}

	private void write() throws IOException {
		Charset chrst = Charset.forName("UTF-16");
		ByteBuffer writer = chrst.encode("Hi ~ This is a test String");
		File f = new File(url);
		// System.out.println(f.exists());
		FileChannel writeChannel = new FileOutputStream(f, false).getChannel();
		writeChannel.write(writer);
		writeChannel.close();

	}
}
2
0
分享到:
评论

相关推荐

    mina自定义编解码器详解

    - 编解码器是mina中的核心组件,分为编码器(Encoder)和解码器(Decoder)两部分,分别处理数据的编码和解码过程。 - 编码器将应用对象转化为ByteBuffer,以便于网络传输;解码器则将接收到的ByteBuffer还原为...

    Netty简介 Netty线程模型和EventLoop Codec编码与解码 ByteBuf容器

    编码器将应用层对象转换为字节流,解码器则将字节流转换回应用层对象。 **ChannelHandler和ChannelPipeline** ChannelHandler是Netty中的处理逻辑组件,负责处理I/O事件或拦截数据传输。每个Handler都有一个特定的...

    java中的编码知识

    2. **InputStreamReader 和 OutputStreamWriter**:当读写文件时,应该使用这两个类来处理字符流,它们允许我们指定具体的字符编码。例如: ```java FileInputStream fis = new FileInputStream(file); ...

    xuggle 采用ByteChannel解码视频

    传统的视频解码通常涉及读取磁盘上的文件,然后通过解码器将二进制数据转化为可播放的视频帧。然而,这种方式并不适用于所有情况,尤其是那些需要实时处理或在网络中传输的数据。`ByteChannel`是Java NIO(非阻塞I/O...

    netty网络编程.pdf

    总之,Netty通过高效的NIO模型、丰富的编解码器、灵活的线程管理和强大的异常处理能力,为企业级应用提供了稳定、高性能的网络通信解决方案。学习Netty,不仅能提升网络编程技能,也能为开发高效分布式系统打下坚实...

    netty-action.rar

    在本文中,我们将深入探讨 Netty 的核心概念、如何使用它来实现自定义报文格式的解码器和编码器,以及如何在实际的网络编程中应用这些技术。 1. **Netty 框架概述** Netty 是基于 Java NIO(非阻塞I/O)构建的,...

    TestNetty 一个小例子

    编码器将消息编码为 ByteBuf,服务器接收后,解码器将其还原回原始消息,然后通过反向的编码/解码过程将消息回传给客户端。 此外,Netty 提供了丰富的协议支持,如 HTTP、FTP、TCP、UDP 等,使得开发者可以轻松地...

    基于JAVA NIO 的轻量级消息传输框架。主要功能包括:文本消息传输、二进制文件传输、文本及二进制混合传输.zip

    在读写过程中,可以使用`Charset`类进行字符编码和解码,确保跨平台的文本一致性。 2. **二进制文件传输**: 二进制文件传输涉及到图像、音频、视频等非文本数据。在NIO中,`FileChannel`允许直接读写磁盘文件,...

    nio体系结构演示代码

    4. **编码与解码**:NIO提供了编码和解码工具,如Charset类用于字符编码转换,而ByteBuffer和CharBuffer之间的转换则可以通过CharsetEncoder和CharsetDecoder实现。 5. **文件系统操作**:NIO提供FileChannel,可以...

    JAVA 架构练习项目:

    4. **编码和解码**:Netty的编码器和解码器可以将复杂的数据结构转换为字节流,反之亦然,简化了数据在网络中的传输。 5. **事件驱动**:Netty使用事件驱动模型,当网络事件发生时,相关的处理器会被调用,降低了...

    netty-code源码

    6. **编码和解码器**:Netty提供了多种编码器和解码器,如StringDecoder和StringEncoder,用于将字符串与字节流之间的转换,以及protobuf等复杂协议的编解码器。 7. **零拷贝(Zero-Copy)**:Netty通过Direct...

    转换中文的过滤器(java 中转换中文)

    例如,我们可以使用`Charset.forName("GBK")`获取GBK字符集,然后创建对应的解码器和编码器。 为了实现一个中文过滤器,我们可以创建一个继承自`java.io.FilterInputStream`或`java.io.FilterOutputStream`的类。这...

    Netty-4.1.97.Final源码

    例如,如果你需要支持一种新的协议,可以参考已有的协议处理器来编写新的编码器和解码器。 最后,学习Netty源码不仅可以帮助你深入理解网络编程,还能提升你在并发、内存管理、性能优化等方面的技术水平。对于Java...

    使用Netty作为底层架构,开发文件上传系统

    4. **Pipeline**: 事件处理链,允许我们定义自定义的处理器,对进来的数据进行解码、处理,然后编码后发送出去。 5. **Handler**: 处理器接口,用户自定义逻辑实现的地方,可以处理各种事件如连接建立、数据接收、...

    后端netty网络编程

    2. **通道初始化(ChannelInitializer)**:在初始化器中,我们添加所需的处理器到通道管道,如解码器、编码器和业务处理器。 3. **连接处理**:当客户端连接到服务器时,会触发ChannelActive事件,我们可以在这个...

    Java NIO入门

    6. **字符集转换(Charset)**:NIO提供了一套完善的字符集转换机制,可以方便地进行字符编码和解码。 学习NIO,首先要理解如何创建和使用通道、缓冲区以及选择器。例如,通过`FileChannel`打开文件,然后使用`...

    无涯教程(LearnFk)-Java-Nio教程离线版.pdf

    在Java NIO中有几个核心概念,包括缓冲区(Buffers)、通道(Channels)、选择器(Selectors)以及NIO中使用的字符编码和解码器。 缓冲区(Buffers):在Java NIO中,数据被读入或写出到通道时,数据必须先进入缓冲...

    使用Netty代理你的请求Java开发Java经验技巧共8

    5. **编码器和解码器**: 在Pipeline中,编码器负责将应用程序对象转换为字节流,以便在网络上传输;解码器则负责将接收到的字节流还原为应用程序对象。例如,HttpObjectDecoder用于解码HTTP请求,而StringDecoder...

    java new IO

    Charset类是用于字符编码和解码的,它支持UNICODE字符串与字节序列之间的转换。在处理文本文件或网络通信时,Charset的使用确保了字符集的正确处理。 Selector是NIO中实现非阻塞I/O的关键,它可以监控多个Channel的...

    自动netty笔记111

    编码器如StringEncoder将字符串编码为ByteBuf,ByteToMessageDecoder和MessageToByteEncoder是自定义解码器和编码器的基础类。 6. **心跳机制**: 在长连接中,Netty支持心跳机制来检测并处理空闲连接或断开的连接...

Global site tag (gtag.js) - Google Analytics