nio channel demo

下面的是nio channel的demo

import java.nio.channels.FileChannel;

public class NioFileChannelTest {
    public static void main(String[] args) throws Exception{

        // 创建一个字符串
        String str = new String("你好,nio");

        // 创建一个文件输出流
        File file = new File("F://test.txt");
        FileOutputStream fileOutputStream = new FileOutputStream(file);

        // 通过文件输出流,创建一个filechannel
        FileChannel channel = fileOutputStream.getChannel();

        // 创建一个bytebuffer
        ByteBuffer buffer = ByteBuffer.allocate(1024);

        // 将str put到buffer中
        buffer.put(str.getBytes());

        // 将buffer 翻转
        buffer.flip();

        // 将buffer写入到channel中,write和read 是针对channel来说的
        channel.write(buffer);

        fileOutputStream.close();
    }
}

 

注意点:一个utf-8的汉子 占用3个字节

 

读取channel数据的demo

public class NioFileChannelTest2 {
    public static void main(String[] args) throws Exception{

        File file = new File("F://test.txt");
        FileInputStream fileInputStream = new FileInputStream(file);

        ByteBuffer byteBuffer = ByteBuffer.allocate((int)file.length());

        FileChannel channel = fileInputStream.getChannel();

        channel.read(byteBuffer);

        byteBuffer.flip();

        byte[] array = byteBuffer.array();

        System.out.println(new String(array));
    }
}

 

好了

 

posted @ 2020-10-13 16:48  彬在俊  阅读(139)  评论(0编辑  收藏  举报