Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
lifeforce
76 / 69 / 14
Регистрация: 27.09.2010
Сообщений: 522
#1

Как перезаписать файл? - Android

29.06.2015, 11:56. Просмотров 538. Ответов 8
Метки нет (Все метки)

Всем привет!
по нажатию на кнопку идет скачивание файла через интернет - все ОК!
но если нажать повторно то опять произойдет скачивание файла и будет дописан новый в регистром 1.2...... и.т.д.
файл.тхт - первый раз загружен
файл1.тхт - второй раз загружен,
...... и, т.д.

но мне надо чтоб файл оставался только один! (файл.тхт).
возможно его надо удалить а потом записать снова.

как это можно реализовать вот в этом коде?

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
 Button buttonDownload = (Button) findViewById(R.id.button);
        buttonDownload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Uri uri = Uri.parse(downloadFileUrl);
                DownloadManager.Request request = new DownloadManager.Request(uri);
 
//                set the notification
                request.setDescription("My Download")
                        .setTitle("Notification Title");
 
//                set the path to where to save the file
//                      save in app package directory
                request.setDestinationInExternalFilesDir(MainActivity.this,
                        Environment.DIRECTORY_DOWNLOADS, "logo.jpg");
//                      save in the public downloads folder
//                request.setDestinationInExternalPublicDir(Environment.
//                              DIRECTORY_DOWNLOADS, "MyWebsiteLogo.png");
 
//                make file visible by and manageable by system's download app
                request.setVisibleInDownloadsUi(true);
 
//                select which network, etc
                request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI
                        | DownloadManager.Request.NETWORK_MOBILE);
 
//                queue the download
                myDownloadReference = downloadManager.enqueue(request);
            }
        });
буду всем благодарен за помощь!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
29.06.2015, 12:21     Как перезаписать файл? #2
lifeforce, привет!
Правильно, что используешь даунлоадманагер. Но тут что-то позабыто, а именно - callback на завершение скачивания. В нём можно что-нибудь поделать. Если же пользователь нажимает несколько раз на скачивание не очень быстро, т.е. сначала ждёт, пока скачается, потом нажимает второй раз, то проблемы и нет совсем.
lifeforce
76 / 69 / 14
Регистрация: 27.09.2010
Сообщений: 522
29.06.2015, 13:26  [ТС]     Как перезаписать файл? #3
CoolMind,
Цитата Сообщение от CoolMind Посмотреть сообщение
т.е. сначала ждёт, пока скачается, потом нажимает второй раз, то проблемы и нет совсем.
как раз здесь и проблема.
в папке download уже есть файл "файл.тхт" .
запускаю приложение -> нажимаю на кнопку загрузки файла -> загружается файл еще один и с именем "файл1.тхт".
если еще раз запустить приложение и нажать то будет создан опять новый файл "файл2.тхт".
мне надо чтоб при нажатии на кнопку удалялся старый (если он существует) и записывал опять такой-же файл "файл.тхт"
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
29.06.2015, 13:39     Как перезаписать файл? #4
lifeforce, изначально я предполагал, что пользователь несколько раз подряд нажимает "Скачать", тогда может быть проблема. В этом случае рекомендуется заблокировать кнопку (а если всё равно нажимается, проверять, скачивается ли файл).
Но поскольку вы описали более простую задачу, то делается проще пареной репы. Сначала проверяете существование файла с таким именем в нужной папке. Если существует - попытайтесь удалить (да, возможно, что не удалится). Затем начинайте скачивать. Тут есть некрасивый момент - а вдруг, не скачается? Интернета нет, или сервер не найден. Тогда вы нужный файл удалите просто так. Поэтому я и рекомендую делать всё в callback'е.
lifeforce
76 / 69 / 14
Регистрация: 27.09.2010
Сообщений: 522
29.06.2015, 13:57  [ТС]     Как перезаписать файл? #5
Java
1
deleteFile("Download\\file.txt");
так не удаляется. я не знаю как ему сказать что файл на СД карте.
Цитата Сообщение от CoolMind Посмотреть сообщение
некрасивый момент - а вдруг, не скачается? Интернета нет, или сервер не найден.
это уже проблемы пользователя мне нужно чтоб всегда был только один файл. интернет всегда есть. всегда можно повторить и скачать заново.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
29.06.2015, 14:24     Как перезаписать файл? #6
lifeforce, какие-то несложные проблемы, которые вы не хотите решать самостоятельно. Я и без форумов находил на них вопросы просто поиском.
lifeforce
76 / 69 / 14
Регистрация: 27.09.2010
Сообщений: 522
29.06.2015, 15:21  [ТС]     Как перезаписать файл? #7
CoolMind,

я С++ пишу проги. написал программу для поиска клиентов на карте и поиска аварий (повреждения по линии телевидения) и чтоб не таскать с собой компьютер , там где есть все нужные файлы - я их отправляю на сервер а все коллеги просто закачивают уже готовые карты и списки напрямую на телефон.

Сейчас нашел еще одно решение , но что-то тоже не работает.
Java
1
2
3
4
5
6
7
8
9
10
11
 // получаем путь к SD
                File sdPath = Environment.getExternalStorageDirectory();
                sdPath = new File(sdPath.getAbsolutePath() + "/Download/");
                // формируем объект File, который содержит путь к файлу
                File sdFile = new File(sdPath, "File.xlsx");
 
    private void deleteFile(File sdFile) {
        if(!sdFile.exists())
            return;
        deleteFile(sdFile);
    }
Добавлено через 29 минут
решил .

Java
1
2
3
4
                // получаем путь к SD
                File sdPath = Environment.getExternalStorageDirectory();
                sdPath = new File(sdPath.getAbsolutePath() + "//Download//File.xlsx");//
                sdPath.delete();
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
29.06.2015, 17:28     Как перезаписать файл? #8
lifeforce, на C++ пишешь, отличия от Java не очень большие, разобраться было просто, если не только копировать чужой код. А даже если и копировать, можно разобраться.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2015, 17:36     Как перезаписать файл?
Еще ссылки по теме:

Как записать аудио поток в файл Android
Android Как прочитать db файл?
Android Как перезаписать,создать путь к папке с кешом
Android Как вытащить файл из эмулятора?
как загрузить файл в папку assets Android

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

Или воспользуйтесь поиском по форуму:
lifeforce
76 / 69 / 14
Регистрация: 27.09.2010
Сообщений: 522
29.06.2015, 17:36  [ТС]     Как перезаписать файл? #9
CoolMind,
у меня нет времени много думать .

надо быстро дать пользоваться базой данных.
синтаксис здесь немного другой - вот и прошу помощи быстрее все закончить . в дальнейшем продолжу уже с профессиональным подходом -и в будущем пригодятся познания.
огромное спасибо за выделенное внимание.
Yandex
Объявления
29.06.2015, 17:36     Как перезаписать файл?
Ответ Создать тему
Опции темы

Текущее время: 11:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru