获取FileChannel而不使用java.io.*(使用纯NIO)

获取FileChannel而不使用java.io.*(使用纯NIO),java,file-io,copy,nio,channel,Java,File Io,Copy,Nio,Channel,最近我得到一条评论,说如果我想使用“纯NIO”,我应该远离java.io。 这是简化代码(复制文件): (代码极其简化:删除了try finally和循环) 我的问题是如何获得一个FileChannel或其他NIO类,以便在不使用java.io(FileInputStream)的情况下读取文件 编辑: Java 6(或仅限之前版本)说明: 此类不定义打开现有文件或创建新文件的方法;这些方法可能会在将来的版本中添加。在此版本中,通过调用现有FileInputStream、FileOutputStr

最近我得到一条评论,说如果我想使用“纯NIO”,我应该远离
java.io

这是简化代码(复制文件):

(代码极其简化:删除了try finally和循环)

我的问题是如何获得一个
FileChannel
或其他NIO类,以便在不使用java.io(
FileInputStream
)的情况下读取文件

编辑:
Java 6(或仅限之前版本)

说明:

此类不定义打开现有文件或创建新文件的方法;这些方法可能会在将来的版本中添加。在此版本中,通过调用现有FileInputStream、FileOutputStream或RandomAccessFile对象的getChannel方法,可以从该对象获取文件通道,该方法返回连接到同一基础文件的文件通道


也就是说,在java 1.6中,如果不使用旧的
java.io

java 6只有
FileInputStream.getChannel()
FileOutputStream.getChannel()
,和
RandomAccessFile.getChannel()

Java7有
Java.nio.channels.FileChannel.open(…)
Java.nio.Files.newbytechnel(…)

private static void copy(File source, File destination) throws IOException {
    long length = source.length();
    FileChannel input = new FileInputStream(source).getChannel();
    FileChannel output = new FileOutputStream(destination).getChannel();

    input.transferTo(0, length, output);

    output.close();
    input.close();
}