|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
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 |
|
|
|
 |
preved : 476 Java Developer Откуда: Internet
|
Июн 16, 2009 22:40 |
|
|
Отличный пример!
Хотелось бы еще узнать, можно ли также быстро копировать абстрактные каналы (если есть java.nio.channels.Channel и точно неизвестно, является ли это канал FileChannel). |
|
|
|
 |
|
|
Страница 1 из 1
|
Список форумов
-> Примеры |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|