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

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

Войти
Регистрация
Восстановить пароль
 
vlad4475
4 / 4 / 0
Регистрация: 14.07.2015
Сообщений: 33
#1

Работа с txt файлами в Android. Путь к файлу - Программирование Android

03.04.2016, 12:28. Просмотров 628. Ответов 2

Здравствуйте! Уже 3ий день не могу разобраться с тем, как считывать из txt файла.

Работа с txt файлами в Android. Путь к файлу

Пишу на Java в IntelliJ IDEA. Я использую ф-ю FileInputStream, в параметрах прописываю путь к файлу. Запускаю на эмуляторе genymotion samsung galaxy s6. Добавил файл в /sdcard/Download/ и так и указал путь к файлу. У меня всегда срабатывает исключение как на скрине. А в fis записывается null, я проверял.

Вот что выдаёт:
Кликните здесь для просмотра всего текста
04-03 05:15:20.164 1717-1717/com.example.myapp I/art﹕ Late-enabling -Xcheck:jni
04-03 05:15:20.255 1717-1717/com.example.myapp W/System﹕ ClassLoader referenced unknown path: /data/app/com.example.myapp-1/lib/x86
04-03 05:15:21.230 1717-1717/com.example.myapp I/System.out﹕ java.io.FileNotFoundException: /sdcard/Download/foun6.txt: open failed: EACCES (Permission denied)
04-03 05:15:22.200 1717-1736/com.example.myapp D/OpenGLRenderer﹕ Use EGL_SWAP_BEHAVIOR_PRESERVED: true
04-03 05:15:22.216 1717-1717/com.example.myapp D/﹕ HostConnection::get() New Host Connection established 0xeaebe5f0, tid 1717
04-03 05:15:22.696 1717-1736/com.example.myapp D/libEGL﹕ loaded /system/lib/egl/libEGL_emulation.so
04-03 05:15:22.702 1717-1736/com.example.myapp D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_emulation.so
04-03 05:15:22.740 1717-1736/com.example.myapp D/libEGL﹕ loaded /system/lib/egl/libGLESv2_emulation.so
04-03 05:15:22.819 1717-1736/com.example.myapp D/﹕ HostConnection::get() New Host Connection established 0xeea526a0, tid 1736
04-03 05:15:22.991 1717-1736/com.example.myapp I/OpenGLRenderer﹕ Initialized EGL, version 1.4
04-03 05:15:23.360 1717-1736/com.example.myapp W/EGL_emulation﹕ eglSurfaceAttrib not implemented
04-03 05:15:23.360 1717-1736/com.example.myapp W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xeea53600, error=EGL_SUCCESS
04-03 05:15:23.836 1717-1717/com.example.myapp I/Choreographer﹕ Skipped 83 frames! The application may be doing too much work on its main thread.
04-03 05:15:25.597 1717-1717/com.example.myapp I/Choreographer﹕ Skipped 103 frames! The application may be doing too much work on its main thread.


На всякий случай весь код(проблемная область в конце):

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package com.example.myapp;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TableRow;
 
import java.io.*;
import java.util.Vector;
import com.example.myapp.Controller.Controller;
 
public class MyActivity extends Activity {
 
    public static final int COUNT_LETTER = 8;
    public static final int HEIGHT_OF_BUTTUN = 200;
    public static Button buttonLetterOnWord;
    public static FileInputStream fis;
    public static Vector<Button> buttonVector = new Vector<>();
    //String PathToFile = "//sdcard//Download//foun6.txt";
 
 
 
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Controller.Init(COUNT_LETTER);
        GoWork();
    }
 
 
 
    void GoWork() {
        TableRow tableRow = (TableRow) findViewById(R.id.Row1);
        //tableRow.setLayoutParams(new TableLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        final TableRow.LayoutParams params = new TableRow.LayoutParams(50, 50);
 
        for (int j = 0; j < COUNT_LETTER; j++) {
            Button button = new Button(this);
            button.setText(" - ");
            params.weight = 1;
            params.height = 230;
            buttonVector.add(button);
            tableRow.addView(button, j, params);
            final int finalJ = j;
            View.OnClickListener onClickListener = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Controller.CheckBuk(finalJ);
                }
            };
            button.setOnClickListener(onClickListener);
        }
        TableRow rowOfCountLetter = (TableRow) findViewById(R.id.RowOfCountLetter);
        buttonLetterOnWord = new Button(this);
        final TableRow.LayoutParams paramsLetterOnWord = new TableRow.LayoutParams(50, 50);
        paramsLetterOnWord.weight = 1;
        paramsLetterOnWord.height = HEIGHT_OF_BUTTUN;
        rowOfCountLetter.addView(buttonLetterOnWord, 0, paramsLetterOnWord);
        buttonLetterOnWord.setText("Выбрано 0 букв");
        View.OnClickListener onClickOnSayHowMuchLetter = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    Controller.SayHowMuchLetter();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        };
        buttonLetterOnWord.setOnClickListener(onClickOnSayHowMuchLetter);
        try
        {
            fis = new FileInputStream("//sdcard//Download//foun6.txt");
        }catch(IOException IOEx){
            MyActivity.buttonLetterOnWord.setText("ИСКЛЮЧЕНИЕ");
            System.out.println(IOEx.toString());
        }
    }
}
И вот тут выдаётся что null
Java
1
2
3
4
5
6
7
8
9
10
11
12
    public static void SayHowMuchLetter() throws IOException {
        mask = new Mask(vectorOfClick, nowLetter);
        mask.CreateNewFileByMask();
 
 
        //char y = (char) MyActivity.fis.read();
        if (MyActivity.fis == null)
            MyActivity.buttonLetterOnWord.setText("Да");
        else MyActivity.buttonLetterOnWord.setText("Нет ");
        //MyActivity.buttonLetterOnWord.setText(y);
        return;
    }
Может быть я что то принципиально не так делаю? Или я как то не так прописываю путь к файлу? Я уже пробовал и двойной слеш, и обратный, и 2 обратных, и как угодно.. Подскажите как нужно? Буду рад любому мнению по этому вопросу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2016, 12:28     Работа с txt файлами в Android. Путь к файлу
Посмотрите здесь:
Путь к файлу Android
Android Путь к файлу и графические ресурсы
Android Узнать абсолютный путь к файлу
Android Получить путь к текстовому файлу по его Uri
Android Как из data.getData() получить путь к файлу?
Android Android studio, сменить путь к папке avd
Как создать файл (txt, xml) в android (Eclipse) Android
Android У нас был eclipse ,windows 8 x64 и куча фигни [ Filed to load the JNI shared libray "путь к файлу"]
Работа с БД android Android
Android Работа с файлами
Работа с файлами Android
Работа с файлами Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 180
03.04.2016, 13:27     Работа с txt файлами в Android. Путь к файлу #2
/mnt/sdcard/
А лучше,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
File sdPath = Environment.getExternalStorageDirectory();
                                        sdPath = new File(sdPath.getAbsolutePath() + "/Downloads/"); // dir
                                        File file = new File(sdPath, "test.txt"); //имя файла
                                        StringBuilder text = new StringBuilder();
 
                                        try {
                                            BufferedReader br = new BufferedReader(new FileReader(file));
                                            String line;
 
                                            while ((line = br.readLine()) != null) {
                                                text.append(line);
                                                text.append('\n');
                                            }
                                            br.close();
                                        }
                                        catch (IOException e) {
                                            //You'll need to add proper error handling here
                                        }
Писал быстро, могут быть ошибки.

Добавлено через 11 минут
Разрешения в манифесте прописал?
XML
1
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
vlad4475
4 / 4 / 0
Регистрация: 14.07.2015
Сообщений: 33
03.04.2016, 13:43  [ТС]     Работа с txt файлами в Android. Путь к файлу #3
Спасибо большое!!! После того, как прописал в манифесте всё заработало!
Yandex
Объявления
03.04.2016, 13:43     Работа с txt файлами в Android. Путь к файлу
Ответ Создать тему
Опции темы

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