Урок 75. Хранение данных. Работа с файлами.

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 75. Хранение данных. Работа с файлами.

Сообщение damager82 » 02 май 2012, 23:00

В этом уроке:
- работаем с файлами


Click here to read this article!
Последний раз редактировалось damager82 19 май 2017, 10:18, всего редактировалось 5 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Lynnfield
Сообщения: 5
Зарегистрирован: 19 апр 2012, 14:44

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Lynnfield » 07 май 2012, 00:19

Простите мне мое нетерпение, но когда ждать следующего урока? Просто мне никак с табами не разобраться, а мне очень надо. =)

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение damager82 » 07 май 2012, 21:56

Lynnfield писал(а):Простите мне мое нетерпение, но когда ждать следующего урока? Просто мне никак с табами не разобраться, а мне очень надо. =)
Сегодня был урок. И будет еще парочка по этой теме.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

vyacheslav
Сообщения: 4
Зарегистрирован: 02 июн 2012, 22:55

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение vyacheslav » 03 июн 2012, 09:28

Что-то в этом уроке не совсем понятно как работает обработчик солбытий нажатий на клавиши. Это как-то новый метод, в обход слушателя setonclicklistener?!

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение damager82 » 04 июн 2012, 10:50

vyacheslav писал(а):Что-то в этом уроке не совсем понятно как работает обработчик солбытий нажатий на клавиши. Это как-то новый метод, в обход слушателя setonclicklistener?!
С 51-го урока я начал использовать этот метод. Но все никак не соберусь написать о нем в уроках про обработчики.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
IlyaZh
Сообщения: 32
Зарегистрирован: 14 июл 2012, 09:52
Откуда: Санкт-Петербург
Контактная информация:

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение IlyaZh » 21 июл 2012, 11:20

Как определить полный путь к файлу, который записан во внутреннюю память? Необходимо скормить его XmlPullParser, но указав URL как Filename - получаю ругань что файла нет.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение rezak90 » 21 июл 2012, 13:23

file.getAbsolutePath() ты об этом? просто не понял твоего выражения "внутренняя память".
R.id.team
Политика на форуме запрещена

Аватара пользователя
IlyaZh
Сообщения: 32
Зарегистрирован: 14 июл 2012, 09:52
Откуда: Санкт-Петербург
Контактная информация:

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение IlyaZh » 21 июл 2012, 15:40

rezak90 писал(а):file.getAbsolutePath() ты об этом? просто не понял твоего выражения "внутренняя память".
Ну всмысле не на флэшку, чтобы файлом могло только приложение пользоваться. Запись выполняется вот так

Код: Выделить всё

openFileOutput("appdata.xml", MODE_PRIVATE)
А теперь мне надо этот файл прочитать..

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Finch » 21 июл 2012, 18:33

/data/data/<package_name>/files
но если файл 6ольшой я 6ы не советовал писать в internal storage
представь се6е 6юджетный телефон со 160 метрами на 6орту(напрмер Galaxy Ace), устанавливаем 10 приложений и места нет и тут ты еще со своими файлами лезешь, делай проверку, если доступно в external storage то пиши туда =)

п.с. ах да и совсем за6ыл вот твой ответ =)
CEO of a company R.id.team

Аватара пользователя
IlyaZh
Сообщения: 32
Зарегистрирован: 14 июл 2012, 09:52
Откуда: Санкт-Петербург
Контактная информация:

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение IlyaZh » 21 июл 2012, 19:41

Finch писал(а):/data/data/<package_name>/files
но если файл 6ольшой я 6ы не советовал писать в internal storage
представь се6е 6юджетный телефон со 160 метрами на 6орту(напрмер Galaxy Ace), устанавливаем 10 приложений и места нет и тут ты еще со своими файлами лезешь, делай проверку, если доступно в external storage то пиши туда =)

п.с. ах да и совсем за6ыл вот твой ответ =)
Благодарю!

Аватара пользователя
powercat
Сообщения: 508
Зарегистрирован: 20 июл 2012, 11:31

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение powercat » 26 июл 2012, 10:50

Привет.
В этой конструкции

Код: Выделить всё

// получаем путь к SD
File sdPath = Environment.getExternalStorageDirectory();
// добавляем свой каталог к пути
sdPath = new File(sdPath.getAbsolutePath() + "/" + DIR_SD);
// создаем каталог
sdPath.mkdirs();
// формируем объект File, который содержит путь к файлу
File sdFile = new File(sdPath, FILENAME_SD);
непонятно, два момента:
1. Почему в строке 4 переменную нельзя описать так sdPath=sdPath + "/" + DIR_SD...это я утрированно пишу, без скобок...Или это вызвано тем, что это не строковая переменная, а типа File, в которой так просто нельзя увеличить путь, как в строковой?

2. В строке 8 зачем создавать объект, который содержит путь к файлу...((( разве нельзя переменно sdPath присвоить этот путь? Проще говоря - не могу понять, зачем вводить дополнительные...эээ....как бы это назвать...кодинг что-ль

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение rezak90 » 26 июл 2012, 11:13

с первым могу сказать (на сколько мне известно) что это объект и это же стринг что бы append()'ом можно было добавить, так что приходится только через конструктор.
со-вторым можно, но это уже дело автора, как захотел так и сделал))) может показано для наглядности...
R.id.team
Политика на форуме запрещена

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение math64 » 26 июл 2012, 12:25

4-ю строку можно написать в том же виде, что и 8-ю, тогда '/' Андроид сам вставит. Windows в этом случае вставил бы '\\'.
Операцию + можно делать только со строками - поэтому от старого файла берём путь в виде строки, дописываем то, что надо и создаём новый объект.
Переменные sdPath и sdFile - указатели на объект File. В приведённом коде создаются 3 таких объекта. Даже если Вы будете использовать одну переменную-указатель, объектов останется три, два уйдут в мусор.
Второй sdPath создаётся, чтобы создать пути sdPath.mkdirs(); для третьего (sdFile). А экономия на указателе несущественна.

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение Finch » 26 июл 2012, 13:54

powercat, ваше не понимание связано с незнанием языка
1. читайте про Anonymous classes in Java
2. конструктор класса
CEO of a company R.id.team

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение damager82 » 30 июл 2012, 09:42

powercat писал(а):Привет.
В этой конструкции

Код: Выделить всё

// получаем путь к SD
File sdPath = Environment.getExternalStorageDirectory();
// добавляем свой каталог к пути
sdPath = new File(sdPath.getAbsolutePath() + "/" + DIR_SD);
// создаем каталог
sdPath.mkdirs();
// формируем объект File, который содержит путь к файлу
File sdFile = new File(sdPath, FILENAME_SD);
непонятно, два момента:
1. Почему в строке 4 переменную нельзя описать так sdPath=sdPath + "/" + DIR_SD...это я утрированно пишу, без скобок...Или это вызвано тем, что это не строковая переменная, а типа File, в которой так просто нельзя увеличить путь, как в строковой?

2. В строке 8 зачем создавать объект, который содержит путь к файлу...((( разве нельзя переменно sdPath присвоить этот путь? Проще говоря - не могу понять, зачем вводить дополнительные...эээ....как бы это назвать...кодинг что-ль
Я иногда реально пишу кода больше, чем нужно. Но так, чтобы выглядело проще. Это для наглядности. Все таки сайт на новичков рассчитан и сразу грузить их непонятными большими конструкциями - не дело. Если человек знает Java, он сам напишет как ему нужно. Ну а новички со временем придут к своему стилю написания )
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
powercat
Сообщения: 508
Зарегистрирован: 20 июл 2012, 11:31

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение powercat » 09 авг 2012, 12:38

Finch писал(а):powercat, ваше не понимание связано с незнанием языка
1. читайте про Anonymous classes in Java
2. конструктор класса
Да...язык не знаю, иду слепо...но уже вижу, что за такой язык убивать надо ((( одно извращение с кликами чего стоит....

di16
Сообщения: 6
Зарегистрирован: 13 сен 2012, 14:26

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение di16 » 18 сен 2012, 11:51

все привет! нид ё хэлп... не записывает данные в файл os.writeObject(data); хотя файл создается и data тоже не пустая там хран. список объектов( List<ContactItem> data;)?

public <T> void cacheData(String dataType, String dataSubtype, T data) {

String filename = composeFilename(dataType, dataSubtype);

File file = new File(path, filename);
ObjectOutputStream os = null;
try {
FileOutputStream fs = new FileOutputStream(file);
os = new ObjectOutputStream(fs);
os.writeObject(data);
os.close();

} catch (IOException e) {
e.printStackTrace();
} finally {

}
}

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение rezak90 » 18 сен 2012, 12:17

на чём именно ошибка вылетает? могу лишь предположить что необходимо десериализовать объект.
R.id.team
Политика на форуме запрещена

di16
Сообщения: 6
Зарегистрирован: 13 сен 2012, 14:26

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение di16 » 18 сен 2012, 13:21

ошибки то как раз-то никакой не вылетает...все работает...просто файл пустой из-за этого не могу получить данные из него
смотрела пошагам как доходит до os.writeObject(data); сразу перескакивает в catch ..но и ошибок не выдает.. в чем фигня не понимаю...зато когда вместо List<ContactItem> data, List<String> data то все работает и записывает

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 75. Хранение данных. Работа с файлами.

Сообщение math64 » 18 сен 2012, 13:52

То что перескакивает в catch - это и есть ошибка.
А ты научил ContactItem записываться в ObjectOutputStream?
List записывать число элеиентов внури себя а затем записывает элементы.
Если элементы не умеют записываться, то ничего не запишется.

Ответить