Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как унать скачен ли весь файл? 
:(
    Опции темы
DenWPF
Дата 17.5.2011, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



Код

_inputStream = url.openStream();
BufferedInputStream bis = new BufferedInputStream(_inputStream);

в BufferedInputStream постоянно записывается файл (как я понимаю) как понять что файл закачался полностью.

Я думаю должна быть какая то конечная точка у файла. 
как её определить?
PM MAIL   Вверх
newinjava
Дата 17.5.2011, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ATokS
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



На сколько я знаю, у Стрима не узнать размер файла!

Но во если у вас есть доступ к файлу, то можно так:
Код

File f = new File(url);
_inputStream = new FileInputStream(f);
BufferedInputStream bis = new BufferedInputStream(_inputStream);

// Размер
f.length();

PM WWW   Вверх
XoJIoD
Дата 17.5.2011, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.4.2008

Репутация: нет
Всего: нет



Вот попробуй.

Код

public class CopyStream {
    public int copy(InputStream in, OutputStream out) throws IOException {
        int size = 0;
        byte[] buff = new byte[1024];
        int l = 0;
        while ((l = in.read(buff)) != -1) {
            out.write(buff, 0, l);
            size += l;
        }
        return size;
    }

    public static void main(String[] args) throws Exception {
        URL url = new URL(args[0]);
        InputStream _inputStream = url.openStream();
        BufferedInputStream bis = new BufferedInputStream(_inputStream);
        OutputStream out = new ByteArrayOutputStream();
        int size = new CopyStream().copy(bis, out);
        System.out.print("size:" + size);
    }
}

PM MAIL   Вверх
COVD
Дата 17.5.2011, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

Я думаю должна быть какая то конечная точка у файла. 
как её определить?


Эта "точка" - конец файла, EOF.
В конструкции, приведенной XoJIoD , конец файла проверяется условием (.. != -1). Любой сбой во время чтения повлечет за собой IOException, т.е. условие не сработает.

Код

while ((l = in.read(buff)) != -1) {



Это сообщение отредактировал(а) COVD - 17.5.2011, 20:42
PM MAIL   Вверх
newinjava
Дата 17.5.2011, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ATokS
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 30.8.2009

Репутация: нет
Всего: нет



Цитата(XoJIoD @  17.5.2011,  18:32 Найти цитируемый пост)
Вот попробуй.


Я думаю это увеличит время скачки почти в два раза. Сначало узнаём размер, а потом этим же способом качаем файл? Мне кажется это не решение.

Как я понял, этот файл на удалённом компе, по этому просто так размер не узнать. Если конечно удалённый комп не предлагает таких служб как FTP или ещё что-нить для работы с файлами.
PM WWW   Вверх
DenWPF
Дата 17.5.2011, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



Файл это mp3 с контакта.
PM MAIL   Вверх
Skipy
Дата 18.5.2011, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 6
Всего: 16



Читать блоками до возврата -1. Самое простое и эффективное. http://skipy-ru.livejournal.com/3621.html


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1036 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.