Channel的基本使用


import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class ReadFile {
     public static void main(String[] args) throws IOException {
    /*    FileInputStream fis=new FileInputStream("c:\\jdk\\b.txt");
          FileOutputStream fos=new FileOutputStream("c:\\jdk\\d.txt");
          FileChannel fco=fos.getChannel();//该channel只能写,读写文件用channel
          FileChannel fc=fis.getChannel();//该channel只能读
          ByteBuffer bb=ByteBuffer.allocate(100);//channel必须和buffer联系
          while(fc.read(bb)!=0) {
              bb.flip();
              fco.write(bb);
              bb.clear();
          }
          fis.close();
          fos.close();
          */
         File f=new File("c:\\jdk\\b.txt");
          RandomAccessFile raf=new RandomAccessFile(f, "rw");
          raf.seek(f.length());
          FileChannel rafc=raf.getChannel();
          /** i. 使用InputStream获得的Channel可以映射,使用map时只能指定为READ_ONLY模式,不能指定为READ_WRITE和PRIVATE,否则会抛出运行时异常!
             ii. 使用OutputStream得到的Channel不可以映射!!并且OutputStream的Channel也只能write不能read!
             iii. 只有RandomAccessFile获取的Channel才能开启任意的这三种模式!*/
          ByteBuffer bbb=rafc.map(FileChannel.MapMode.READ_ONLY, 0,f.length());
        // rafc.position(f.length());//相当于seek
          System.out.println( raf.getFilePointer());

          rafc.write(bbb);




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值