java nio close_wait,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();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值