Converting text to and from ByteBuffers : Input Output Stream « File Input Output « Java






Converting text to and from ByteBuffers

Converting text to and from ByteBuffers

// : 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());
  }
} ///:~


           
       








Related examples in the same category

1.Buffer EqualityBuffer Equality
2.Input and output with human-readable text filesInput and output with human-readable text files
3.Input and output of primitive values with binary filesInput and output of primitive values with binary files
4.Input and output of arrays and objects with binary filesInput and output of arrays and objects with binary files
5.Input and output of primitive values with random access binary filesInput and output of primitive values with random access binary files
6.Input and output using strings and string buffersInput and output using strings and string buffers
7.Timing Unbuffered Reads
8.Reading Bytes from a DataInputStreamReading Bytes from a DataInputStream
9.Comparing Buffered and Unbuffered Writing Performance
10.Read a file and print, using LineReader and System.out
11.Demonstrate ProgressMeterInputStream
12.Demonstrates standard I/O redirection
13.Creating a very large file using mappingCreating a very large file using mapping
14.Demonstrates the use of the File class to create directories and manipulate files
15.Mapping an entire file into memory for reading
16.Mapped IOMapped IO
17.What happens when the entire file isn't in your mapping region
18.Object serializationObject serialization
19.Locking portions of a mapped fileLocking portions of a mapped file
20.File read and writeFile read and write