Converting Text To and From ByteBuffers

From Java Example Source Code

Jump to: navigation, search

Contents

[edit] Overview - Converting Text To and From ByteBuffers

This Java example shows how to converting Text to and from ByteBuffers.

[edit] Java Source Code

  • Package: com.bruceeckel
  • File: BufferToText.java
package com.bruceeckel;
 
//: c12:BufferToText.java
//Converting text to and from ByteBuffers
//{Clean: data2.txt}
//From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
//www.BruceEckel.com. See copyright notice in CopyRight.txt.
 
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
 
public class BufferToText {
    private static final int BSIZE = 1024;
 
    public static void main(String[] args) throws Exception {
	FileChannel fc = new FileOutputStream("data2.txt").getChannel();
	fc.write(ByteBuffer.wrap("Some text".getBytes()));
	fc.close();
	fc = new FileInputStream("data2.txt").getChannel();
	ByteBuffer buff = ByteBuffer.allocate(BSIZE);
	fc.read(buff);
	buff.flip();
	// Doesn't work:
	System.out.println(buff.asCharBuffer());
	// Decode using this system's default Charset:
	buff.rewind();
	String encoding = System.getProperty("file.encoding");
	System.out.println("Decoded using " + encoding + ": "
		+ Charset.forName(encoding).decode(buff));
	// Or, we could encode with something that will print:
	fc = new FileOutputStream("data2.txt").getChannel();
	fc.write(ByteBuffer.wrap("Some text".getBytes("UTF-16BE")));
	fc.close();
	// Now try reading again:
	fc = new FileInputStream("data2.txt").getChannel();
	buff.clear();
	fc.read(buff);
	buff.flip();
	System.out.println(buff.asCharBuffer());
	// Use a CharBuffer to write through:
	fc = new FileOutputStream("data2.txt").getChannel();
	buff = ByteBuffer.allocate(24); // More than needed
	buff.asCharBuffer().put("Some text");
	fc.write(buff);
	fc.close();
	// Read and display:
	fc = new FileInputStream("data2.txt").getChannel();
	buff.clear();
	fc.read(buff);
	buff.flip();
	System.out.println(buff.asCharBuffer());
    }
}

[edit] What Result You Can Get

Run the program, you will get:


Decoded using UTF-8: Some text
Some text
Some text

But you may get other result then "UTF-8", such as "GBK", depends on your OS encoding set.

[edit] Required External Library for this Java Example

Need nothing.


[edit] How to Run this Java Example Program

We recommend running this Java example program with Eclipse.

For assistance in working with Eclipse, please see How to Run Java Program with Eclipse.

It's fairly easy.

Personal tools