Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
6 / 4 / 1
Регистрация: 28.09.2016
Сообщений: 223

Почему нет доступа к файлу?

03.10.2020, 17:49. Показов 1964. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!
использую Android Studio. Подключаюсь к физическому устройству Samsung. На нём установлена карта памяти.
Изучаю андроид по книге. В одной главе описано, как создать файл text.txt на смартфоне(точнее на sd-карте), записать в него текст, потом прочитать этот текст и вывести на экран.
Вот код:
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
public class ExternalStorageTest extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView textView = new TextView(this);
        setContentView(textView);
        String state = Environment.getExternalStorageState();
        if (!state.equals(Environment.MEDIA_MOUNTED)) {
            textView.setText("No external storage mounted");
        } else {
            File externalDir = Environment.getExternalStorageDirectory();
            File textFile = new File(externalDir.getAbsolutePath()+ File.separator + "text.txt");
            try {
                writeTextFile(textFile, "This is a test. Roger");
                String text = readTextFile(textFile);
                textView.setText(text);
                if (!textFile.delete()) {
                    textView.setText("Couldn't remove temporary file");
                }
            } catch (IOException e) {
                textView.setText("something went wrong! " + e.getMessage());
            }
        }
    }
    private void writeTextFile(File file, String text) throws IOException {
        BufferedWriter writer = new BufferedWriter(new FileWriter(file));
        writer.write(text);
        writer.close();
    }
    private String readTextFile(File file) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader(file));
        StringBuilder text = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            text.append(line);
            text.append("\n");
        }
        reader.close();
        return text.toString();
    }
}
В манифесте даю разрешение на доступ к карте.
HTML5
1
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
В результате в строке (№14) которая пытается записать данные в файл возникает исключение - Permission denied
Подскажите, почему доступ к карте закрыт? Я же в манифесте доступ разрешил. Как исправить эту ошибку?
Спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.10.2020, 17:49
Ответы с готовыми решениями:

Нет доступа к файлу
Всем здравствуйте. Вот какая проблема: имеется txt файл, в нем записан 0. После выполнения программы к 0 прибавляется (должна...

Нет доступа к файлу
Здравствуйте, подскажите, пожалуйста, что можно сделать в следующей ситуации: пытаюсь запустить словарь электронный, все установилось, но...

Если к файлу нет доступа
ДОбрый день. Пытаюсь получить содержание папки: File fileOfNode = new File(urlFile).listFiles(); все отлично пока не попадаю в файл...

12
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
03.10.2020, 17:59
https://developer.android.com/... ting?hl=ru
1
6 / 4 / 1
Регистрация: 28.09.2016
Сообщений: 223
03.10.2020, 18:19  [ТС]
Так я же указал разрешение в манифесте. Что ещё нужно?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
03.10.2020, 19:02
Цитата Сообщение от pumaex Посмотреть сообщение
Что ещё нужно?
Читать актуальный материал, вместо устаревшего, например, по указанной ссылке.
0
9 / 6 / 3
Регистрация: 26.10.2015
Сообщений: 32
04.10.2020, 14:08
Лучший ответ Сообщение было отмечено pumaex как решение

Решение

В onCreate добавь

Java
1
2
3
4
5
6
7
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
                PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[] {
                            Manifest.permission.WRITE_EXTERNAL_STORAGE
                    }, 0);
        }
1
14 / 10 / 5
Регистрация: 26.02.2017
Сообщений: 92
04.10.2020, 22:57
Подключаюсь к физическому устройству Samsung.
На котором версия Андроид выше пятой, правда?
0
6 / 4 / 1
Регистрация: 28.09.2016
Сообщений: 223
07.10.2020, 15:10  [ТС]
Цитата Сообщение от Godster Посмотреть сообщение
В onCreate добавь
Спасибо. Ваша подсказка мне помогла.
Но из-за того, что я только начинаю разбираться с этой темой появилась такая проблема:

Программа, которую я выкладывал с вашими подсказками работает теперь правильно.
В результате работы программы я ожидаю увидеть на карте памяти файл /storage/emulated/0/text.txt
Потому-что программа в него записала текст, а потом прочитала этот же текст.
Но если я захожу по этому адресу на карточку, то обнаруживаю, что такой файл отсутствует!
Не могу понять из-за чего это происходит? В книге об этом ничего не сказано.
Подскажите, почему файл не появляется? Спасибо

Добавлено через 1 час 48 минут
Покопался в папках на смартфоне и оказалось, что файл text.txt находится в корневой папке смартфона, а не на карте???
Подскажите, почему файл не на sd-карте, а на встроенной карте? Программа, насколько я понял, должна была записать файл на внешнюю карту, а не на встроенную.
Я запустил эту же программу на смартфоне без внешней карты. Работает нормально, записывает файл в свой корневой каталог. Это я что-то делаю неправильно или из-за новой версии андроида это происходит?
0
9 / 6 / 3
Регистрация: 26.10.2015
Сообщений: 32
07.10.2020, 18:03
Тут я не помогу, пока не так много опыта в андроиде
0
145 / 134 / 22
Регистрация: 28.06.2015
Сообщений: 674
08.10.2020, 11:36
Цитата Сообщение от pumaex Посмотреть сообщение
Это я что-то делаю неправильно или из-за новой версии андроида это происходит?
Я вам уже в другой теме дал ответ. А вы упорно его игнорируете. Нет, можете игнорировать конечно, но проблемы у вас так и останутся.
Цитата Сообщение от Vladimir93 Посмотреть сообщение
Не читайте это книгу, она уже устарела. Ищите что то поновее.
0
6 / 4 / 1
Регистрация: 28.09.2016
Сообщений: 223
08.10.2020, 20:43  [ТС]
Цитата Сообщение от Vladimir93 Посмотреть сообщение
Я вам уже в другой теме дал ответ
Я в той же теме у вас спросил - На какую книгу заменить устаревшую?
Ответа не получил. Потому что таких книг(того же направления на русском) нет.
Поэтому приходится учиться по той книге которая есть. Изменений не так уж много.
А если они есть я задаю вопросы на форуме. Он как раз для этого.
0
14 / 10 / 5
Регистрация: 26.02.2017
Сообщений: 92
09.10.2020, 08:42
getExternalStorageDirectory() возвращает то, что производитель устройства считает "external storage".
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
10.10.2020, 14:35
Цитата Сообщение от pumaex Посмотреть сообщение
На какую книгу заменить устаревшую?
https://developer.android.com/docs

getExternalStorageDirectory - deprecated на версиях андроида 10 и выше.
0
145 / 134 / 22
Регистрация: 28.06.2015
Сообщений: 674
11.10.2020, 13:15
Цитата Сообщение от pumaex Посмотреть сообщение
отому что таких книг(того же направления на русском) нет.
Нету, английский нужно знать. А то так вы и будете, по каждому коду сюда бегать, ибо работать не будет.
Сейчас вот например, все библиотеки совместимости перевели на AndroidX. Все, нет ни v4, ни v7, ни 8, ни 13, ни 17, ни Фрагментов из Андроид, только из библиотеки, и только из AndroidX. А вы наверно учите, понять пытаетесь.
Хотя вы не одиноки, Маил ру в том году (2019) на своем технополисе, учинил народ использовать asynctask который deprecated с 11 - ой версии.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2020, 13:15
Помогаю со студенческими работами здесь

Нет доступа к файлу System.IO
Доброе кому утро, кому вечер. Подскажите пожалуйста. Пробую шифровать файл xml, но никак не выходит. Debug выводит сообщение о том, что...

Проблема: нет доступа к файлу.
Sozdaju programmno file Excel dlja exporta dannih iz Grida: fileExcel = 'C: est.xls' objFileStream = New FileStream(fileExcel,...

Нет доступа к файлу Hosts! Windows 10
Винда ругается на то, что у меня не хватает прав! Что уже делал: -Назначал пользователю права Администратора! -Заходил за...

Нет доступа к файлу на созданном сайте
Уважамые форумчане! Подскажите, пожалуйста! Создал сайт на бесплатном хостинге beget.ru. В папку public_html залил сайт и файл php, к...

Нет доступа к файлу или TEMP-каталогу
Всем добра! Помогите разобраться: пытаюсь запустить мультимедийный курс TeachPro, скачал, смонтировал в UltraISO, зашёл, установил...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru