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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка файлов 
:(
    Опции темы
Grizli
Дата 27.5.2012, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Возникла очередная проблема, моё приложение проверяет файлы на md5 соответствие и если они не совпадают то, приложение их загружает заново. Но нас Windows есть небольшая лазейка, если у файлов, которых идёт проверка установить режим "только чтения" то моё приложение не будет их скачивать. Т.е система запрещает изменение этого файла. Как мне можно это исправить? Что-бы скачка файла была в любом случае.
PM MAIL   Вверх
Pretorian
Дата 28.5.2012, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



когда Вы скачиваете файл, Вы же его не изменяете, а просто считываете...
PM   Вверх
Grizli
Дата 31.5.2012, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Pretorian, наверное поэтому у меня файл не загружается... Если вы не знаете, то не пишите пожалуйста! 
На linux кстате это ещё проще сделать.
PM MAIL   Вверх
Pretorian
Дата 31.5.2012, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Grizli, кажется я понял тебя. Тебе нужно чтобы файл, который ты обновляешь был открыт для записи? Если так, то используй setWritable(boolean) для этого файла.
PM   Вверх
Grizli
Дата 31.5.2012, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Pretorian, рука лицо... Вы о чём вообще? Мне нужно, что-бы не в зависимости от запрета система моё приложение качало этот файл!

Добавлено через 10 минут и 9 секунд
Мне нужен просто обработчик ошибки, если файл не может быть загружен то процесс прерывается.

Добавлено через 13 минут и 58 секунд
Код

  private static void downloadFile(String url, String outPut) throws Exception
        {
                try
                {
                        URL req_url = new URL(url);
                        HttpURLConnection con1 = (HttpURLConnection) (req_url.openConnection());
                        System.setProperty("http.agent", "");
                        con1.setRequestProperty("User-Agent", "");
                        BufferedInputStream in = new BufferedInputStream(con1.getInputStream()); // con1.getInputStream() - в этом случае используется
                                                                                                                                                                                // верный User-Agent
                        FileOutputStream fos = new FileOutputStream(outPut);
                        BufferedOutputStream bout = new BufferedOutputStream(fos, 1024);
                        byte[] data = new byte[1024];
                        int x = 0;
                        while ((x = in.read(data, 0, 1024)) >= 0)
                                bout.write(data, 0, x);
                        bout.close();
                        in.close();
                }
                catch (MalformedURLException e)    
                {
                      
                }
        }

PM MAIL   Вверх
Pretorian
Дата 1.6.2012, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ещё раз...
 1) Есть файл на локальной машине.
 2) Есть ссылка, откуда этот файл надо обновить.
 3) Сравниваются md5 обоих файлов. Если они не совпали, то надо скачать файл по ссылке, при этом перетереть существующий файл на локальной машине.
 4) Но у файла на локальной машине выставлен аттрибут "Read-only", и поэтому при его "перетирании" возникает исключение 
Код

Exception in thread "main" java.io.FileNotFoundException: %path_to_file% (Access is denied)

Так???

Если по этому вопросу
Цитата(Grizli @  31.5.2012,  22:58 Найти цитируемый пост)
Мне нужно, что-бы не в зависимости от запрета система моё приложение качало этот файл!
,
то 
Цитата(Pretorian @  31.5.2012,  14:21 Найти цитируемый пост)
используй setWritable(boolean) для этого файла

Код

private static void downloadFile(String url, String outPut) throws Exception {
   // Допустим так. И исключения не будет.
    File file = new File(outPut);
    file.setWritable(true);
    try {
      .............
    } catch (MalformedURLException e) {
    }
  }


А если по этому вопросу
Цитата(Grizli @  31.5.2012,  22:58 Найти цитируемый пост)
Мне нужен просто обработчик ошибки, если файл не может быть загружен то процесс прерывается.
,
то
Код

private static void downloadFile(String url, String outPut) throws Exception {
   try {
      .............
    } catch (MalformedURLException e) {
    } catch (FileNotFoundException e) {
         // Мы поймали исключение, когда пытались обновить файл, но т.к. он у нас "Read-only",
         // мы его всё ещё не обновили...
    }
  }


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


Шустрый
*


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

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



Pretorian,  спасибо, я установил setWritable и обработчик ошибок на всякий случай! Всё прекрасно работает 
PM MAIL   Вверх
Grizli
Дата 4.6.2012, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хотя нет, setWritable не решение. Команда будет выполняться от имени того пользователя, от которого запущен процесс приложения. В случае, если у файла владелец другой, то и применение прав не произойдет, процесс пойдет дальше.

Добавлено через 9 минут и 18 секунд
Извините ещё за вопрос, но как я могу прервать этот процесс? 
PM MAIL   Вверх
Grizli
Дата 4.6.2012, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


 




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


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

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