java nio

ByteBuffer 写文件

public class Main {
    public static void main(String[] args) throws IOException {
        String waitToWrite = "hello wporld 我的世界";
        RandomAccessFile aFile = new RandomAccessFile("/Users/xxx/IdeaProjects/demo/src/main/java/nio/nio.txt", "rw");
        FileChannel channel = aFile.getChannel();
        ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
        byteBuffer.put(waitToWrite.getBytes());
        byteBuffer.flip();

        while(byteBuffer.hasRemaining()){
            channel.write(byteBuffer);
        }
        channel.close();
        aFile.close();
    }
}

ByteBuffer读中文文件

public class Main {
    public static void main(String[] args) throws IOException {
        RandomAccessFile aFile = new RandomAccessFile("/Users/xxx/IdeaProjects/demo/src/main/java/nio/nio.txt", "rw");
        FileChannel channel = aFile.getChannel();
     
        Charset charset = Charset.forName("UTF-8");
        CharsetDecoder decoder = charset.newDecoder();

        ByteBuffer readBuffer = ByteBuffer.allocate(48);
        CharBuffer charBuffer = CharBuffer.allocate(48);
        int count = channel.read(readBuffer);
        while(count != -1){
            readBuffer.flip();
            decoder.decode(readBuffer, charBuffer, false);
            charBuffer.flip();
            while(charBuffer.hasRemaining()){
               System.out.print(charBuffer.get());
            }
            System.out.println();
            readBuffer.clear();
            charBuffer.clear();
            count = channel.read(readBuffer);
        }
        channel.close();
        aFile.close();
    }
}

ByteBuffer读取普通文件

public class Main {
    public static void main(String[] args) throws IOException {
        RandomAccessFile aFile = new RandomAccessFile("/Users/xiangyang/IdeaProjects/demo/src/main/java/nio/nio.txt", "rw");
        FileChannel channel = aFile.getChannel();

        ByteBuffer readBuffer = ByteBuffer.allocate(48);
        int count = channel.read(readBuffer);
        while(count != -1){
            readBuffer.flip();
            while(readBuffer.hasRemaining()){
               System.out.print((char)readBuffer.get());
            }
            System.out.println();
            readBuffer.clear();
            count = channel.read(readBuffer);
        }
        channel.close();
        aFile.close();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。