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

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

Войти
Регистрация
Восстановить пароль
 
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
#1

Не читается текстовый файл с SD-карты - Программирование Android

20.09.2014, 23:11. Просмотров 731. Ответов 4
Метки нет (Все метки)

Приложение считывает с сервера некий текстовый файл и сохраняет его на SD-карте. Путь к файлу такой:

"/mnt/sdcard/Android/data/myApp/myfile.txt"

Попутный вопрос - правильно ли я разобрался, что при задании пути в таком виде файл будет записан и в версии Андроид 4.4.2? нет под рукой девайса с этой версией, поэтому проверить не смог.

Для других версий файл точно сохраняется в указанной папке и его содержимое корректно.
Теперь пытаюсь считать файл с помощью такого кода:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
     File txtFile = new File("/mnt/sdcard/Android/data/myApp/myfile.txt");
      if(txtFile.exists())
      {
          try {
              // открываем поток для чтения
              BufferedReader myfile = new BufferedReader(new FileReader(txtFile));
              String str = "";
              // читаем содержимое
              while ((str = myfile.readLine()) != null) {
              }
            } catch (FileNotFoundException e) {
              e.printStackTrace();
            } catch (IOException e) {
              e.printStackTrace();
            }
       }
В результате получаю null в str. Подскажите, где я ошибаюсь.
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2014, 23:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не читается текстовый файл с SD-карты (Программирование Android):

Удалить файл базы с SD карты при удалении приложения - Программирование Android
Возможно ли такое ? Файл базы создаю: public DBHelper(Context context) { super(context, "/sdcard/"+DATABASE_NAME, null,...

Можно ли открыть текстовый файл на телефоне LG GB 110 с карты памяти ? - Мобильный софт
Не знаю- есть ли здесь пользователи дешёвых телефонов. Поясните,пожалуйста- для чего может пригодится папка "Другие".И будет ли работать...

Дан текстовый файл. Используя стек, сформировать новый текстовый файл, каждая строка которого содержит символы - Delphi
Дан текстовый файл. Используя стек, сформировать новый текстовый файл, каждая строка которого содержит символы соответствующей строки...

Дан текстовый файл. Используя стек, сформировать новый текстовый файл, каждая строка которого содержит символы - C#
Дан текстовый файл. Используя стек, сформировать новый текстовый файл, каждая строка которого содержит символы соответствующей строки...

Текстовый файл содержит список фамилий и должность сотрудников. Сформировать текстовый файл, содержащий фамил - Pascal
Текстовый файл содержит список фамилий и должность сотрудников. Сформировать текстовый файл, содержащий фамилии сотрудников, работающих ...

Исходный текстовый файл скопировать в результирующий текстовый файл, удалив слова менее N1 символов - C (СИ)
Не так давно я просил помощь в написании программы на си: Исходный текстовый файл скопировать в результирующий текстовый файл, удалив слова...

4
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
21.09.2014, 00:11 #2
Ну как минимум, так задавать путь не правильно. Во-первых SD может не быть вовсе и будет исключение, поэтому нужна проверка. Во-вторых пути разные. У меня есть класс в котором есть такой метод:

Java
1
2
3
4
5
6
7
8
9
    /**метод возвращающий путь к SD карте*/
    public String getSDPath(){
        String folder = "";
        String sdState = android.os.Environment.getExternalStorageState(); //Получаем состояние SD карты (подключена она или нет) - возвращается true и false соответственно
        if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)){
            folder = Environment.getExternalStorageDirectory().toString();
        }
        return folder;
    }
Добавлено через 2 минуты
Ну еще вот есть метод считывания файла с SD карты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    /**метод считывания файла с sd-карты*/
    public String read_from_sd(String path2file){
        File sdFile = new File(path2file);
        String result = "";
        try {
            BufferedReader br = new BufferedReader(new FileReader(sdFile));
            String str = "";
            while ((str = br.readLine()) != null) {
                result += str;
            }
            br.close();
        } catch (FileNotFoundException e) {
        } catch (IOException e) {}
        return result;
    }
И еще не забываем указывать права в манифесте, как минимум на чтение
Java
1
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
0
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
21.09.2014, 07:47  [ТС] #3
Спасибо, в вашем втором фрагменте кода увидел свою ошибку

Вопрос не в форме задания пути, это просто тестовый вариант для наглядности, так как еще интересует вопрос куда же разрешено писать файлы в Андроиде версии 4.4.2? Увы, у меня нет гаджета с этой версией, чтобы проверить, а в эмуляторе не уверен, что эта особенность версии воспроизводится корректно.
В основном, все найденные мною ответы сводятся к пояснению, что разрешено писать в "свою" директорию. Но что такое своя директория и где она должна располагаться?
0
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
21.09.2014, 10:29 #4
Ну пока это была директория //mnt/data/data/my.package.ru/ а внутри уже директории для хранения файлов настроек, баз данных и т.д.
0
Alexvp
108 / 72 / 8
Регистрация: 03.08.2014
Сообщений: 348
21.09.2014, 15:30  [ТС] #5
Мне где-то попадалась информация, что Гугл требует складывать пользовательские данные в /mnt/sdcard/Android/data/my.package.ru/
Но эта инфо была датирована 2011 годом, поэтому у меня и возникли опасения, что гугл изменил это требование.
Или /mnt/sdcard/Android/data/my.package.ru/ и /mnt/data/data/my.package.ru/ по сути одно и тоже?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2014, 15:30
Привет! Вот еще темы с ответами:

дан текстовый файл.перенести в текстовый файл все строки, содержащие заданное слово - Pascal
помогите пожалуйста решить задачу... условие:дан текстовый файл.перенести в текстовый файл все строки, содержащие заданное слово очень...

Есть текстовый файл, первый символ каждой строки записать в другой текстовый файл - Visual Basic
Есть текстовый файл, первый символ каждой строки записать в другой текстовый файл помогите в написании такой программы

Дан текстовый файл. Вывести в другой текстовый файл количество слов одинаковой длины - Pascal ABC
1. Дан текстовый файл. Вывести в другой текстовый файл количество слов одинаковой длины.Пример Длина 1-5 Длина 2-3 Длина 3-10 2....

Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл - C++
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
21.09.2014, 15:30
Ответ Создать тему
Опции темы

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