SendFile и TransferTo в Java

Я использую CentOs Kernel версии 2.6.32. Я планирую провести тест с передачей (sendFile) и без нее, используя NIO. Мой тест - скопировать файл размером 1 ГБ из одного каталога в другой. Однако я не нашел значительного улучшения производительности из-за использования transferTo(). Пожалуйста, дайте мне знать, действительно ли файл в файл sendFile работает в ядре Linux или работает только файл в сокет? Нужно ли мне что-то включать для sendFile?

Образец кода:

  private static void doCopyNIO(String inFile, String outFile) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        FileChannel cis = null;
        FileChannel cos = null;

        long len = 0, pos = 0;

        try {
            fis = new FileInputStream(inFile);
            cis = fis.getChannel();
            fos = new FileOutputStream(outFile);
            cos = fos.getChannel();
            len = cis.size();
            /*while (pos < len) {
                pos += cis.transferTo(pos, (1024 * 1024 * 10), cos);    // 10M
            }*/
            cis.transferTo(0, len, cos);
            fos.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } 
}

person user3374023    schedule 16.09.2015    source источник
comment
Системный вызов sendfile() отправляет файл в сокет. Для файлов может использоваться системный вызов splice(). См. здесь: stackoverflow.com/questions/7463689/   -  person gavv    schedule 16.09.2015