Урок 75. Хранение данных. Работа с файлами.
Re: Урок 75. Хранение данных. Работа с файлами.
Почему в примере не закрывается поток для чтения? И как его закрыть, если FileNotFound ?
Re: Урок 75. Хранение данных. Работа с файлами.
И еще вопрос: в 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();
}
}
}
Но когда работа с файлами в методах другого класса, приложение вылетает
(и на эмуляторе, и на реальном девайсе
//==========================================
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();
}
}
}
Re: Урок 75. Хранение данных. Работа с файлами.
Вы не можете создавать объекты класса Activity (или унаследованные от неё) их может создавать только система.
Re: Урок 75. Хранение данных. Работа с файлами.
Я новичек в джаве, поэтому могу не понимать элементарных для вас вещей.
Собственно мой вопрос надо было задать не в этом уроке.
Почему эклипс не ругается на мой пример (то есть формально все правильно)
Что надо сделать?
Если я убираю extends MainActivity, начинается цепочка разных ошибок
Собственно мой вопрос надо было задать не в этом уроке.
Почему эклипс не ругается на мой пример (то есть формально все правильно)
Что надо сделать?
Если я убираю extends MainActivity, начинается цепочка разных ошибок
Re: Урок 75. Хранение данных. Работа с файлами.
а зачем тебе понадобилось наследоваться от MainActivity да и еще создавать в ней экземпляр этого класса?
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
Re: Урок 75. Хранение данных. Работа с файлами.
Эклипс не ругается потому что с точки зрения синтаксиса все правильно, с точки зрения JAVA тоже все нормально - один класс наследуется от другого и в нем используются наследуемые методы. А вот с точки зрения OS Android возникает проблема. Тут просто нужно четко понимать что из себя представляют компоненты приложений Android и как происходит запуск приложений и зачем мы их прописываем в манифесте.allexan писал(а):Я новичек в джаве, поэтому могу не понимать элементарных для вас вещей.
Собственно мой вопрос надо было задать не в этом уроке.
Почему эклипс не ругается на мой пример (то есть формально все правильно)
Что надо сделать?
Если я убираю extends MainActivity, начинается цепочка разных ошибок
Вам на первых порах конечно не нужно вдаваться во многие дебри OS Android, до всего вы дойдете потом.
А по началу просто примите как данность, что класс Activity это один из основных компонентов Android объекты(экземпляры) которого создаются только самой операционной системой, вы не можете создавать объекты Activity и любые другие унаследованные от этого класса с помощью new . Для создания объектов Activity существуют совсем другие механизмы, прежде всего вы должны попросить об этом систему с помощью Intent и методов startActivity и т.п., кроме того ваш класс наследующий Activity должен быть прописан в Манифесте (см. урок 21 и последующие).
Re: Урок 75. Хранение данных. Работа с файлами.
Спасибо за разъяснение насчет 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 не определен, но пожалуйста скажите что надо сделать, (что не надо я уже понял)
Зачем я наследовался от 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 не определен, но пожалуйста скажите что надо сделать, (что не надо я уже понял)
Re: Урок 75. Хранение данных. Работа с файлами.
1) Context.MODE_PRIVATEallexan писал(а):Спасибо за разъяснение насчет 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 не определен, но пожалуйста скажите что надо сделать, (что не надо я уже понял)
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]
Re: Урок 75. Хранение данных. Работа с файлами.
Спасибо, я уже понял, что надо передать в мой класс
Правда получилось у меня по другому:
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();
Все работает.
Правда получилось у меня по другому:
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();
Все работает.
Re: Урок 75. Хранение данных. Работа с файлами.
Здравствуйте, возникла такая проблема, нужно сохранить данные файл в памяти телефона, для дальнейшей работы с ним на ПК. В телефоне отсутствует SD. Как сохранить файл в память телефона для доступа к нему с ПК?
Re: Урок 75. Хранение данных. Работа с файлами.
http://developer.android.com/guide/topi ... esInternalНик писал(а):Здравствуйте, возникла такая проблема, нужно сохранить данные файл в памяти телефона, для дальнейшей работы с ним на ПК. В телефоне отсутствует SD. Как сохранить файл в память телефона для доступа к нему с ПК?
Re: Урок 75. Хранение данных. Работа с файлами.
А у меня другой вопрос, возможно тоже глупый поскольку с java eclipse и андроидом общаюсь всего часов 20 в сумме)))altwin писал(а):http://developer.android.com/guide/topi ... esInternalНик писал(а):Здравствуйте, возникла такая проблема, нужно сохранить данные файл в памяти телефона, для дальнейшей работы с ним на ПК. В телефоне отсутствует SD. Как сохранить файл в память телефона для доступа к нему с ПК?
А где найти файл в который мы что то сохранили? т.е. я прочитал и сделал Урок 75. Хранение данных. Работа с файлами. но я не могу найти файл в который пишем данные!
Или можно ли как то указать куда его сохранить?
Re: Урок 75. Хранение данных. Работа с файлами.
Здравствуйте, скажите пожалуйста как прочитать файл из корневого каталога?
Re: Урок 75. Хранение данных. Работа с файлами.
Подскажите в чем проблема?
Пытаюсь создать свою папку и поместить туда файл.
На эмуляторе все отлично работает, но вот на смартфоне вовсе не реагирует. Пытался проверять на существование папок, в которые записывал, через 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) {
}
Пытаюсь создать свою папку и поместить туда файл.
На эмуляторе все отлично работает, но вот на смартфоне вовсе не реагирует. Пытался проверять на существование папок, в которые записывал, через 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) {
}
Re: Урок 75. Хранение данных. Работа с файлами.
Версия Android на эмуляторе и на устройстве?Golem119 писал(а):Подскажите в чем проблема?...
Re: Урок 75. Хранение данных. Работа с файлами.
эмулятор - 4.1.1klblk писал(а):Версия Android на эмуляторе и на устройстве?Golem119 писал(а):Подскажите в чем проблема?...
устройство 4.2.1
п.с. Не уверен имеет ли значение, но использую эмулятор от Genymotion
-
- Сообщения: 6
- Зарегистрирован: 18 май 2014, 08:04
Re: Урок 75. Хранение данных. Работа с файлами.
Добрый день! Все делаю по примеру. В логах все в порядке. Файл записывается и показывается его содержимое. Но когда проверяю через File Explorer, то папка /data пуста. Как мне найти записанный файл на устройстве?
Re: Урок 75. Хранение данных. Работа с файлами.
Если это та самая папка 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
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 75. Хранение данных. Работа с файлами.
Foenix писал(а):Если это та самая папка data/data/project.name.bla-bla то без рута ты ничего не увидишь. Используй эмулятор если нужно что-то протестировать
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.