Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
#1

Сохранение logcat в txt файл на SD

21.07.2016, 22:34. Просмотров 871. Ответов 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 файл?
Пытаюсь по нажатию кнопки сохранить логи в файл. Нашел пример в нете и пробую...

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

LogCat
Здравствуйте. Подскажите как правильно читать лог/LogCat и определять где...

logcat
Уважаемые пользователи, подскажите как просмотреть логи в приложении, если даже...

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 / 1
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 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
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.07.2016, 10:20 #16
Путь же написан, по нему и открыть.

Добавлено через 2 минуты
Чета я не понимаю. Ну попробуй ещё READ_EXTERNAL в манифесте добавить
0
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
22.07.2016, 10:21  [ТС] #17
Смотрите, я прошу прощения за такие вопросы. Могу ли я этот файл зайти в SD память телефона и открыть руками?
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.07.2016, 10:25 #18
Java
1
FileWriter f = new FileWriter(fileName.toString());
Добавлено через 45 секунд
Не в этом ли косяк?
0
PhantomR
5 / 5 / 1
Регистрация: 04.02.2016
Сообщений: 78
22.07.2016, 10:26  [ТС] #19
Каков будет вердикт?
0
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
22.07.2016, 10:26 #20
Вот не работал я с FileWriter раньше, не довелось
0
22.07.2016, 10:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2016, 10:26

Альтернатива LogCat
Работаю в студии, до этого был эклипс... LogCat использую по полной, но он...

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

Ошибки LogCat
Ребят прошу у вас помощи, все никак не могу разобраться с ошибками, при запуске...


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

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

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