在不使用java.io. *的情况下获取FileChannel(使用纯NIO) - java

最近,我对此answer进行了评论,如果我想使用“纯NIO”,则应该远离java.io
这是简化的代码(复制文件):

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();
}

(代码极其简化:最终尝试删除并循环执行)

我的问题是如何在不使用java.io(FileChannel)的情况下获取FileInputStream或其他NIO类来读取文件?

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

参考方案

javadoc of FileChannel说:

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

也就是说,在Java 1.6中,如果不使用旧的FileChannel就无法获得java.io

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java:从文件系统加载资源 - java

我的项目设定我有以下项目设置:\program.jar \images\logo.png 在我的代码中,我使用相对URL "images/logo.png"引用图像。问题如果我在目录中使用以下命令运行此程序:c:\projects\program_dir\bin\>java -jar program.jar 然后一切正常,Java能…

java如何在objectinputstream中的readObject知道要读取多少字节? - java

在套接字I / O中,我是否可以知道objectinputstream readObject如何知道要读取多少字节?内容长度是封装在字节本身内部还是仅读取缓冲区本身中的所有可用字节?我问这个问题是因为我指的是Python套接字的使用方法,它说 现在,如果您考虑一下,您将意识到 套接字的基本原理:消息必须固定长度 (讨厌)或定界(耸耸肩),或指出它们有多长时间…

如何防止文件覆盖自身? - java

我已经编辑了代码,您能告诉我如何在文件末尾写每一行吗?在这里,它被写在同一行上。你能帮忙吗?private void okMouseClicked(java.awt.event.MouseEvent evt) { String pass = name.getText(); if (pass.equals("")){ error.setTe…

从二进制文件读取特定字节 - java

我试图弄清楚如何使用java获取二进制文件中的特定字节。我已经大量阅读了字节级的操作,并使自己彻底困惑。现在,我可以遍历文件,如下面的代码所示,并告诉它停止在我想要的字节处。但是我知道这是脚的,并且有一种“正确”的方式来做到这一点。因此,例如,如果我有一个文件,并且需要从偏移000400返回该字节,如何从FileInputStream中获取该字节?publi…