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

Обсуждение уроков
allexan
Сообщения: 23
Зарегистрирован: 03 июл 2014, 16:32

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

Сообщение allexan » 25 июл 2014, 13:24

Почему в примере не закрывается поток для чтения? И как его закрыть, если FileNotFound ?

allexan
Сообщения: 23
Зарегистрирован: 03 июл 2014, 16:32

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

Сообщение allexan » 25 июл 2014, 15:38

И еще вопрос: в MainActivity все работает (запись-чтение файлов)
Но когда работа с файлами в методах другого класса, приложение вылетает
(и на эмуляторе, и на реальном девайсе



//==========================================
package alex.com.example.pfile;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

MyClass MC = new MyClass();
MC.CreateFile();
}
}
//==========================================

package alex.com.example.pfile;

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class MyClass extends MainActivity {
public void CreateFile() {

try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
openFileOutput("set",MODE_PRIVATE)));
bw.write("123456");
bw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Viewer
Сообщения: 180
Зарегистрирован: 30 апр 2014, 11:42

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

Сообщение Viewer » 25 июл 2014, 15:59

Вы не можете создавать объекты класса Activity (или унаследованные от неё) их может создавать только система.

allexan
Сообщения: 23
Зарегистрирован: 03 июл 2014, 16:32

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

Сообщение allexan » 26 июл 2014, 08:31

Я новичек в джаве, поэтому могу не понимать элементарных для вас вещей.
Собственно мой вопрос надо было задать не в этом уроке.
Почему эклипс не ругается на мой пример (то есть формально все правильно)
Что надо сделать?
Если я убираю extends MainActivity, начинается цепочка разных ошибок

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

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

Сообщение Foenix » 26 июл 2014, 10:56

а зачем тебе понадобилось наследоваться от MainActivity да и еще создавать в ней экземпляр этого класса?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Viewer
Сообщения: 180
Зарегистрирован: 30 апр 2014, 11:42

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

Сообщение Viewer » 26 июл 2014, 11:03

allexan писал(а):Я новичек в джаве, поэтому могу не понимать элементарных для вас вещей.
Собственно мой вопрос надо было задать не в этом уроке.
Почему эклипс не ругается на мой пример (то есть формально все правильно)
Что надо сделать?
Если я убираю extends MainActivity, начинается цепочка разных ошибок
Эклипс не ругается потому что с точки зрения синтаксиса все правильно, с точки зрения JAVA тоже все нормально - один класс наследуется от другого и в нем используются наследуемые методы. А вот с точки зрения OS Android возникает проблема. Тут просто нужно четко понимать что из себя представляют компоненты приложений Android и как происходит запуск приложений и зачем мы их прописываем в манифесте.
Вам на первых порах конечно не нужно вдаваться во многие дебри OS Android, до всего вы дойдете потом.
А по началу просто примите как данность, что класс Activity это один из основных компонентов Android объекты(экземпляры) которого создаются только самой операционной системой, вы не можете создавать объекты Activity и любые другие унаследованные от этого класса с помощью new . Для создания объектов Activity существуют совсем другие механизмы, прежде всего вы должны попросить об этом систему с помощью Intent и методов startActivity и т.п., кроме того ваш класс наследующий Activity должен быть прописан в Манифесте (см. урок 21 и последующие).

allexan
Сообщения: 23
Зарегистрирован: 03 июл 2014, 16:32

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

Сообщение allexan » 26 июл 2014, 13:51

Спасибо за разъяснение насчет Activity. Все понятно.
Зачем я наследовался от MainActivity? Затем, что только в этом случае нет ошибок синтаксиса.

я уже писал , когда я убираю extends MainActivity, появляется первая ошибка:
MODE_PRIVATE cannot be resolved to a variable
хотя все константы, в том чиле и эта определены в моем проекте в android.content.Context
Попытка extends Context приводит к новым ошибкам, import android.content.Context ничего не дает

Ладно я знаю что это 0, пишу 0 , появляется вторая ошибка:
The method openFileOutput(String, int) is undefined for the type MyClass

Понятно, что этот метод в MyClass не определен, но пожалуйста скажите что надо сделать, (что не надо я уже понял)

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 28 июл 2014, 08:41

allexan писал(а):Спасибо за разъяснение насчет Activity. Все понятно.
Зачем я наследовался от MainActivity? Затем, что только в этом случае нет ошибок синтаксиса.

я уже писал , когда я убираю extends MainActivity, появляется первая ошибка:
MODE_PRIVATE cannot be resolved to a variable
хотя все константы, в том чиле и эта определены в моем проекте в android.content.Context
Попытка extends Context приводит к новым ошибкам, import android.content.Context ничего не дает

Ладно я знаю что это 0, пишу 0 , появляется вторая ошибка:
The method openFileOutput(String, int) is undefined for the type MyClass

Понятно, что этот метод в MyClass не определен, но пожалуйста скажите что надо сделать, (что не надо я уже понял)
1) Context.MODE_PRIVATE
2) для openFileOutput, нужно передать в свой класс наследника класса Context (например ваше Activity). Делается это в конструкторе:
[syntax=java]...
final private context;
public MyClass(Context context) {
this.context = context;
}
...
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(context.openFileOutput("set",Context.MODE_PRIVATE)));
...
[/syntax]

allexan
Сообщения: 23
Зарегистрирован: 03 июл 2014, 16:32

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

Сообщение allexan » 28 июл 2014, 10:28

Спасибо, я уже понял, что надо передать в мой класс
Правда получилось у меня по другому:

import android.content.Context;

public class MyClass extends android.content.ContextWrapper {

public MyClass(Context base) {
super(base);
}

В MainActivity :
MyClass MC = new MyClass(this);
MyClass.CreateFile();

Все работает.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 28 июл 2014, 11:33

Грустно...

Ник
Сообщения: 5
Зарегистрирован: 05 май 2014, 21:56

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

Сообщение Ник » 29 авг 2014, 11:48

Здравствуйте, возникла такая проблема, нужно сохранить данные файл в памяти телефона, для дальнейшей работы с ним на ПК. В телефоне отсутствует SD. Как сохранить файл в память телефона для доступа к нему с ПК?

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

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

Сообщение altwin » 29 авг 2014, 11:51

Ник писал(а):Здравствуйте, возникла такая проблема, нужно сохранить данные файл в памяти телефона, для дальнейшей работы с ним на ПК. В телефоне отсутствует SD. Как сохранить файл в память телефона для доступа к нему с ПК?
http://developer.android.com/guide/topi ... esInternal
Изображение

VOVIAL
Сообщения: 2
Зарегистрирован: 15 окт 2014, 15:07

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

Сообщение VOVIAL » 16 окт 2014, 17:13

altwin писал(а):
Ник писал(а):Здравствуйте, возникла такая проблема, нужно сохранить данные файл в памяти телефона, для дальнейшей работы с ним на ПК. В телефоне отсутствует SD. Как сохранить файл в память телефона для доступа к нему с ПК?
http://developer.android.com/guide/topi ... esInternal
А у меня другой вопрос, возможно тоже глупый поскольку с java eclipse и андроидом общаюсь всего часов 20 в сумме)))
А где найти файл в который мы что то сохранили? т.е. я прочитал и сделал Урок 75. Хранение данных. Работа с файлами. но я не могу найти файл в который пишем данные!
Или можно ли как то указать куда его сохранить?

andrey711
Сообщения: 1
Зарегистрирован: 06 ноя 2014, 12:28

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

Сообщение andrey711 » 06 ноя 2014, 12:30

Здравствуйте, скажите пожалуйста как прочитать файл из корневого каталога?

Golem119
Сообщения: 2
Зарегистрирован: 26 ноя 2014, 20:38

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

Сообщение Golem119 » 26 ноя 2014, 20:48

Подскажите в чем проблема?
Пытаюсь создать свою папку и поместить туда файл.
На эмуляторе все отлично работает, но вот на смартфоне вовсе не реагирует. Пытался проверять на существование папок, в которые записывал, через exist() и везде было true

File file = new File((new File(Environment.getExternalStorageDirectory()+"/"+ Environment.DIRECTORY_DOWNLOADS)).getAbsolutePath()+"/"+ getString(R.string.app_name)+"/");
file.mkdirs();
File fileout = new File(file, "hello.txt");



FileOutputStream save;
try {
save = new FileOutputStream(fileout);
save.write('k');
save.close();

} catch (Exception e) {
}

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

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

Сообщение klblk » 27 ноя 2014, 07:52

Golem119 писал(а):Подскажите в чем проблема?...
Версия Android на эмуляторе и на устройстве?

Golem119
Сообщения: 2
Зарегистрирован: 26 ноя 2014, 20:38

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

Сообщение Golem119 » 27 ноя 2014, 13:33

klblk писал(а):
Golem119 писал(а):Подскажите в чем проблема?...
Версия Android на эмуляторе и на устройстве?
эмулятор - 4.1.1
устройство 4.2.1

п.с. Не уверен имеет ли значение, но использую эмулятор от Genymotion

newDeveloper
Сообщения: 6
Зарегистрирован: 18 май 2014, 08:04

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

Сообщение newDeveloper » 19 фев 2015, 12:40

Добрый день! Все делаю по примеру. В логах все в порядке. Файл записывается и показывается его содержимое. Но когда проверяю через File Explorer, то папка /data пуста. Как мне найти записанный файл на устройстве?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

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

Сообщение Foenix » 19 фев 2015, 14:20

Если это та самая папка data/data/project.name.bla-bla то без рута ты ничего не увидишь. Используй эмулятор если нужно что-то протестировать
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

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

Сообщение doter.ua » 19 фев 2015, 21:59

Foenix писал(а):Если это та самая папка data/data/project.name.bla-bla то без рута ты ничего не увидишь. Используй эмулятор если нужно что-то протестировать
Изображение
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Ответить