Форум программистов, компьютерный форум CyberForum.ru

Записать текст в файл - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
iKapex
3 / 3 / 0
Регистрация: 07.10.2012
Сообщений: 227
23.07.2013, 16:40     Записать текст в файл #1
Есть такой код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String fileName = edFileName.getText().toString (); //здесь я из поля получаю имя файла
    
     try {
    
     OutputStream outputstream = openFileOutput (fileName, 0);
     OutputStreamWriter osw = new OutputStreamWriter (outputstream);
     osw.write(textField.getText().toString());
     osw.close();
    
     }
     catch (Throwable t) {
     Toast.makeText(getApplicationContext(), ":-(", Toast.LENGTH_LONG).show();
     }
     }
    });
ну не создается файл, хоть ты че сделай.
Как бы мне создать файл? и как добавить расширение к нему txt?
Всем спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2013, 16:40     Записать текст в файл
Посмотрите здесь:

Как записать с новой строчки в текстовый файл Android
Получать текст входящих sms-сообщений от определённого номера и использовать этот текст в своей программе Android
Как в файл добавлять текст Android
Как записать массив строк в файл? Android
Куда записать данные Android
При записи в файл, в какую папку записывается файл? Android
Как записать аудио поток в файл Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
24.07.2013, 12:51     Записать текст в файл #2
Java
1
String fileName = edFileName.getText().toString () + ".txt";
Добавлено через 1 минуту
Возможно, нужно указать адрес, где создать файл
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
24.07.2013, 23:42     Записать текст в файл #3
http://developer.android.com/guide/t...a-storage.html
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
25.07.2013, 07:44     Записать текст в файл #4
Попробуйте передать атрибут файлу стандартной константой: private_mode - чтобы у приложения был доступ файлу… Раньше как-то не сталкивался, а сейчас компьютера нет, чтобы нормально разобраться, так что, если работать не будет, отпишитесь, завтра рабочий код выложу тогда

Добавлено через 2 минуты
Да, чтобы файл был виден из файлового менеджера, передайте mode_world_readable
Sherstyuk_Ya_N
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
25.07.2013, 12:01     Записать текст в файл #5
Вот на проэкт мне он помог
Вложения
Тип файла: zip Сохранение в файл и загрузка.zip (1.32 Мб, 33 просмотров)
iKapex
3 / 3 / 0
Регистрация: 07.10.2012
Сообщений: 227
02.08.2013, 20:50  [ТС]     Записать текст в файл #6
Ребят, всем исчё раз спасибо за помощь.
Но тему пришлось через такое n-ное количество времени опять поднять, т.к. проблему я так и не решила.

Метод openFileOutput() - пробовала делать с аргументами и private_mode, потом и mode_world_readable - не вижу все равно файл. Но по ходу дела вышеупомянутый метод мне и не нужен, т.к. работает с внутренней памятью телефона, а мне хотелось бы работать с флешкой.

Sherstyuk_Ya_N дал хороший проект (он, кстати, на startandroid есть) и там есть такой метод, который работает именно с флешкой. Скопировала один в один. Все равно нет файла! И, кстати, когда я из поля получаю имя файла (пользователь сам вводит) приложение вылетает с ошибкой. Но когда я просто в коде сама говорю какое имя (к примеру, String fileName = "Example" - то нормально. Не могу понять какая разница, -
Java
1
String fileName = edFileName.getText().toString ();
это ведь тоже стринговая переменная.

Добавлено через 14 минут
Вот код того проекта (по-моему очень хороший):

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
        String fN = "Example.txt";
    final String LOG_TAG = "myLogs";
    final String DIR_SD = "MyFiles";
 
                 public void saveNote () {
        
        if (!Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
              Log.d(LOG_TAG, "SD-карта не доступна: " + Environment.getExternalStorageState());
              return;
            }
            // получаем путь к SD
            File sdPath = Environment.getExternalStorageDirectory();
            // добавляем свой каталог к пути
            sdPath = new File(sdPath.getAbsolutePath() + "/"+ DIR_SD);
            // создаем каталог
            sdPath.mkdirs();
            // формируем объект File, который содержит путь к файлу
            File sdFile = new File(sdPath, fN);
            try {
              // открываем поток для записи
              BufferedWriter bw = new BufferedWriter(new FileWriter(sdFile));
              // пишем данные
              bw.write("Содержимое файла на SD");
              // закрываем поток
              bw.close();
              Log.d(LOG_TAG, "Файл записан на SD: " + sdFile.getAbsolutePath());
            } catch (IOException e) {
              e.printStackTrace();
            }
        
    }
У меня уже мысли такие дурные начались: мож у меня телефон какой-то тупой
Sherstyuk_Ya_N
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
02.08.2013, 22:00     Записать текст в файл #7
Если я не ошибаюсь в манифест ты добавил(а)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
iKapex
3 / 3 / 0
Регистрация: 07.10.2012
Сообщений: 227
02.08.2013, 22:04  [ТС]     Записать текст в файл #8
Sherstyuk_Ya_N, я ни че не добавляла. А надо?
Sherstyuk_Ya_N
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
02.08.2013, 22:05     Записать текст в файл #9
Вроде да в мой манифест посмотри
iKapex
3 / 3 / 0
Регистрация: 07.10.2012
Сообщений: 227
02.08.2013, 22:12  [ТС]     Записать текст в файл #10
Sherstyuk_Ya_N, блин!!! Получилось! Спасибо!
Sherstyuk_Ya_N
4 / 4 / 0
Регистрация: 22.07.2013
Сообщений: 30
02.08.2013, 22:14     Записать текст в файл #11
Всегда пожалуйста, сам такой же
iKapex
3 / 3 / 0
Регистрация: 07.10.2012
Сообщений: 227
07.08.2013, 15:03  [ТС]     Записать текст в файл #12
Блин, у меня опять проблема - если ввожу имя файла в коде, то все нормально, а если это считывается из EditText, то получается какой-то фатал еррор.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public void saveNote () throws IOException {
        fileName = (EditText) findViewById (R.id.editTextFileName); //имя файла
        String fN = fileName.getText().toString();
        EditText contentsNote = (EditText) findViewById (R.id.editText); // содержимое файла
        
        
        if (!Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
              Log.d(LOG_TAG, "SD-карта не доступна: " + Environment.getExternalStorageState());
              return;
            }
            // получаем путь к SD
            File sdPath = Environment.getExternalStorageDirectory();
            // добавляем свой каталог к пути
            sdPath = new File(sdPath.getAbsolutePath() + "/"+ DIR_SD);
            // формируем объект File, который содержит путь к файлу
            File sdFile = new File(sdPath, fN);
        
            try {
              OutputStream outputstream = openFileOutput (fN, MODE_APPEND);
              OutputStreamWriter osw = new OutputStreamWriter (outputstream);
              osw.write(contentsNote.getText().toString());
              // закрываем поток
              osw.close();
              Log.d(LOG_TAG, "Файл записан на SD: " + sdFile.getAbsolutePath());
            } catch (IOException e) {
              e.printStackTrace();
            }
        
            }
Добавлено через 5 минут
пишет, что NullPointerExeption. Не знаю к чему это относится, но поля пустыми я не сохраняю.

Добавлено через 1 час 3 минуты
и, если это имеет какое-то значение - поля у меня -
Java
1
2
3
final String LOG_TAG = "myLogs";
EditText fileName;
final String DIR_SD = "MyFiles";
Конструктора своего нет.

Добавлено через 23 минуты
а мой метод вызываю так:
Java
1
2
3
4
5
6
7
Note s = new Note ();
                try {
                s.saveNote ();
                }
                catch (IOException e) {
                          e.printStackTrace();
                }
Note - имя моего класса. Но поля ж все равно в методе - saveNote () инициализируются, поэтому все нормально, по-моему с этим должно быть

Добавлено через 21 час 30 минут
ну?
verylazy
Заблокирован
07.08.2013, 15:23     Записать текст в файл #13
поссле String fN = fileName.getText().toString();
я бы дописал System.out.println(fN);
интересно что выведет
iKapex
3 / 3 / 0
Регистрация: 07.10.2012
Сообщений: 227
07.08.2013, 16:57  [ТС]     Записать текст в файл #14
verylazy, ничего не выводит. Приложение стопается просто.
verylazy
Заблокирован
07.08.2013, 17:02     Записать текст в файл #15
а fileName обявлен?
и я не совсем понимаю зачем там строка fileName = (EditText) findViewById (R.id.editTextFileName);

где то раньше в программе, наверное, этот EditText уже был объявлен и присвоен какой то переменной?
если так, то с нее и надо тянуть имя файла, а не так как сейчас
iKapex
3 / 3 / 0
Регистрация: 07.10.2012
Сообщений: 227
07.08.2013, 17:27  [ТС]     Записать текст в файл #16
вот полный текст метода:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class Note extends Activity{
    
    final String LOG_TAG = "myLogs";
    final String DIR_SD = "MyFiles";        
    EditText fileName;
    EditText contentsNote;
 
    Note () {
        
    this.fileName = (EditText) findViewById (R.id.editTextFileName);
    this.contentsNote = (EditText) findViewById (R.id.editText);
    }
    
    
    public void saveNote () throws IOException {
        
        String fN = fileName.getText().toString();
        
        if (!Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
              Log.d(LOG_TAG, "SD-карта не доступна: " + Environment.getExternalStorageState());
              return;
            }
            // получаем путь к SD
            File sdPath = Environment.getExternalStorageDirectory();
            // добавляем свой каталог к пути
            sdPath = new File(sdPath.getAbsolutePath() + "/"+ DIR_SD);
            // формируем объект File, который содержит путь к файлу
            File sdFile = new File(sdPath, fN);
         
            try {
              FileWriter f = new FileWriter(sdFile);
              f.write(contentsNote.getText().toString());
              // закрываем поток
              f.close();
              Log.d(LOG_TAG, "Файл записан на SD: " + sdFile.getAbsolutePath());
            } catch (IOException e) {
              e.printStackTrace();
            }
        }
            }
Добавлено через 32 секунды
щас пробую через FileWriter сделать
iKapex
3 / 3 / 0
Регистрация: 07.10.2012
Сообщений: 227
08.08.2013, 17:41  [ТС]     Записать текст в файл #17
неужели никто не знает как совершить такую простую операцию?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2013, 19:26     Записать текст в файл
Еще ссылки по теме:

Сохранить текст в файл Android
Android Файл: создать файл в приложении для хранения характеристик персонажа
Записать файл .wav в assets Android
Android Скачать файл .docx и считать из него текст
Android Не удается создать директорию и записать файл (Android 6)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.08.2013, 19:26     Записать текст в файл #18
http://developer.android.com/guide/t...a-storage.html
Yandex
Объявления
08.08.2013, 19:26     Записать текст в файл
Ответ Создать тему
Опции темы

Текущее время: 17:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru