Урок 75. Хранение данных. Работа с файлами.
Re: Урок 75. Хранение данных. Работа с файлами.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 31
- Зарегистрирован: 03 сен 2013, 14:26
Re: Урок 75. Хранение данных. Работа с файлами.
Самодельный File Explorer.
Есть Активити1 при нажатии на кнопку, переходим в Активити2.
Активити2 представляет из себя проводник, но показывает пользователю только файлы картинок. В Активити2 выбираем нужный файл, и возвращаем его полный путь через интент в Активити1, по клику на файле ну или фиг с ним по клику на кнопочке Ок.
Очень хочется написать самостоятельно для практики и расширения кругозора. Подскажите с чего начать. Букварь и таблицу умножения не предлагать уже читал, почти все понял.
Есть Активити1 при нажатии на кнопку, переходим в Активити2.
Активити2 представляет из себя проводник, но показывает пользователю только файлы картинок. В Активити2 выбираем нужный файл, и возвращаем его полный путь через интент в Активити1, по клику на файле ну или фиг с ним по клику на кнопочке Ок.
Очень хочется написать самостоятельно для практики и расширения кругозора. Подскажите с чего начать. Букварь и таблицу умножения не предлагать уже читал, почти все понял.
Re: Урок 75. Хранение данных. Работа с файлами.
Добрый день. Подключил к компьютеру планшет, но папка data не отрывается. На эмуляторе все норм.
Я так понимаю нужны Root права или в Eclips нужно изменить какие то настройки?
Я так понимаю нужны Root права или в Eclips нужно изменить какие то настройки?
Re: Урок 75. Хранение данных. Работа с файлами.
А как создать файл на флешке в Android 4.4.4 API19 ?
-
- Сообщения: 31
- Зарегистрирован: 03 сен 2013, 14:26
Re: Урок 75. Хранение данных. Работа с файлами.
Вопрос не понятен. Возможно вы имели в виду вот это viewtopic.php?f=26&t=5668Joni писал(а):А как создать файл на флешке в Android 4.4.4 API19 ?
Re: Урок 75. Хранение данных. Работа с файлами.
в эмуляторе файл на SD-карте создается, а на реальном устройстве нет
изначально думал, что это из-за Andriod 4.4, добился того, что в эмуляторе на этой версии андройда начал создаваться файл.
закинул приложение на планшет и опять не работает(((
стал разбираться более подробно, оказалось, что на планшете установлен Андройд не 4.4, а 4.2
наконец разобрался!
нужно сделать так
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ser.myapplication" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
изначально думал, что это из-за Andriod 4.4, добился того, что в эмуляторе на этой версии андройда начал создаваться файл.
закинул приложение на планшет и опять не работает(((
стал разбираться более подробно, оказалось, что на планшете установлен Андройд не 4.4, а 4.2
наконец разобрался!
нужно сделать так
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ser.myapplication" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Re: Урок 75. Хранение данных. Работа с файлами.
В уроке про это сказано:Joni писал(а):в эмуляторе файл на SD-карте создается, а на реальном устройстве нет
изначально думал, что это из-за Andriod 4.4, добился того, что в эмуляторе на этой версии андройда начал создаваться файл.
закинул приложение на планшет и опять не работает(((
стал разбираться более подробно, оказалось, что на планшете установлен Андройд не 4.4, а 4.2
наконец разобрался!
нужно сделать так
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
Но на 4.4 записать файл в любую директорию не получится, только в папку приложения. В Android 5 вроде бы ввели API для работы с файлами на sd.Осталось в манифест добавить разрешение на работу с файлами на SD - android.permission.WRITE_EXTERNAL_STORAGE.
-
- Сообщения: 15
- Зарегистрирован: 31 мар 2015, 15:17
Re: Урок 75. Хранение данных. Работа с файлами.
Зачем в методе void writeFileSD() мы опять создаем директорию и тд? Обычно мы подключаем считывающий поток уже к существующему файлу, т.е должен уже быть готовый путь, который мы и вставим в конструктор new File("тут будет путь");
Или я чего то не понял?
Или я чего то не понял?
Re: Урок 75. Хранение данных. Работа с файлами.
Все таки почему в примере не закрывается поток чтения?
Re: Урок 75. Хранение данных. Работа с файлами.
MODE_APPEND = 0×00008000 : сообщает о том, что если файл существует, то не нужно затирать содержимое, а дописывать в конец;
MODE_PRIVATE = 0×00000000 : говорит о том, что доступ к файлу будет только у приложения, которое его создало;
- а можно как-то совместить это? Или при создании файла по умолчанию создается приват, а при указании аппенд дописывается с текущими правами?
MODE_PRIVATE = 0×00000000 : говорит о том, что доступ к файлу будет только у приложения, которое его создало;
- а можно как-то совместить это? Или при создании файла по умолчанию создается приват, а при указании аппенд дописывается с текущими правами?
Re: Урок 75. Хранение данных. Работа с файлами.
я нашел баг в android studio
Все началось с того что я не мог записать файл в external storage directory. Разрешения в манифесте естественно прописал. Ни смотря на это в дебаг режиме все равно столкнулся с исключением из-за отсутствия разрешения на запись.
В итоге оказалось что в манифесте было прописано следущее:
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
вместо
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
имя пакета android.permission был написан заглавными буквами из-за чего разрешение не срабатывало (но и нигде ошибки не выдавало!)
теперь суть бага в android studio:
чтобы написать строку с пермишеном мы пишем следующее:
1. и нажимаем Enter для автодополнения
2. нам дополняют строку до ткого вида: и курсор ставит между двойными кавычками чтобы сразу начать вводить вид разрешения.
3. И вот здесь если мы начинаем сразу писать в подсказке появляется единственный вариант и если мы в этот момент нажмем Enter то автодополнение вставит все заглавными буквами!
в таком виде:
и все. Закрываем тег и думаем что все хорошо. А оно не работает. Собака.
Версия Android Studio 1.3.1, Windows 8.1
кстати, если на шаге 3 начинать писать имя пермишена с самого начала, то есть со слов android.permissi... и дойти до WRITE_EX и нажать Enter - тогда автодополнение вставит правильного вида строку со словами android.permissions в нижнем регистре.
Все началось с того что я не мог записать файл в external storage directory. Разрешения в манифесте естественно прописал. Ни смотря на это в дебаг режиме все равно столкнулся с исключением из-за отсутствия разрешения на запись.
В итоге оказалось что в манифесте было прописано следущее:
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/>
вместо
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
имя пакета android.permission был написан заглавными буквами из-за чего разрешение не срабатывало (но и нигде ошибки не выдавало!)
теперь суть бага в android studio:
чтобы написать строку с пермишеном мы пишем следующее:
1.
Код: Выделить всё
<uses-p
2. нам дополняют строку до ткого вида:
Код: Выделить всё
<uses-permission android:name=""
3. И вот здесь если мы начинаем сразу писать
Код: Выделить всё
WRITE_EX
Код: Выделить всё
android.permission.WRITE_EXTERNAL_STORAGE
в таком виде:
Код: Выделить всё
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"
Версия Android Studio 1.3.1, Windows 8.1
кстати, если на шаге 3 начинать писать имя пермишена с самого начала, то есть со слов android.permissi... и дойти до WRITE_EX и нажать Enter - тогда автодополнение вставит правильного вида строку со словами android.permissions в нижнем регистре.
Re: Урок 75. Хранение данных. Работа с файлами.
Этот баг уже заведен https://code.google.com/p/android/issue ... ?id=157123 обещали пофиксить в версии 1.4
Re: Урок 75. Хранение данных. Работа с файлами.
Добрый день. Подскажите, пожалуйста. У меня есть метод для чтения данных из текстового файла, который находится в папке res/raw/. Каким тогда должен быть метод для записи данных в этот файл из массива? Вот код:
Код: Выделить всё
//---Метод для чтения данных из файла
public void LoadText(int resourceId,ArrayList<String> arr) {
// The InputStream opens the resourceId and sends it to the buffer
InputStream is = this.getResources().openRawResource(resourceId);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String readLine = null;
try {
// While the BufferedReader readLine is not null
while ((readLine = br.readLine()) != null) {
//Log.d("TEXT", readLine);
arr.add(readLine);
}
// Close the InputStream and BufferedReader
is.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
-
- Сообщения: 5
- Зарегистрирован: 18 янв 2016, 21:29
Re: Урок 75. Хранение данных. Работа с файлами.
У меня такой вопрос: Как построчно считать файл, для того чтобы заполнить отдельные View компоненты отдельными строками? Или же есть другой способ получше?
Re: Урок 75. Хранение данных. Работа с файлами.
Код: Выделить всё
openFileOutput(FILENAME, MODE_PRIVATE);
пробовал на SD писать .txt файл, тоже не хочет
Re: Урок 75. Хранение данных. Работа с файлами.
Пытаюсь на андроид-клиенте получить от веб-сервиса 1с файл XML. Взаимодействие осуществляется с помощью ksoap2-android-assembly-3.4.0-jar-with-dependencies.jar.
Т.е. из андроид вызывается функция веб-сервиса, которая формирует файл XML и возвращает его на клиент в виде двоичных данных. Как правильно обработать этот файл на клиенте? Нужно ли сначала сохранить двоичные данные как файл XML или можно сразу обработать?
Т.е. из андроид вызывается функция веб-сервиса, которая формирует файл XML и возвращает его на клиент в виде двоичных данных. Как правильно обработать этот файл на клиенте? Нужно ли сначала сохранить двоичные данные как файл XML или можно сразу обработать?
Re: Урок 75. Хранение данных. Работа с файлами.
Решил посмотреть в дебаггере код из WriteSD. Что увидел, докладываю -
- сначала без смартфона, как и ожидал программа вылетела по catch (IOException e) {e.printStackTrace();}.
полагаю потому как какая SD в эмуляторе.
-далее загрузил программу в смартфон. sdPath при этом сформировался такой -
storage/emulated/0/myfiles. При дебагировании опять вылетел там же по catch (IOException e) {e.printStackTrace();}.
Хорошо, решил прорваться дальше - посмотрел на смартфоне реальный путь выглядит следующим образом-
storage/F03F-130C/Android/data/com.exampe......(и т.д. включая имя пути, в котором хранится приложение на компьютере).
Установил sdPath на это значение - работает.
Возможно, что после нормальной инсталляции sdPath = "storage/emulated/0/myfiles".
Но для дебагирования пришлось назначить путь вручную. Как-то кривовато, как мне кажется. Или что-то я недопонял.
Попытаюсь понять из Ваших разъяснений, за которые заранее спасибо.
P.S. Поскольку работал с API level 23 permission.WRITE_EXTERNAL_STORAGE в манифесте не указывал, т.к. начиная с level 19 в этом нет надобности.
- сначала без смартфона, как и ожидал программа вылетела по catch (IOException e) {e.printStackTrace();}.
полагаю потому как какая SD в эмуляторе.
-далее загрузил программу в смартфон. sdPath при этом сформировался такой -
storage/emulated/0/myfiles. При дебагировании опять вылетел там же по catch (IOException e) {e.printStackTrace();}.
Хорошо, решил прорваться дальше - посмотрел на смартфоне реальный путь выглядит следующим образом-
storage/F03F-130C/Android/data/com.exampe......(и т.д. включая имя пути, в котором хранится приложение на компьютере).
Установил sdPath на это значение - работает.
Возможно, что после нормальной инсталляции sdPath = "storage/emulated/0/myfiles".
Но для дебагирования пришлось назначить путь вручную. Как-то кривовато, как мне кажется. Или что-то я недопонял.
Попытаюсь понять из Ваших разъяснений, за которые заранее спасибо.
P.S. Поскольку работал с API level 23 permission.WRITE_EXTERNAL_STORAGE в манифесте не указывал, т.к. начиная с level 19 в этом нет надобности.
-
- Сообщения: 5
- Зарегистрирован: 13 авг 2016, 17:54
Re: Урок 75. Хранение данных. Работа с файлами.
Доброго времени суток, столкнулся с проблемой, что метод writeFile() и writeFileSD() создают файлы "file" и "папку Myfiles с файлом fileSD" там, где по умолчанию в настройках стоит путь сохранения файлов. Если стоит память телефона, всё сохраняет туда, если Sd-card, всё на флешку. Тестировал на реальном устройстве Android 4.4.2. Скажите, так и должно быть? Код MainActivity.java копипастеный с урока. "<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>" - есть.
Re: Урок 75. Хранение данных. Работа с файлами.
2 дня сидел над вопросом о нахождении директории с внешней SD картой. File sdFile = new File(getExternalFilesDir(null), FILENAME_SD); - вот ответ.
Проверил, всё работает. Лишние 3 строки кода убрать.
Проверил, всё работает. Лишние 3 строки кода убрать.
Re: Урок 75. Хранение данных. Работа с файлами.
На реальном устройстве с Android 6.0 и выше даже приKirill писал(а): ↑12 сен 2015, 15:35я нашел баг в android studio
Все началось с того что я не мог записать файл в external storage directory. Разрешения в манифесте естественно прописал.
...
автодополнение вставит все заглавными буквами!
в таком виде:и все. Закрываем тег и думаем что все хорошо. А оно не работает. Собака.Код: Выделить всё
<uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
не удается записывать файл.
Environment.getExternalStorageState() выдает четкое Environment.MEDIA_MOUNTED, но файл не записывается, потому что на устройстве надо вручную дать разрешение на запись (Settings->Apps-> P0751_Files-> Permissions->Storage->On).Поэтому в MainActivity надо прописать:
Код: Выделить всё
97 // создаем каталог
98 sdPath.mkdirs();
if(!sdPath.canWrite()){
Log.d(LOG_TAG, "нет разрешения на запись CD");
Toast.makeText(this,"нет разрешения на запись CD",Toast.LENGTH_LONG).show();
return;
}
99 // формируем объект File, который содержит путь к файлу
100 File sdFile = new File(sdPath, FILENAME_SD);