С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
SkN[i]lpl[e][r]
3 / 3 / 2
Регистрация: 12.05.2011
Сообщений: 248
1

Копирование папки из Assets

15.04.2015, 16:37. Просмотров 1955. Ответов 10
Метки нет (Все метки)

Всем здравствуйте! Я бы хотел узнать как можно скопировать подпапку (например "pictures") находящуюся в папке assets на карту памяти телефона. В подпапке "pictures" находятся несколько картинок.
Есть вариант как копировать один файл, но как целую папку я не знаю...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 private void copyfile() {
            
            byte[] buffer = new byte[1024];
            OutputStream myOutput = null;
            int length;
         
            InputStream myInput = null;
            try {
                myInput = mycontext.getAssets().open(FILE_NAME);
                // Передаем данные из inputfile в outputfile
                myOutput = new FileOutputStream(FILE_PATH + FILE_NAME);
                while ((length = myInput.read(buffer)) > 0) {
                    myOutput.write(buffer, 0, length);
                }
                myOutput.close();
                myOutput.flush();
                myInput.close();
             
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
Добавлено через 1 час 55 минут
Помогите пожалуйста!..
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2015, 16:37
Ответы с готовыми решениями:

Работа с файлом из папки Assets
Вопрос к знающим. При старте приложения в методе onCreate() постоянно копирую...

Добавить файлы и папки в assets программно
Можно ли добавить файлы и папки в assets программно?

Загрузка картинок из папки assets в imageView используя adapter
Пишу небольшую программку для андроида. Есть листвью который автоматически...

При чтении JSON файла из папки Assets разные данные
Хочу из файла test.txt вытащить данные json. Файл лежит в папке assets. ...

Assets
Здравствуйте,форумчане) Нигде не могу найти нужной информации((( Мне нужно...

10
androbro
344 / 304 / 68
Регистрация: 17.10.2014
Сообщений: 903
15.04.2015, 16:50 2
Цитата Сообщение от SkN[i]lpl[e][r] Посмотреть сообщение
Есть вариант как копировать один файл, но как целую папку я не знаю...
ну если я не ошибаюсь(а если ошибаюсь поправьте), то даже когда копируешь папку в ОС, то копируются все файлы данное папки по отдельности...а Вы щас хотите взять и скопировать папку одним движением? да давно бы уже по одному файлику да скопировали бы
0
SkN[i]lpl[e][r]
3 / 3 / 2
Регистрация: 12.05.2011
Сообщений: 248
16.04.2015, 08:50  [ТС] 3
ну рассчитывал может есть команда или процедура, файлов то много, не хотел сильно увеличивать код)

Добавлено через 15 часов 2 минуты
у меня постоянно выходит ошибка в этой строке
Java
1
 myInput = mycontext.getAssets().open(FILE_NAME);
, и вслед за ней куча других ошибок. Возможно такое что он не может открыть этот файл? Потому что я пытался скопировать файл данных, который ничем не открывается.
0
androbro
344 / 304 / 68
Регистрация: 17.10.2014
Сообщений: 903
16.04.2015, 08:56 4
SkN[i]lpl[e][r], так у Вас папка в assets или нет?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
16.04.2015, 09:07 5
А зачем файл открывать? Просто перебор и копирование.
0
Pablito
2777 / 2206 / 746
Регистрация: 12.05.2014
Сообщений: 7,737
Завершенные тесты: 1
16.04.2015, 09:11 6
в гугле первая ссылка про копирование файлов из asserts
0
SkN[i]lpl[e][r]
3 / 3 / 2
Регистрация: 12.05.2011
Сообщений: 248
16.04.2015, 09:46  [ТС] 7
androbro, да папка в assets находиться, в ней еще 2 подпапки в которых содержаться файлы
Rube, просто везде где я смотрел примеры команда getAssets().open() используется для копирования
Паблито, те примеры кодов не работают у меня, сверху как раз пример кода я скинул для копирования, и он не работает, ошибка в строке открытия файла
0
androbro
344 / 304 / 68
Регистрация: 17.10.2014
Сообщений: 903
16.04.2015, 10:36 8
SkN[i]lpl[e][r],
Цитата Сообщение от SkN[i]lpl[e][r] Посмотреть сообщение
да папка в assets находиться, в ней еще 2 подпапки в которых содержаться файлы
ну а почему открываешь так, как будто файл у тебя лежит в корне assets?
Цитата Сообщение от SkN[i]lpl[e][r] Посмотреть сообщение
myInput = mycontext.getAssets().open(FILE_NAME);
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
16.04.2015, 10:39 9
Попробуйте вот так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try {       
    AssetManager am = getAssets();  
    File destinationFile = new File(Environment.getExternalStorageDirectory()+ dir + fileName);  //путь
    InputStream in = am.open(fileName); // открываем файл
    FileOutputStream f = new FileOutputStream(destinationFile);  
    byte[] buffer = new byte[1024];
    int len1 = 0;
    while ((len1 = in.read(buffer)) > 0) {
        f.write(buffer, 0, len1);
    }
    f.close(); 
    resCopy=true; 
} catch (Exception e) {
    Log.d(LOG_TAG, e.getMessage()); 
    resCopy=false;
}
Мне кажется закавыка в путях у вас, выведите FILE_PATH и FILE_NAME в лог.
"/" не забыли?
1
Pablito
2777 / 2206 / 746
Регистрация: 12.05.2014
Сообщений: 7,737
Завершенные тесты: 1
16.04.2015, 11:02 10
вот такой код у меня работает
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
    private void copyFolder(String name) throws IOException {
        AssetManager assetManager = getAssets();
        String[] files = null;
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)) {
            try {
                files = assetManager.list(name);
            } catch (IOException e) {
                Log.i("===", "Failed to get asset file list.\n" + e);
            }
            for(String filename : files) {
                InputStream in = null;
                OutputStream out = null;
                File folder = new File(Environment.getExternalStorageDirectory() + "/" + name);
                boolean success = true;
                if (!folder.exists()) {
                    success = folder.mkdir();
                }
                if (success) {
                    try {
                        in = assetManager.open(name + "/" +filename);
                        out = new FileOutputStream(Environment.getExternalStorageDirectory() + "/"+ name + "/" + filename);
                        copyFile(in, out);
                    } catch(IOException e) {
                        Log.i("===", "Failed to copy asset file: " + filename + " " + e);
                    } finally {
                        in.close();
                        out.close();
                    }
                }
            }
        }
    }
 
    private void copyFile(InputStream in, OutputStream out) throws IOException {
        byte[] buffer = new byte[1024];
        int read;
        while((read = in.read(buffer)) != -1) {
            out.write(buffer, 0, read);
        }
    }
вызывается так
Java
1
2
3
4
5
6
7
8
9
10
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
            copyFolder("lol");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
папка lol создана в assets, там положил пару файлов и они успешно скопировались на карту
в манифесте добавил на всякий пожарный
Код
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
1
SkN[i]lpl[e][r]
3 / 3 / 2
Регистрация: 12.05.2011
Сообщений: 248
16.04.2015, 11:45  [ТС] 11
Паблито, я проверил, папка создалась, но если необходимо скопировать эту папку и еще вложенные в нее папки то не копируется, только начальная папка. Наверное нужно каждую папку по отдельности копировать
0
16.04.2015, 11:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2015, 11:45

Assets android безопасность
Добрый день! Файлы находящиеся в assets защищены от копировании &quot;ламерами&quot;?...

Write assets folder
Как записать файл в папку активы

OnUpgrade сторонней БД из assets
Вообщем ситуевина следующего характера.. имеется сторонняя БД в assets.. при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru