Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
#1

Сохранение logcat в txt файл на SD - Программирование Android

21.07.2016, 22:34. Просмотров 804. Ответов 31
Метки нет (Все метки)

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

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
public void writefile() {
        File externalStorageDir = Environment.getExternalStorageDirectory();
        File myFile = new File(externalStorageDir, "yourfilename.txt");
        if (myFile.exists()) {
            try {
                FileOutputStream fostream = new FileOutputStream(myFile);
                OutputStreamWriter oswriter = new OutputStreamWriter(fostream);
                BufferedWriter bwriter = new BufferedWriter(oswriter);
                bwriter.write("Hi welcome ");
                bwriter.newLine();
                bwriter.close();
                oswriter.close();
                fostream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            try {
                myFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
Добавлено через 1 минуту
И как использовать для сохранения LogCat следующую запись, которую предлагают на просторах интернета

Java
1
2
String filePath = Environment.getExternalStorageDirectory() + "/logcat.txt"; 
Runtime.getRuntime().exec(new String[]{"logcat", "-v", "time", "-f", filePath});
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2016, 22:34
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сохранение logcat в txt файл на SD (Программирование Android):

Запись logcat в файл на SD-card из своего приложения - Программирование Android
Добрый день! Вроде все просто и понятно, но видимо я слишком уж "зеленый" в java... Суть проблемы. В ходе тестирования приложения...

LogCat - Программирование Android
Здравствуйте. Подскажите как правильно читать лог/LogCat и определять где находится ошибка ? Вот у меня возникла ошибка , как...

logcat - Программирование Android
Уважаемые пользователи, подскажите как просмотреть логи в приложении, если даже эмулятор не запускается из-за недостатка оперативной памяти.

Ошибки в logcat - Программирование Android
День добрый! Решил написать простенькое приложение вот с этого примера ...

Альтернатива LogCat - Программирование Android
Работаю в студии, до этого был эклипс... LogCat использую по полной, но он меня не устраивает (ни в Студии, ни в Эклипсе, ни в...

Ошибки LogCat - Программирование Android
Ребят прошу у вас помощи, все никак не могу разобраться с ошибками, при запуске приложения сразу вылетает Логи LogCat: (буду очень...

31
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.07.2016, 05:51 #2
Java
1
File myFile = new File(externalStorageDir, "yourfilename.txt");
Это что вообще? Так не пробовал?
Java
1
File myFile = new File(externalStorageDir.toString +"/" +  "yourfilename.txt");
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
22.07.2016, 08:32  [ТС] #3
Файл всё равно не появляется

Добавлено через 24 минуты
Делаю простейшую запись по примеру, не может создать файл FileNotFoundException. Что это может быть?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public void WriteFileLogCat() {
        File fileName = null;
        String sdState = android.os.Environment.getExternalStorageState();
        if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
            File sdDir = android.os.Environment.getExternalStorageDirectory();
            fileName = new File(sdDir, "cache/logcat.txt");
        } else {
            fileName = MainActivity.this.getCacheDir();
        }
        if (!fileName.exists())
            fileName.mkdirs();
        try {
            FileWriter f = new FileWriter(fileName);
            f.write("hello world");
            f.flush();
            f.close();
 
 
        } catch (IOException e) {
            Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
        }
    }
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.07.2016, 08:47 #4
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
public void WriteFileLogCat() {
        File fileName = null;
        String sdState = android.os.Environment.getExternalStorageState();
        if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
            File sdDir = android.os.Environment.getExternalStorageDirectory();
            // fileName = new File(sdDir, "cache/logcat.txt"); // вместо этого пишем:
           fileName = new File(sdDir.toString + "/cache/logcat.txt");
        } else {
            fileName = MainActivity.this.getCacheDir();
        }
        if (!fileName.exists()) // Команда "fileName = new File(sdDir.toString + "/cache/logcat.txt");" уже создала новый файл,
                                       // Поэтому проверка if (!fileName.exists()) практически бессмысленна
            fileName.mkdirs(); // А тут зачем-то создается папка с именем файла???
        try {
            FileWriter f = new FileWriter(fileName);
            f.write("hello world");
            f.flush();
            f.close();
 
 
 
        } catch (IOException e) {
            Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
        }
    }
Как-то все запутано...

Добавлено через 1 минуту
Логичнее было бы:

if (!fileName.exists()) fileName = new File(sdDir.toString + "/cache/logcat.txt");

Добавлено через 6 минут
И никак не пойму, почему народ принципиально не использует логи. Ведь все сразу видно будет, где косяк... Toast то выдается хоть, или нет?
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
22.07.2016, 08:56  [ТС] #5
Попробую сейчас.

Добавлено через 2 минуты
Вот что пишет в ответ лог: D/MyLogs: WriteFileLogCat: java.io.FileNotFoundException: /storage/emulated/0/cache/logcat.txt: open failed: ENOENT (No such file or directory)

Добавлено через 39 секунд
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void WriteFileLogCat() {
        File fileName = null;
        String sdState = android.os.Environment.getExternalStorageState();
        if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
            File sdDir = android.os.Environment.getExternalStorageDirectory();
            fileName = new File(sdDir.toString() + "/cache/logcat.txt");
        } else {
            fileName = MainActivity.this.getCacheDir();
        }
        try {
            FileWriter f = new FileWriter(fileName);
            f.write("hello world");
            f.flush();
            f.close();
        } catch (IOException e) {
            Log.d(TAG, "WriteFileLogCat: "+e);
        }
    }
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.07.2016, 09:13 #6
Я имею в виду сделать так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void WriteFileLogCat() {
        File fileName = null;
        String sdState = android.os.Environment.getExternalStorageState();
        if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
            File sdDir = android.os.Environment.getExternalStorageDirectory();
            fileName = new File(sdDir.toString() + "/cache/logcat.txt");
        } else {
            fileName = MainActivity.this.getCacheDir();
        }
 
        Log.e("TAG", "Создан файл " + fileName);
 
        try {
            FileWriter f = new FileWriter(fileName);
            f.write("hello world");
            f.flush();
            f.close();
        } catch (IOException e) {
            Log.d(TAG, "WriteFileLogCat: "+e);
        }
    }
Добавлено через 5 минут
Видимо сначала надо папку создать?

Java
1
2
3
4
5
6
7
8
String folder = sdDir.toString() + "/cache";
        File f = new File(folder);
        if (!f.isDirectory()) {
            try {
                f.mkdirs();
            } catch (Exception e) {
            }
        }
1
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
22.07.2016, 09:25  [ТС] #7
Похоже это финал?

D/MyLogs: WriteFileLogCat: java.io.FileNotFoundException: /storage/emulated/0/logcat.txt: open failed: EACCES (Permission denied)

Добавлено через 1 минуту
Убрал вообще папку. Так же должно в SD корень писать?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 public void WriteFileLogCat() {
        File fileName = null;
        String sdState = android.os.Environment.getExternalStorageState();
        if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
            File sdDir = android.os.Environment.getExternalStorageDirectory();
            fileName = new File(sdDir.toString() + "/cache/logcat.txt");
        } else {
            fileName = MainActivity.this.getCacheDir();
        }
 
        Log.e("TAG", "Создан файл " + fileName);
 
        try {
            FileWriter f = new FileWriter(fileName);
            f.write("hello world");
            f.flush();
            f.close();
        } catch (IOException e) {
            Log.d(TAG, "WriteFileLogCat: "+e);
        }
    }
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.07.2016, 09:52 #8
Java
1
fileName = new File(sdDir.toString() + "/cache/logcat.txt");
Убрал совсем папку, а она сама назад приползла?

Что логи пишут?
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
22.07.2016, 09:54  [ТС] #9
Ой. Не то написал. Сделал так. Лог ответил: D/MyLogs: WriteFileLogCat: java.io.FileNotFoundException: /storage/emulated/0/logcat.txt: open failed: EACCES (Permission denied)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void WriteFileLogCat() {
        File fileName = null;
        String sdState = android.os.Environment.getExternalStorageState();
        if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) {
            File sdDir = android.os.Environment.getExternalStorageDirectory();
            fileName = new File(sdDir.toString() + "/logcat.txt");
        } else {
            fileName = MainActivity.this.getCacheDir();
        }
 
        Log.e("TAG", "Создан файл " + fileName);
 
        try {
            FileWriter f = new FileWriter(fileName);
            f.write("hello world");
            f.flush();
            f.close();
        } catch (IOException e) {
            Log.d(TAG, "WriteFileLogCat: "+e);
        }
    }
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.07.2016, 10:01 #10
Да блин. В манифесте разрешения прописаны хоть на доступ к SD?
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
22.07.2016, 10:02  [ТС] #11
?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.phantom.softteco">

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />...
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.07.2016, 10:04 #12
А тут что?

Java
1
Log.e("TAG", "Создан файл " + fileName);
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
22.07.2016, 10:06  [ТС] #13
Тишина. Только пишет Exception.
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.07.2016, 10:11 #14
Да как это тишина? Ну не бывает так

Добавлено через 50 секунд
Фильтр на логах не стоит?
0
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 78
22.07.2016, 10:13  [ТС] #15
07-22 10:01:28.713 25028-25028/com.example.phantom.softteco D/MyLogs: WriteFileLogCat: java.io.FileNotFoundException: /storage/emulated/0/cache/logcat.txt: open failed: ENOENT (No such file or directory)
07-22 10:04:52.443 25028-25028/com.example.phantom.softteco D/MyLogs: WriteFileLogCat: java.io.FileNotFoundException: /storage/emulated/0/cache/logcat.txt: open failed: ENOENT (No such file or directory)

2 подряд копирую с фильтра с тэгов

Добавлено через 1 минуту
Стоп... Не правильно был тэг в этом коде проставлен...

07-22 10:12:08.463 10037-10037/com.example.phantom.softteco E/MyLogs: Создан файл /storage/emulated/0/cache/logcat.txt
07-22 10:12:08.463 10037-10037/com.example.phantom.softteco D/MyLogs: WriteFileLogCat: java.io.FileNotFoundException: /storage/emulated/0/cache/logcat.txt: open failed: ENOENT (No such file or directory)

Файл создан. А где он распологается? Как его вручную открыть на телефоне? или через explorer в виндоус.
0
22.07.2016, 10:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2016, 10:13
Привет! Вот еще темы с ответами:

Logcat на устройстве - Программирование Android
Тестирую приложение, парсит сайт. На эмуляторе все проходит хорошо, а на телефоне иногда крашится в момент соединения к сайту. Как...

Вывод LogCat - Программирование Android
Вопрос заключается в следующем: пишу одно приложение, при этом использую опенгл. Логкет выдает некие сообщения: GC_CONCURRENT,GC_EXPLICIT,...

В LogCat не выводится сообщение - Программирование Android
Log.d(TAG, &quot;найдем View-элементы&quot;); Ввожу такой код в активити в onCreate все работает запускается а в логах никакого сообщения нет...

LogCat при отладке - Программирование Android
Почему когда при отладке происходит сбой программы, то LogCat ничего не пишет? Приходится запускать еще раз, но уже без дебагера и...


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

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

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