Урок 75. Хранение данных. Работа с файлами.
Урок 75. Хранение данных. Работа с файлами.
В этом уроке:
- работаем с файлами
Click here to read this article!
- работаем с файлами
Click here to read this article!
Последний раз редактировалось damager82 19 май 2017, 10:18, всего редактировалось 5 раз.
Re: Урок 75. Хранение данных. Работа с файлами.
Простите мне мое нетерпение, но когда ждать следующего урока? Просто мне никак с табами не разобраться, а мне очень надо. =)
Re: Урок 75. Хранение данных. Работа с файлами.
Сегодня был урок. И будет еще парочка по этой теме.Lynnfield писал(а):Простите мне мое нетерпение, но когда ждать следующего урока? Просто мне никак с табами не разобраться, а мне очень надо. =)
-
- Сообщения: 4
- Зарегистрирован: 02 июн 2012, 22:55
Re: Урок 75. Хранение данных. Работа с файлами.
Что-то в этом уроке не совсем понятно как работает обработчик солбытий нажатий на клавиши. Это как-то новый метод, в обход слушателя setonclicklistener?!
Re: Урок 75. Хранение данных. Работа с файлами.
С 51-го урока я начал использовать этот метод. Но все никак не соберусь написать о нем в уроках про обработчики.vyacheslav писал(а):Что-то в этом уроке не совсем понятно как работает обработчик солбытий нажатий на клавиши. Это как-то новый метод, в обход слушателя setonclicklistener?!
- IlyaZh
- Сообщения: 32
- Зарегистрирован: 14 июл 2012, 09:52
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Урок 75. Хранение данных. Работа с файлами.
Как определить полный путь к файлу, который записан во внутреннюю память? Необходимо скормить его XmlPullParser, но указав URL как Filename - получаю ругань что файла нет.
Re: Урок 75. Хранение данных. Работа с файлами.
file.getAbsolutePath() ты об этом? просто не понял твоего выражения "внутренняя память".
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- IlyaZh
- Сообщения: 32
- Зарегистрирован: 14 июл 2012, 09:52
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Урок 75. Хранение данных. Работа с файлами.
Ну всмысле не на флэшку, чтобы файлом могло только приложение пользоваться. Запись выполняется вот такrezak90 писал(а):file.getAbsolutePath() ты об этом? просто не понял твоего выражения "внутренняя память".
Код: Выделить всё
openFileOutput("appdata.xml", MODE_PRIVATE)
Re: Урок 75. Хранение данных. Работа с файлами.
/data/data/<package_name>/files
но если файл 6ольшой я 6ы не советовал писать в internal storage
представь се6е 6юджетный телефон со 160 метрами на 6орту(напрмер Galaxy Ace), устанавливаем 10 приложений и места нет и тут ты еще со своими файлами лезешь, делай проверку, если доступно в external storage то пиши туда =)
п.с. ах да и совсем за6ыл вот твой ответ =)
но если файл 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. Хранение данных. Работа с файлами.
Благодарю!Finch писал(а):/data/data/<package_name>/files
но если файл 6ольшой я 6ы не советовал писать в internal storage
представь се6е 6юджетный телефон со 160 метрами на 6орту(напрмер Galaxy Ace), устанавливаем 10 приложений и места нет и тут ты еще со своими файлами лезешь, делай проверку, если доступно в external storage то пиши туда =)
п.с. ах да и совсем за6ыл вот твой ответ =)
Re: Урок 75. Хранение данных. Работа с файлами.
Привет.
В этой конструкции
непонятно, два момента:
1. Почему в строке 4 переменную нельзя описать так sdPath=sdPath + "/" + DIR_SD...это я утрированно пишу, без скобок...Или это вызвано тем, что это не строковая переменная, а типа File, в которой так просто нельзя увеличить путь, как в строковой?
2. В строке 8 зачем создавать объект, который содержит путь к файлу...((( разве нельзя переменно sdPath присвоить этот путь? Проще говоря - не могу понять, зачем вводить дополнительные...эээ....как бы это назвать...кодинг что-ль
В этой конструкции
Код: Выделить всё
// получаем путь к 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 присвоить этот путь? Проще говоря - не могу понять, зачем вводить дополнительные...эээ....как бы это назвать...кодинг что-ль
Re: Урок 75. Хранение данных. Работа с файлами.
с первым могу сказать (на сколько мне известно) что это объект и это же стринг что бы append()'ом можно было добавить, так что приходится только через конструктор.
со-вторым можно, но это уже дело автора, как захотел так и сделал))) может показано для наглядности...
со-вторым можно, но это уже дело автора, как захотел так и сделал))) может показано для наглядности...
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 75. Хранение данных. Работа с файлами.
4-ю строку можно написать в том же виде, что и 8-ю, тогда '/' Андроид сам вставит. Windows в этом случае вставил бы '\\'.
Операцию + можно делать только со строками - поэтому от старого файла берём путь в виде строки, дописываем то, что надо и создаём новый объект.
Переменные sdPath и sdFile - указатели на объект File. В приведённом коде создаются 3 таких объекта. Даже если Вы будете использовать одну переменную-указатель, объектов останется три, два уйдут в мусор.
Второй sdPath создаётся, чтобы создать пути sdPath.mkdirs(); для третьего (sdFile). А экономия на указателе несущественна.
Операцию + можно делать только со строками - поэтому от старого файла берём путь в виде строки, дописываем то, что надо и создаём новый объект.
Переменные sdPath и sdFile - указатели на объект File. В приведённом коде создаются 3 таких объекта. Даже если Вы будете использовать одну переменную-указатель, объектов останется три, два уйдут в мусор.
Второй sdPath создаётся, чтобы создать пути sdPath.mkdirs(); для третьего (sdFile). А экономия на указателе несущественна.
Re: Урок 75. Хранение данных. Работа с файлами.
powercat, ваше не понимание связано с незнанием языка
1. читайте про Anonymous classes in Java
2. конструктор класса
1. читайте про Anonymous classes in Java
2. конструктор класса
CEO of a company R.id.team
Re: Урок 75. Хранение данных. Работа с файлами.
Я иногда реально пишу кода больше, чем нужно. Но так, чтобы выглядело проще. Это для наглядности. Все таки сайт на новичков рассчитан и сразу грузить их непонятными большими конструкциями - не дело. Если человек знает Java, он сам напишет как ему нужно. Ну а новички со временем придут к своему стилю написания )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 присвоить этот путь? Проще говоря - не могу понять, зачем вводить дополнительные...эээ....как бы это назвать...кодинг что-ль
Re: Урок 75. Хранение данных. Работа с файлами.
Да...язык не знаю, иду слепо...но уже вижу, что за такой язык убивать надо ((( одно извращение с кликами чего стоит....Finch писал(а):powercat, ваше не понимание связано с незнанием языка
1. читайте про Anonymous classes in Java
2. конструктор класса
Re: Урок 75. Хранение данных. Работа с файлами.
все привет! нид ё хэлп... не записывает данные в файл 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 {
}
}
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 {
}
}
Re: Урок 75. Хранение данных. Работа с файлами.
на чём именно ошибка вылетает? могу лишь предположить что необходимо десериализовать объект.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 75. Хранение данных. Работа с файлами.
ошибки то как раз-то никакой не вылетает...все работает...просто файл пустой из-за этого не могу получить данные из него
смотрела пошагам как доходит до os.writeObject(data); сразу перескакивает в catch ..но и ошибок не выдает.. в чем фигня не понимаю...зато когда вместо List<ContactItem> data, List<String> data то все работает и записывает
смотрела пошагам как доходит до os.writeObject(data); сразу перескакивает в catch ..но и ошибок не выдает.. в чем фигня не понимаю...зато когда вместо List<ContactItem> data, List<String> data то все работает и записывает
Re: Урок 75. Хранение данных. Работа с файлами.
То что перескакивает в catch - это и есть ошибка.
А ты научил ContactItem записываться в ObjectOutputStream?
List записывать число элеиентов внури себя а затем записывает элементы.
Если элементы не умеют записываться, то ничего не запишется.
А ты научил ContactItem записываться в ObjectOutputStream?
List записывать число элеиентов внури себя а затем записывает элементы.
Если элементы не умеют записываться, то ничего не запишется.