получить FileChannel без использования java.io.* (используйте чистый NIO)

StackOverflow https://stackoverflow.com/questions/2036921

Вопрос

Недавно я получил комментарий по этому поводу отвечать что мне следует держаться подальше от java.io если я хочу использовать «чистый NIO».
Это упрощенный код (скопируйте файл):

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

(код предельно упрощен:удалены try-finally и цикл)

Мой вопрос в том, как получить FileChannel или другой класс NIO для чтения файла без использования java.io (FileInputStream)?

РЕДАКТИРОВАТЬ:
Java 6 (или только ранее)

Это было полезно?

Решение

А javadoc FileChannel говорит:

Этот класс не определяет методы открытия существующих файлов или создания новых;такие методы могут быть добавлены в будущем выпуске.В этом выпуске файловый канал можно получить из существующего объекта FileInputStream, FileOutputStream или RandomAccessFile, вызвав метод getChannel этого объекта, который возвращает файловый канал, подключенный к тому же базовому файлу.

То есть с Java 1.6 вы не сможете получить FileChannel без использования старых java.io.

Другие советы

Java 6 имеет только FileInputStream.getChannel(), FileOutputStream.getChannel(), и RandomAccessFile.getChannel()

Java 7 имеет java.nio.channels.FileChannel.open(...) и java.nio.Files.newByteChannel(...)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top