java NIO代码演示三种流

package com.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class GetChannel1 {
    private static int BSIZE = 1024;

    public static void main(String[] args) throws Exception {
        GetChannel1 getChannel1 = new GetChannel1();
        getChannel1.writeFile("file.txt", "hello,");
        getChannel1.addToFile("file.txt", "world");
        getChannel1.readFile("file.txt");
    }

    public void readFile(String fileName) throws IOException {
        FileChannel fc = new FileInputStream(fileName).getChannel();
        ByteBuffer buff = ByteBuffer.allocate(BSIZE);
        fc.read(buff);
        /**
         * Flips this buffer. The limit is set to the current position
         *  and then the position is set to zero.
         *   If the mark is defined then it is discarded. 
            After a sequence of channel-read or put operations, 
            invoke this method to prepare for a sequence of channel-write 
            or relative get operations. 
         */
        buff.flip();
        /*
         * Tells whether there are any elements between the current position and the limit.
         */
        while (buff.hasRemaining()) {
            System.out.print((char) buff.get());
        }
        fc.close();
    }

    // 向文件中增加内容
    public void addToFile(String fileName, String content) throws IOException {
        FileChannel fc = new RandomAccessFile(fileName, "rw").getChannel();
        fc.position(fc.size());
        fc.write(ByteBuffer.wrap(content.getBytes()));
        fc.close();

    }

    // 写文件
    public void writeFile(String fileName, String content) throws FileNotFoundException, IOException {
        FileChannel fc = new FileOutputStream(fileName).getChannel();
        fc.write(ByteBuffer.wrap(content.getBytes()));
        fc.close();
    }
}
原文地址:https://www.cnblogs.com/zhaoran8775/p/5798389.html