Java rto创建ByteBuffer类的实例,但得到的错误是;无法实例化类型ByteBuffer

Java rto创建ByteBuffer类的实例,但得到的错误是;无法实例化类型ByteBuffer,java,Java,当我有下面一行代码来创建ByteBuffer的实例时 我收到一个错误,说“无法实例化ByteBuffer类型” ByteBuffer get=新的ByteBuffer() 节目 静态int g=0 public static void main(String[] args) { URL website = new URL("http://api.bitcoincharts.com/v1/csv/1coinUSD.csv.gz"); ReadableByteChannel rb

当我有下面一行代码来创建ByteBuffer的实例时 我收到一个错误,说“无法实例化ByteBuffer类型” ByteBuffer get=新的ByteBuffer()

节目 静态int g=0

public static void main(String[] args) {


    URL website = new URL("http://api.bitcoincharts.com/v1/csv/1coinUSD.csv.gz");
    ReadableByteChannel rbc = Channels.newChannel(website.openStream());
    FileOutputStream fos = new FileOutputStream("information.html");
    fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);

    ERROR ON LINE BELOW
    ByteBuffer get=new ByteBuffer();

    rbc.read(get);
    ted=get.array();

    readInFile(first);
    readInFile(second);

ByteBuffer是一个抽象类。无法实例化抽象类


由于ByteBuffer是一个抽象类,因此无法直接实例化,但可以使用或工厂方法:

要选择是否需要直接缓冲区,请阅读类级Javadoc:

字节缓冲区可以是直接的,也可以是非直接的。给定一个直接字节缓冲区,Java虚拟机将尽最大努力直接在其上执行本机I/O操作。也就是说,它将尝试避免在每次调用底层操作系统的一个本机I/O操作之前(或之后)将缓冲区的内容复制到中间缓冲区(或从中间缓冲区复制)

可以通过调用此类的
allocateDirect
factory方法来创建直接字节缓冲区。此方法返回的缓冲区通常比非直接缓冲区具有更高的分配和释放成本。直接缓冲区的内容可能位于正常垃圾收集堆之外,因此它们对应用程序内存占用的影响可能并不明显。因此,建议直接缓冲区主要分配给受底层系统本机I/O操作影响的大型长寿命缓冲区。通常,只有当直接缓冲区在程序性能上产生可测量的增益时,才最好分配直接缓冲区


您也可以考虑,对于一个对应于文件的内存映射区域的ByteBuffer实例,

或者,根据用例可能会更便宜。@谢谢!修正了疏忽。