Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
CarterSS
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
#1

Создание файла, запись в файл - не работает код - Программирование Android

15.04.2015, 22:33. Просмотров 1456. Ответов 17
Метки нет (Все метки)

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

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (connection.isClosed()) {
            Context ctx = null;
 
            String dirPath = ctx.getFilesDir().getAbsolutePath() + File.separator + "test";
            File projDir = new File(dirPath);
            if (!projDir.exists())
                projDir.mkdirs();
 
            String fileName = "data.txt";
 
            FileOutputStream outputStream = null;
            try {
                outputStream = ctx.openFileOutput(dirPath+fileName, ctx.MODE_PRIVATE);
                outputStream.write(Message.getBytes());
                outputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
Отладить на данный момент не могу, не позволяют ресурсы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2015, 22:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Создание файла, запись в файл - не работает код (Программирование Android):

Запрос разрешения на создание каталога и запись файла на реальном устройстве
public static String FileKeyNumb = FileKey.class.getSimpleName(); private...

Запись в файл, код работает некорректно
StreamWriter sw; // объект потока для записи StringBuilder...

Запись строки в файл не работает, хотя код корректный
using System; using System.Collections.Generic; using System.Linq; using...

Создание запись в .txt файл, и добавление в StringGrid Криво работает
Вообщем когда добавляет запись, вторая строчка пустая становится. ...

Запись из одного файла в другой, поясните, почему не работает код, пожалуйста
Драйжайшие господа, извольте пожалуйста взглянуть на код, и пояснить мне,...

Создание файла для записи и чтения, запись в файл данных
Написать простейшую программу, которая для своей работы ...

17
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
15.04.2015, 22:53 #2
CarterSS,
Цитата Сообщение от CarterSS Посмотреть сообщение
Context ctx = null;
String dirPath = ctx.getFilesDir().getAbsolutePath() + File.separator + "test";
можете пояснить данный участок кода?)
0
CarterSS
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
15.04.2015, 23:05  [ТС] #3
Прошу сильно не ругаться, не разобрался в понятии Context. Даже вот так не получаю директорию
Java
1
2
3
4
String dirPath = File.separator + "test";
            File projDir = new File(dirPath);
            if (!projDir.exists())
                projDir.mkdirs();
А здесь ловлю эксепш
Java
1
2
3
4
5
6
7
8
9
10
String fileName = "xztracker_data.txt";
 
            FileOutputStream outputStream = null;
            try {
                outputStream = this.context.openFileOutput(dirPath+fileName, this.context.MODE_APPEND);
                outputStream.write(locationMessage.getBytes());
                outputStream.close();
            } catch (Exception e) {
                StatusActivity.addMessage(context.getString(R.string.sending_message));
            }
Подскажи, как исправить?
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
16.04.2015, 00:47 #4
this.context.MODE_APPEND разве работает, если файла нет?
0
CarterSS
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
16.04.2015, 07:47  [ТС] #5
fgtmenow, пробовал MODE_PRIVATE, тоже глухо. Ладно файл, хотя бы папку создать...
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
16.04.2015, 08:40 #6
а пепмишн то есть на работу с картой? оба?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
16.04.2015, 09:09 #7
Java
1
Context ctx = getActivity();
0
CarterSS
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
16.04.2015, 09:29  [ТС] #8
fgtmenow, Есть конечно, но я хочу писать в internal.
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
16.04.2015, 09:32 #9
тут тебе рут тогда нужен
0
CarterSS
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
16.04.2015, 16:35  [ТС] #10
Rube, попробую позже и отпишу результат, спасибо

Добавлено через 4 часа 12 минут
Цитата Сообщение от Rube Посмотреть сообщение
Context ctx = getActivity();
Нет, не подходит, не существует в моем классе getActivity().
Может быть так,
Java
1
 Context ctx = this;
?

Добавлено через 30 минут
Чего еще не хватает?

XML
1
2
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (connection.isClosed()) {
            Context ctx = this.context;
            // Create a file in the Internal Storage
            String dirPath = ctx.getFilesDir().getAbsolutePath() + File.separator + "log" +File.separator;
            File projDir = new File(dirPath);
            if (!projDir.exists())
                projDir.mkdirs();
 
            String fileName = "data.txt";
 
            FileOutputStream outputStream = null;
            try {
                outputStream = this.context.openFileOutput(dirPath+fileName, this.context.MODE_PRIVATE);
                outputStream.write(locationMessage.getBytes());
                outputStream.close();
            } catch (Exception e) {
                
            }
        }
    }
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
17.04.2015, 08:00 #11
Цитата Сообщение от CarterSS Посмотреть сообщение
не существует в моем классе getActivity().
1. Класс наследуется от чего? Как вариант - при вызове конструктора передавать в него context, а в нем присваивать его.
Java
1
2
3
4
5
6
7
public class MyClass {
    Context context;
    
    public MyClass(Context context){
        this.context = context;
    }
}
2. Или попробуйте getApplicationContext()
0
Vladimirys
312 / 209 / 27
Регистрация: 16.01.2010
Сообщений: 610
20.04.2015, 00:44 #12
А карта памяти вообще существует на тестируемом устройстве/эмуляторе.
0
CarterSS
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
20.04.2015, 09:19  [ТС] #13
Vladimirys, даже дело не в карте, в родную память не хочет писать, создавать папку...
0
Vladimirys
312 / 209 / 27
Регистрация: 16.01.2010
Сообщений: 610
20.04.2015, 10:33 #14
А на карту пишет? Пробуйте записать для начала на карту. Да и собственно, как сказали выше, телефон должен быть рутованный. Вот еще ссылка по теме. http://stackoverflow.com/questions/5...ternal-storage
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
20.04.2015, 11:09 #15
Vladimirys, да у него context = null.
0
CarterSS
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
20.04.2015, 15:24  [ТС] #16
Rube,
Цитата Сообщение от Rube Посмотреть сообщение
Vladimirys, да у него context = null.
Эта глупость ясна, но остальные варианты не работают

Добавлено через 2 часа 35 минут
Java
1
2
3
4
5
 ContextWrapper cw = new ContextWrapper(context);
            String dirPath =  Environment.getExternalStorageDirectory() + File.separator + "LOGS" +File.separator;
            File projDir = new File(dirPath);
            if (!projDir.exists())
                projDir.mkdir();
Получилось создать папку, но почему то в родной памяти телефона, но не на флеш
0
androbro
340 / 301 / 67
Регистрация: 17.10.2014
Сообщений: 887
20.04.2015, 15:42 #17
CarterSS,
Цитата Сообщение от CarterSS Посмотреть сообщение
Получилось создать папку, но почему то в родной памяти телефона, но не на флеш
флешка это Removable а не External
0
CarterSS
4 / 4 / 4
Регистрация: 10.05.2014
Сообщений: 60
20.04.2015, 15:47  [ТС] #18
Цитата Сообщение от androbro Посмотреть сообщение
флешка это Removable а не External
слишком поздно я это понял, спасибо за помощь, все работает так, большего не надо
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 String dirPath =  Environment.getExternalStorageDirectory() + File.separator + "LOGS" +File.separator;
            File projDir = new File(dirPath);
            if (!projDir.exists())
                projDir.mkdir();
 
            String fileName = "data.txt";
 
            try {
                File logfile = new File(dirPath, fileName);
                FileWriter writer = new FileWriter(logfile,true);
                writer.append(locationMessage);
                writer.flush();
                writer.close();
            } catch (Exception e) {
                
            }
1
20.04.2015, 15:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2015, 15:47
Привет! Вот еще темы с решениями:

Создание/открытие файлов, чтение из файла и запись в файл через наследование
Имеется следующая иерархия классов: Файл, Типизированный файл, Текстовый файл...

Файл: код не работает, вылетает на строчке чтения из файла
Есть ли возможность считать из файла и записать в файл вещественное число (с...

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
Проблема такая. Есть файл data.txt. В нем например какие-то данные. Landon...

Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран
1.Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru