Channel是什么?FileChannel类的常用方法

Channel 是一个接口对象,它类似于传统的流对象,但与传统的流对象又有些不同,具体表现如下:

• Channel可以异步地执行I/O读写操作。

• Channel的读写操作是双向的,既可以从 Channel中读取数据,又可以写数据到Channel,而流的读写操作通常都是单向的。

• Channel可以直接将指定文件的部分或者全部直接映射成 Buffer。

• Channel只能与Buffer进行交互,程序不能直接读写Channel中的数据。

要使用 Channel,就需要使用它的实现类。在 java.nio.channels 包中,提供了很多Channel接口的实现类,包括 DatagramChannel、FileChannel、Pipe.SinkChannel、Pipe.SourceChannel,ServerSocketChannel,SocketChannel等。其中 DatagramChannel用于支持UDP网络通信,FileChannel 用于从文件中读写数据,Pipe.SinkChannel和 PipeSourceChannel用于支持线程之间的通信,ServerSocketChannel和SocketChannel用于支持TCP网络通信。这里将主要讲解 FileChannel的使用。

Channel对象并不是通过构造方法来创建的,而是通过传统I/O的getChannel()方法来获取对应的Channel。不同的流所获取的 Channel 是不同的,例如 FleInputStream和FileOutputStream获取的是 FileChannel,同时还可以使用RandomAccessFile 获取该对象而 PipedInputStream 和 PipedOutputStream 所获得的是 Pipe. SinkChannel 和 PipeSourceChannel。

FileChannel类可以实现常用的读写操作,在类中提供了很多专门用于操作文件的方注 其常用方法如表所示。

Channel是什么?FileChannel类的常用方法

了解了FileChannel类的常用方法及其功能后,下面通过一个文件拷贝的案例,来演示FileChannel的使用,如下所示。

import java .1 o.*;importjava.nio.channels.*;public class Example19 {    public static void main(String[] args) throws Exception {        //创建RandomAccessFile对象,指定源文件        RandomAccessFile infile = new RandomAccessFile("source/src.jpg", "rw")        //获取读取源文件 Filehannel 通道        FileChannel inChannel = infile.getChannel();        //创建RandomAccessFile对象,指定目标文件        RandomAccessFile outfile = new RandomAccessFile("target/dest.jpg", "rw");        //获取复制目标文件 Filechannel通道        FileChanneloutChannel = outfile.getChannel();        //使用transferTo(方法进行整体复制        long transferTo = inChannel.transferTo(0, inChannel.size() outChannel);        if (transferTo > 0) {            System.out.printIn("复制成功!");        }        //关闭资源        infile.close();        inChannel.close();        outfile.close();        outChannel.close();    }}

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/366805.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
黑马程序员黑马程序员订阅用户
上一篇 2023年8月18日
下一篇 2023年8月19日

相关推荐

  • JavaScript中基本数据类型怎样使用?

    JavaScript中的数据类型分为两大类,分别是基本数据类型和复杂数据类型(或称为引用数据类型),如图所示。本节重点讲解基本数据类型。下面我们用代码演示基本数据类型的使用。(1)数字型(Number),包含整型值和浮点型…

    2023年6月16日
    00
  • 数据类型的转换

    说明:在PHP中数据类型是可以进制互相转换,如:整型1转换成字符串1 在PHP中分两种转换形式:自动转换和强制转换 5.11.1自动转换 给到特定的写法就会改变原来的类型   5.11.2强制转换 可以使用一些特殊的方式…

    2017年11月28日
    0365
  • 聊聊mysql向表中添加列的命令。

    在MySQL中,向表中添加列是一项常见的数据库操作,下面是详细的技术教学,帮助你了解如何向MySQL表中添加列。 (图片来源网络,侵删) 1、使用ALTER TABLE语句 要向MySQL表中添加列,可以使用ALTER TABLE语句,ALTE…

    2024年6月17日
    00
  • PHP浮点型--FLOAT

    说明:小数,浮点型(也叫浮点数 float,双精度数 double 或实数 real) PHP中的小数有两种表现形式:普通的小数和科学计数法 浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导…

    2017年11月20日
    0190
  • 小编教你html 如何用mysql数据库数据类型。

    在HTML中,我们无法直接使用MySQL数据库的数据类型,我们可以使用PHP、JavaScript等后端语言来连接MySQL数据库,并将数据类型转换为HTML所需的格式,下面我将详细介绍如何使用PHP和MySQL数据库数据类型。 (图片来…

    2024年6月24日
    00
  • 教你spss如何定义变量。

    在SPSS中,定义变量可以通过“变量视图”或“数据视图”进行。选择相应的列,输入变量名、类型和标签等信息。 (图片来源网络,侵删) 在SPSS中,定义变量是进行数据分析的第一步,定义变量可以帮助我们明确数据的含义…

    2024年6月28日
    00
  • Numpy基础操作:数组之间形状相互转换

    ndarray对象提供了一些可以便捷地改变数组基础形状的属性和方法,例如,将一个3行4列的二维数组转换成6行2列的二维数组,关于这些属性和方法的具体说明如表9-3所示。上述这些方法都能够改变数组的形状,但是,resha…

    2023年8月16日
    03
  • php的数据类型

    说明:就是PHP能存储数据格式,PHP提供8种数据类型 标量类型:int float string boolean 复合类型:array object 特殊:null resource 在文档(手册)里提供的类型 字符串类型-string 说明:字符串类型就是把任何的…

    2017年11月19日 PHP自学教程
    0418

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息