Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
lifeforce
205 / 164 / 74
Регистрация: 27.09.2010
Сообщений: 986
1

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

29.06.2015, 11:56. Просмотров 872. Ответов 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);
            }
        });
буду всем благодарен за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2015, 11:56
Ответы с готовыми решениями:

Как перезаписать,создать путь к папке с кешом
Здравствуйте.Решил здесь задать вопрос.У меня в андроиде была папка "obb" с...

Файл: Как с помощью Python записать (а не перезаписать) данные из базы SQLite в файл lex.txt.
Помогите с разработкой части проекта, пожалуйста! Есть файл db.sqlite в...

Как перезаписать файл?
Использую потоки fstream, не могу найти информации о том, как перезаписать файл...

Как перезаписать class файл
Как перезаписать class файл в jar архиве??? Идея такая : Программа соединяется...

Как перезаписать текстовый файл?
Мне нужно перезаписать текстовый файл. Но не полностью, а только последний...

8
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,732
29.06.2015, 12:21 2
lifeforce, привет!
Правильно, что используешь даунлоадманагер. Но тут что-то позабыто, а именно - callback на завершение скачивания. В нём можно что-нибудь поделать. Если же пользователь нажимает несколько раз на скачивание не очень быстро, т.е. сначала ждёт, пока скачается, потом нажимает второй раз, то проблемы и нет совсем.
0
lifeforce
205 / 164 / 74
Регистрация: 27.09.2010
Сообщений: 986
29.06.2015, 13:26  [ТС] 3
CoolMind,
Цитата Сообщение от CoolMind Посмотреть сообщение
т.е. сначала ждёт, пока скачается, потом нажимает второй раз, то проблемы и нет совсем.
как раз здесь и проблема.
в папке download уже есть файл "файл.тхт" .
запускаю приложение -> нажимаю на кнопку загрузки файла -> загружается файл еще один и с именем "файл1.тхт".
если еще раз запустить приложение и нажать то будет создан опять новый файл "файл2.тхт".
мне надо чтоб при нажатии на кнопку удалялся старый (если он существует) и записывал опять такой-же файл "файл.тхт"
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,732
29.06.2015, 13:39 4
lifeforce, изначально я предполагал, что пользователь несколько раз подряд нажимает "Скачать", тогда может быть проблема. В этом случае рекомендуется заблокировать кнопку (а если всё равно нажимается, проверять, скачивается ли файл).
Но поскольку вы описали более простую задачу, то делается проще пареной репы. Сначала проверяете существование файла с таким именем в нужной папке. Если существует - попытайтесь удалить (да, возможно, что не удалится). Затем начинайте скачивать. Тут есть некрасивый момент - а вдруг, не скачается? Интернета нет, или сервер не найден. Тогда вы нужный файл удалите просто так. Поэтому я и рекомендую делать всё в callback'е.
0
lifeforce
205 / 164 / 74
Регистрация: 27.09.2010
Сообщений: 986
29.06.2015, 13:57  [ТС] 5
Java
1
deleteFile("Download\\file.txt");
так не удаляется. я не знаю как ему сказать что файл на СД карте.
Цитата Сообщение от CoolMind Посмотреть сообщение
некрасивый момент - а вдруг, не скачается? Интернета нет, или сервер не найден.
это уже проблемы пользователя мне нужно чтоб всегда был только один файл. интернет всегда есть. всегда можно повторить и скачать заново.
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,732
29.06.2015, 14:24 6
lifeforce, какие-то несложные проблемы, которые вы не хотите решать самостоятельно. Я и без форумов находил на них вопросы просто поиском.
0
lifeforce
205 / 164 / 74
Регистрация: 27.09.2010
Сообщений: 986
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();
0
CoolMind
422 / 404 / 66
Регистрация: 06.10.2012
Сообщений: 1,732
29.06.2015, 17:28 8
lifeforce, на C++ пишешь, отличия от Java не очень большие, разобраться было просто, если не только копировать чужой код. А даже если и копировать, можно разобраться.
0
lifeforce
205 / 164 / 74
Регистрация: 27.09.2010
Сообщений: 986
29.06.2015, 17:36  [ТС] 9
CoolMind,
у меня нет времени много думать .

надо быстро дать пользоваться базой данных.
синтаксис здесь немного другой - вот и прошу помощи быстрее все закончить . в дальнейшем продолжу уже с профессиональным подходом -и в будущем пригодятся познания.
огромное спасибо за выделенное внимание.
0
29.06.2015, 17:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2015, 17:36

Как лучше перезаписать файл
Добрый день! Вопрос в принципе простой, что лучше и быстрее будет работать если...

Как перезаписать файл, а не дописать в него?
Подскажите пожалуйста как при сохранении с использованием SaveDialog и...

Как при чтении файла удалить первые 5ть строк и перезаписать в новый файл
Уважаемое сообщество! помогите пожалуйста с таким вопросом - как при чтении...


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

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

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