Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

NIO. Быстрое копирование файлов используя Файловые каналы.
Список форумов
 ->  Примеры


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
kez : 982
JavaTalks Chess Master 2008
Откуда: Санкт-Петербург

СообщениеИюн 15, 2009 15:51 
Ответить с цитатой
Быстрое копирование файлов используя Файловые каналы(NIO).
Благодаря методу transferTo передача байтов обычно производится без явных чтений или записи в канал на уровне пользователя.

Цитата:

transferTo
This method is potentially much more efficient than a simple loop that reads from this channel and writes to the target channel. Many operating systems can transfer bytes directly from the filesystem cache to the target channel without actually copying them.


Код:
import java.nio.*;
import java.nio.channels.*;
import java.io.*;

/**
 * Копирование файлов используя Файловые каналы(NIO).
 */
public class CopyDemo {

    public static void main(String args[])
            throws IOException {

        // проверяем переданные аргументы
        if (args.length != 2) {
            System.err.println("missing filenames");
            System.exit(1);
        }

        // создаем и инициализируем каналы
        FileInputStream fis = new FileInputStream(args[0]);
        FileOutputStream fos = new FileOutputStream(args[1]);
        FileChannel fcin = fis.getChannel();
        FileChannel fcout = fos.getChannel();

        // выполнить копирование файла
        fcin.transferTo(0, fcin.size(), fcout);

        // закрываем
        fcin.close();
        fcout.close();
        fis.close();
        fos.close();
    }
}

_________________
Je pense, donc je suis
К началу Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
preved : 476
Java Developer
Откуда: Internet

СообщениеИюн 16, 2009 22:40 
Ответить с цитатой
Отличный пример!

Хотелось бы еще узнать, можно ли также быстро копировать абстрактные каналы (если есть java.nio.channels.Channel и точно неизвестно, является ли это канал FileChannel).
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Примеры


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru