Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Распаковать архив на SD-Card 
:(
    Опции темы
Oligarh
Дата 10.11.2011, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. Столкнулся с небольшой проблемкой. 
Есть задача: на SD лежит архив. Я знаю, какой к нему путь, но не могу распаковать. Говорит: "WARN/System.err(422): java.io.FileNotFoundException: /имяфайла (Read-only file system)"

Делаю вот так:
Код

public static void writeZip(InputStream in, OutputStream out) throws IOException {
        byte[] buffer = new byte[256];
        int len;
        while ((len = in.read(buffer)) >= 0)
        out.write(buffer, 0, len);
        in.close();
        out.close();
}


Код

Enumeration entries = null;
 ZipFile zip = null;

 try {
       zip = new ZipFile(FileUtils.createExternalDir(StartActivity.this, FileUtils.STORAGE_ROOT_PREFIX).toString() + "/" + nameFile);
       entries = zip.entries();

       while (entries.hasMoreElements()) {
              ZipEntry entry = (ZipEntry) entries.nextElement();
              System.out.println("Extracting:" + entry.getName());

              FileUtils.writeZip(zip.getInputStream(entry),
                                         new BufferedOutputStream (new
                                         FileOutputStream(entry.getName())));
      }

      zip.close();
} catch (IOException e) {
      System.out.println("Exception:");
      e.printStackTrace();
      return;
}


Подскажите, пните нуба smile

Это сообщение отредактировал(а) Oligarh - 10.11.2011, 18:06
PM MAIL   Вверх
ivanovpv
Дата 11.11.2011, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


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

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



Че-то я не вижу чтобы ты писал на SD - судя по всему ты пытаешься создать каталог в корне и пытаешься написать туда. Для доступа к SD карте надо вызвать что-то типа такого:

Код

    public static File getSDRoot()
    {
        String state = Environment.getExternalStorageState();
        if (state!=null && (Environment.MEDIA_MOUNTED.equals(state)
                || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)))
            return Environment.getExternalStorageDirectory();
        return null;
    }



--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Oligarh
Дата 11.11.2011, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пишу точно на карту. Метод FileUtils.createExternalDir() делает почти то, что ты написал, только проверяей еще версию API.

Задачу решил, но решил немного по-другому:
Код

public static void unpackZip(String path, String dir_to) throws IOException {
        ZipFile zip = new ZipFile(path);
        Enumeration entries = zip.entries();
        LinkedList<ZipEntry> zfiles = new LinkedList<ZipEntry>();
        while (entries.hasMoreElements()) {
            ZipEntry entry = (ZipEntry) entries.nextElement();
            if (entry.isDirectory()) {
                new File(dir_to + "/" + entry.getName()).mkdir();
            } else {
                zfiles.add(entry);
            }
        }

        for (ZipEntry entry : zfiles) {
            InputStream in = zip.getInputStream(entry);
            OutputStream out = new FileOutputStream(dir_to + "/" + entry.getName());
            byte[] buffer = new byte[1024];
            int len;
            while ((len = in.read(buffer)) >= 0)
                out.write(buffer, 0, len);
            in.close();
            out.close();
        }
        zip.close();
    }


Делал так потому что мне надо было восстанавливать дерево папок. Поэтому сразу создаю папки, а потом пишу туда файлы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




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


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

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