Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / NIO Копирование файла несколькими частями / 22 сообщений из 22, страница 1 из 1
24.03.2015, 21:08
    #38915613
sesh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
Ребят, помогите пож-ста написать или подсказать примером, необходимо скопировать файл одновременно несколькими потоками, чтоб каждый поток вычитывал свой кусок, например длину файла/5 и чтоб его копировало в 5 потоков и потом эти 5 частей сохранить обратно в файл
...
Рейтинг: 0 / 0
25.03.2015, 08:39
    #38915897
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
seshи потом эти 5 частей сохранить обратно в файл
Непонятно. Нужно создать file1, file2....file5 и "потом" их склеивать.

К сведению, операция "склейки" может нивелировать весь полезный
эффект от 5-поточного копирования.
...
Рейтинг: 0 / 0
25.03.2015, 08:44
    #38915901
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
maytonseshи потом эти 5 частей сохранить обратно в файл
Непонятно. Нужно создать file1, file2....file5 и "потом" их склеивать.

К сведению, операция "склейки" может нивелировать весь полезный
эффект от 5-поточного копирования.

М...а почему...может нивилировать...я так понимаю в один Stream вливается другой и т.д. до пятого.
Операция вроде не совсем ресурсоёмкая....или я что-то не учёл?
...
Рейтинг: 0 / 0
25.03.2015, 08:59
    #38915908
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
вообще чтение файла в потоках приведет только к замедлению процесса чтения с диска(lдаже ssd)
поэтому эту задачу можно рассматривать только как учебную.
...
Рейтинг: 0 / 0
25.03.2015, 09:09
    #38915917
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
Если диск является типа RAID-0 то возможны условия когда будет прирост в скорости
копирования.
...
Рейтинг: 0 / 0
25.03.2015, 09:34
    #38915951
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
sesh,

Можно через MappedByteBuffer, FileChannel.map(FileChannel.MapMode mode, long position, long size), position=i*fileSize/5, size=fileSize/5. 5 на чтение, 5 на запись.
...
Рейтинг: 0 / 0
25.03.2015, 09:34
    #38915953
sesh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
Будем считать как учебную задачу, надо что-то написать типа даунлоад мастера или торрента, берет файл и бьет его на части, эти части копирует и потом объединяет обратно в 1 файл, это все локально делать, не с нета тянуть, подмогите пож-ста
...
Рейтинг: 0 / 0
25.03.2015, 09:37
    #38915957
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
sesh,

"Скопировать файл" и скачать по HTTP/TCP это вообще не одно и то же. Почем обязательно NIO?
...
Рейтинг: 0 / 0
25.03.2015, 10:35
    #38916047
sesh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
Blazkowiczsesh,

"Скопировать файл" и скачать по HTTP/TCP это вообще не одно и то же. Почем обязательно NIO?

NIO не обязательно, главное сделать, читал Шилдта, копировать файл без проблем, в потоке тоже, а как частями - ума не приложу как писать
...
Рейтинг: 0 / 0
25.03.2015, 10:56
    #38916114
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
seshNIO не обязательно
Уже хорошо.

seshчитал Шилдта, копировать файл без проблем
Вы принципиально игнорируете то что вам пишут? Под "копированием" и "скачиванием по HTTP" обычно имеют ввиду совершенно разные процессы.

seshв потоке тоже, а как частями - ума не приложу как писать
1) Научится скачивать файл по HTTP в один поток.
2) Научится читать спеки по HTTP
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
и гуглить примеры по ключевым словам
https://www.google.com/search?q=Java http download range
3) Прочитать основы про многопоточность
http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html
и ExecutorService
http://docs.oracle.com/javase/tutorial/essential/concurrency/exinter.html
4) Скомбинировать полученные знания и примеры в единый код. Спрашивать что-то конкретное что вызвало затруднение.
...
Рейтинг: 0 / 0
25.03.2015, 11:25
    #38916157
sesh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
Я про HTTP ничего не писал, просто копирование диска на диск в несколько частей в разных потоках, этого достаточно
...
Рейтинг: 0 / 0
25.03.2015, 11:59
    #38916211
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
seshЯ про HTTP ничего не писал, просто копирование диска на диск в несколько частей в разных потоках, этого достаточно
Извините. Не внимательно прочитал предыдущее сообщение. Ну, собственно, тогда убираем всё что касается HTTP. Используем RandomAccessFile. Что конкретно вызывает затруднение? Многопоточная запись или что-то ещё?
...
Рейтинг: 0 / 0
25.03.2015, 12:11
    #38916251
sesh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
BlazkowiczseshЯ про HTTP ничего не писал, просто копирование диска на диск в несколько частей в разных потоках, этого достаточно
Извините. Не внимательно прочитал предыдущее сообщение. Ну, собственно, тогда убираем всё что касается HTTP. Используем RandomAccessFile. Что конкретно вызывает затруднение? Многопоточная запись или что-то ещё?

Пример нашел про чтение файла http://devcolibri.com/2989 многопоточность тоже http://habrahabr.ru/post/116363/ но вот как в поток передавать с какого символа читать файл?
...
Рейтинг: 0 / 0
25.03.2015, 12:17
    #38916269
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
sesh,

Код: java
1.
executor.submit(new FilePartCopyTask(position, length));
...
Рейтинг: 0 / 0
25.03.2015, 13:09
    #38916366
sesh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
Blazkowiczsesh,

Код: java
1.
executor.submit(new FilePartCopyTask(position, length));



Спасибо огромное за помощь!!!
...
Рейтинг: 0 / 0
25.03.2015, 13:13
    #38916371
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
seshСпасибо огромное за помощь!!!
И даже не спросишь что такое FilePartCopyTask ?
...
Рейтинг: 0 / 0
25.03.2015, 14:11
    #38916480
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
sesh,

Если будете использовать http://devcolibri.com/2989, то RandomAccessFile не является потокобезопасным, в отличии от FileChannel из RandomAccessFile.getChannel() и методов FileChannel.transfer...(которые внутри используют MappedByteBuffer).
...
Рейтинг: 0 / 0
25.03.2015, 14:16
    #38916496
sesh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
maytonseshСпасибо огромное за помощь!!!
И даже не спросишь что такое FilePartCopyTask ?

Думал что-то стандартное, нагуглю, а не тут то было, а что это?
...
Рейтинг: 0 / 0
25.03.2015, 14:31
    #38916529
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
seshДумал что-то стандартное, нагуглю, а не тут то было, а что это?
рукалицо.
Это ваш класс, который реализует копирование части файла. Вопрос был в том как передать параметры? Через аргументы конструктора, например.
...
Рейтинг: 0 / 0
25.03.2015, 14:55
    #38916569
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
BlazkowiczЭто ваш класс, который реализует копирование части файла. Вопрос был в том как передать параметры? Через аргументы конструктора, например.

тю, так выше же показано, что как аргументы передаются, наверное майтон что-то другое имел ввиду
...
Рейтинг: 0 / 0
25.03.2015, 15:23
    #38916634
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
rema174,

Не знаю че там где показано. ТС спросил, я ответил.
...
Рейтинг: 0 / 0
25.03.2015, 15:27
    #38916644
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NIO Копирование файла несколькими частями
seshmaytonпропущено...

И даже не спросишь что такое FilePartCopyTask ?

Думал что-то стандартное, нагуглю, а не тут то было, а что это?
Блажкович концептуален и совершенно правилен. Но его ответ - это
ответ математика - "Вы находитесь в корзине воздушного шара..." из
известного анекдота.

А тебе предлагаю запостить в форум заготовку. Или макет который хотя-бы
на 10% работает. Ну и компилируется естественно.

Сообщество поможет.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / NIO Копирование файла несколькими частями / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]