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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> некоректное скачивание 
V
    Опции темы
BlackShon
Дата 19.6.2008, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте!
 Существует следующий код
 
Код

public boolean DNLF() throws Exception {
  URL hURL;
  URLConnection httpConnect;
  
  FileWriter f = new FileWriter("C://файл.exe");
  hURL = new URL("http://127.0.0.1/файл.exe");
  httpConnect = hURL.openConnection();
  httpConnect.setDoInput(true);
  try{
  httpConnect.connect();
    } catch (Exception e){      
       return false;
      }   
    BufferedReader in = new  BufferedReader(new InputStreamReader(httpConnect.getInputStream()));
    String inLine = null;        
    String buf = new String();    
        while((inLine = in.readLine()) != null){
          f.write(inLine, 0, inLine.length()); 
        }
    f.close();  
  return true;
 }


Здесь я пробывал на lokalhost'е перекачать оттуда на "С" всё вроде бы нормально протекает, но сам закачанный файл уже не запускается. Помогите разобраться в чём тут дело?

Да и сравнивая размер на сервере и диске разница примерно а 1-2 кб, это получается ошибка в коде?

Это сообщение отредактировал(а) BlackShon - 19.6.2008, 21:13
PM MAIL   Вверх
v2v
Дата 19.6.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



создай файл на 10 кб: 
Код

12345678901234567890 ... 1234567890

скачай его, посмотри что получиться ..


--------------------
PM   Вверх
COVD
Дата 19.6.2008, 23:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Нельзя BufferedReader использовать для чтения exe файлов - он предназначен для чтения текста.

Текстовая строка - это последовательность символов ,  заканчивающаяся символами  перевода строки "\n\r", т.е. байты 13 и 10. Конец текста - пустая строка. Таким образом, чтение потока байтов заканчивается, когда встречается последовательность байтов "\n\r\n\r", т.е. 13 10 13 10. Если в вашем exe файле такие байты есть в середине, то дальше он читаться не будет.  И, очевидно, все последовательности байтов 13 10 ( если они были в exe файле ) в сохраненном файле отсутствуют.

Используйте DataInputStream, например, и читайте по одному байту.

Это сообщение отредактировал(а) COVD - 20.6.2008, 04:06
PM MAIL   Вверх
LSD
Дата 20.6.2008, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(COVD @  20.6.2008,  00:16 Найти цитируемый пост)
Используйте DataInputStream, например, и читайте по одному байту.

Да можно просто FileOutputStream, и читать лучше не по одному байту.

И еще, доступ к файлам имеют только подписанные апплеты. 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
BlackShon
Дата 20.6.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Протите новичка, но можно ли ваши слова кодом подкрепить?
PM MAIL   Вверх
LSD
Дата 20.6.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Код

  public boolean DNLF()
  {
    FileOutputStream out = null;
    HttpURLConnection urlConnection = null;
    try
    {
      out = new FileOutputStream("prog.exe");
      URL url = new URL("http://127.0.0.1/prog.exe");
      urlConnection = (HttpURLConnection) url.openConnection();
      urlConnection.setDoInput(true);
      urlConnection.connect();
      InputStream in = urlConnection.getInputStream();
      byte[] buffer = new byte[32 * 1024];
      int read;
      while((read = in.read(buffer)) != -1)
        out.write(buffer, 0, read);
    }
    catch(Exception e)
    {
      return false;
    }
    finally
    {
      if(out != null)
      {
        try
        {
          out.close();
        }
        catch(IOException e)
        {}
      }
      if(urlConnection != null)
        urlConnection.disconnect();
    }
    return true;
  }



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
BlackShon
Дата 20.6.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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