java nio

作者: 小白小白啦 | 来源:发表于2020-10-29 16:17 被阅读0次

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

    相关文章

      网友评论

          本文标题:java nio

          本文链接:https://www.haomeiwen.com/subject/xulhrktx.html