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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
#1

Как реализовать чтение txt файлов из папки по порядку? - Android

10.11.2014, 16:31. Просмотров 1673. Ответов 24
Метки нет (Все метки)

Здравствуйте!Как реализовать чтение txt файлов из папки по порядку? Т.е. к примеру у меня есть папка1 в папке assets.В этой папке1 находятся 3-4 txt файла. Как мне по нажатию на button читать следующий файл в папке?Каждый раз нжимая на button я буду переходить к чтению следующего файла в папке.

Просто сейчас у меня указано,что нужно читать именно конкретный файл из конкретной папки.А как сделать чтение файлов по порядку или рандомно?

Для начала я просто попробовал отобразить текст файла в textView с помощью getAssets:
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
    TextView myTv;
    String res = "";
   
        myTv = (TextView) findViewById(R.id.textView);
 
        try {
 
            // OPENING THE REQUIRED TEXT FILE
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    getAssets().open("folder1/1.txt")));
 
            String myLine = reader.readLine();
 
            // NOW READING THEM LINE BY LINE UPTO THE END OF FILE
            while (myLine != null) {
                res += myLine + "\n";
                myLine = reader.readLine();
            }
 
            // CLOSE THE FILE AFTER WE HAVE FINISHED READING
            reader.close();
        } catch (IOException e) {
 
            // INFORM USER OF ANY ERROR...
            Toast.makeText(getApplicationContext(),
                    "Error Opening the File !!!", Toast.LENGTH_LONG).show();
        }
 
        // AND FINALLY SHOW THE READ TEXT IN OUR TEXT VIEW
        myTv.setText(res);
 
        }
Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sony17
28 / 28 / 6
Регистрация: 24.05.2013
Сообщений: 157
10.11.2014, 23:08     Как реализовать чтение txt файлов из папки по порядку? #2
Kroshandowski,

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

Java
1
2
3
4
5
6
7
File folder = new File("folderPath");
        ArrayList<File> allFile = new ArrayList<File>();
        // Если это каталог
        if (folder.isDirectory()) {
            for (File f : folder.listFiles()) 
                allFile.add(f);
        }
А дальше уже работать с коллекцией allFile, по индексу получать нужный файл.

Java
1
allFile.get(index);
где index - позиция файла в каталоге
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
11.11.2014, 00:59  [ТС]     Как реализовать чтение txt файлов из папки по порядку? #3
Sony17, Я так понял,что первый метод это типа метод,а второй это вызов. Но как быть с index? Не я должен позицию указывать,а прога на шару выбирать.
Sony17
28 / 28 / 6
Регистрация: 24.05.2013
Сообщений: 157
11.11.2014, 10:37     Как реализовать чтение txt файлов из папки по порядку? #4
Kroshandowski,

Ну заведите переменную int index = 0 (0 - первый файл в коллекции/каталоге). По нажатию на кнопку увеличивайте счетчик index++ и опять же вызывайте метод get(index), где index будет равен уже 1, ну и т.д.

Если нужно сразу все файлы по порядку считать, то можно и не создавать эту коллекцию, а сразу начать работу с файлом:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
File folder = new File("folderPath");
StringBuilder text = new StringBuilder();
        if (folder.isDirectory()) {
            for (File f : folder.listFiles()) {
                 BufferedReader br = new BufferedReader(new FileReader(f));
                 String line;
 
                 while ((line = br.readLine()) != null) {
                        text.append(line + '\n');
                 }
            }
            Log.d("", text);
        }
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
11.11.2014, 14:04  [ТС]     Как реализовать чтение txt файлов из папки по порядку? #5
Sony17, ругается на
Java
1
Log.d("", text);
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
11.11.2014, 14:22     Как реализовать чтение txt файлов из папки по порядку? #6
Kroshandowski, как ругается?
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
11.11.2014, 14:34  [ТС]     Как реализовать чтение txt файлов из папки по порядку? #7
Spelcrawler, Sony17, сдается мне,что моя задумка хреновая...нет толком инфы в нете. Может вообще создать xml в папке values и прописать пути к txt файлам. Назвать все это selector и считывать подряд при каждом нажатии на button.
Нашел пример... тут смена цветов каринки по нажатию на button. Как прописать пути к файлам txt для дальнейшего чтения?
Java
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_pressed_yellow"
          android:state_pressed="true" />
    <item android:drawable="@drawable/button_focused_orange"
          android:state_focused="true" />
    <item android:drawable="@drawable/button_normal_green" />
</selector>
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
12.11.2014, 09:09     Как реализовать чтение txt файлов из папки по порядку? #8
Файлы при разработке добавляются? Потом в процессе использования меняются? Что в файлах? Если просто текст - какой длинны примерно?
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 14:48  [ТС]     Как реализовать чтение txt файлов из папки по порядку? #9
Spelcrawler, В txt файлах просто текст,который отображается в textView.Нужно при каждом событии клика button'a, отображать в textView содержание следующего файл из папки folder1 и т.д.
Вложение 453431
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
12.11.2014, 14:55     Как реализовать чтение txt файлов из папки по порядку? #10
Kroshandowski, а если вместо файлов использовать string.xml? Загнать текст из каждого файла в отдельную строку, создать массив строк, и выбирать случайно из массива.

strings.xml
XML
1
2
3
4
5
6
7
8
<resources>
 
    <string name="str1">str1</string>
    <string name="str2">str2</string>
    <string name="str3">str3</string>
    <string name="str4">str4</string>
 
</resources>
код
Java
1
2
3
4
5
6
7
8
        ArrayList<String> strings = new ArrayList<>();
        
        strings.add(context.getResources().getString(R.string.str1));
        strings.add(context.getResources().getString(R.string.str2));
        strings.add(context.getResources().getString(R.string.str3));
        strings.add(context.getResources().getString(R.string.str4));
        
        String randomString = strings.get(new Random().nextInt(strings.size()));
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 15:20  [ТС]     Как реализовать чтение txt файлов из папки по порядку? #11
Spelcrawler, а возможно ли не текст забивать,а адрес к файлу прописать?Просто в txt файле текст великоват для одной строки.
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
12.11.2014, 16:01     Как реализовать чтение txt файлов из папки по порядку? #12
Kroshandowski, насколько великоват? Хотя в принципе не важно. Что вы файлы будете хранить, что в string.xml размер приложения не изменится. А работать мой вариант будет быстрее.
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 16:06  [ТС]     Как реализовать чтение txt файлов из папки по порядку? #13
Spelcrawler, А как результат вывести в textView?Точнее переменная результата. Что-то типа:
Java
1
myTv.setText(?????);
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
12.11.2014, 16:24     Как реализовать чтение txt файлов из папки по порядку? #14
Kroshandowski, насколько великоват? Хотя в принципе не важно. Что вы файлы будете хранить, что в string.xml размер приложения не изменится. А работать мой вариант будет быстрее.
Цитата Сообщение от Spelcrawler Посмотреть сообщение
String randomString = strings.get(new Random().nextInt(strings.size()));
Вот эта строка "randomString" и есть результат. Т.е.
Java
1
myTv.setText(randomString);
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 16:27  [ТС]     Как реализовать чтение txt файлов из папки по порядку? #15
Spelcrawler, подчеркивает красным символ <> и еще context
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
12.11.2014, 16:32     Как реализовать чтение txt файлов из папки по порядку? #16
Можно такой метод добавить, если требуется несколько раз переназначать текст:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static ArrayList<String> strings;
    
    public void setRandomTextOnMyTextView(Context context, TextView myTextView){
 
        if(strings == null){
            strings = new ArrayList<String>();
            strings.add(context.getResources().getString(R.string.str1));
            strings.add(context.getResources().getString(R.string.str2));
            strings.add(context.getResources().getString(R.string.str3));
            strings.add(context.getResources().getString(R.string.str4));
        }        
 
        String randomString = strings.get(new Random().nextInt(strings.size()));
        myTextView.setText(randomString);
 
 
    }
Добавлено через 2 минуты
Цитата Сообщение от Kroshandowski Посмотреть сообщение
подчеркивает красным символ <> и еще context
В последнем сообщении <> исправил. В качестве context в метод передавайте активити т.е. если вызвать метод в onCreate() - будет выглядеть так:
Java
1
setRandomTextOnMyTextView(this, myTextView);
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 16:55  [ТС]     Как реализовать чтение txt файлов из папки по порядку? #17
Spelcrawler, подчеркивает строку
Java
1
(Context context, TextView myTextView)
Меняю на
Java
1
(this, myTextView)
Все равно чет не нравится.
Метод вызываю в onCreate()
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        static ArrayList<String> strings; //ТУТ ЕЩЕ НА static ругается    
        public void setRandomTextOnMyTextView(this, myTextView){
 
        if(strings == null){
            strings = new ArrayList<String>();
            strings.add(this.getResources().getString(R.string.str1));
            strings.add(this.getResources().getString(R.string.str2));
            strings.add(this.getResources().getString(R.string.str3));
            strings.add(this.getResources().getString(R.string.str4));
        }        
 
        String randomString = strings.get(new Random().nextInt(strings.size()));
        myTextView.setText(randomString);
 
 
    }
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
12.11.2014, 17:04     Как реализовать чтение txt файлов из папки по порядку? #18
Метод то вы отдельно выносите. В onCreate() его вызвать нужно.

Добавлено через 49 секунд
Цитата Сообщение от Kroshandowski Посмотреть сообщение
static ArrayList<String> strings; //ТУТ ЕЩЕ НА static ругается
Это должно быть в теле класса активити(в самом верху до onCreate).
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 17:30  [ТС]     Как реализовать чтение txt файлов из папки по порядку? #19
Spelcrawler, со static теперь норм. Все равно почеркивает
Java
1
(this, myTextView)
Хотя наверху я указал что
Java
1
TextView myTextView;
И this подчеркивает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2014, 17:39     Как реализовать чтение txt файлов из папки по порядку?
Еще ссылки по теме:

как нажатием на кнопку запустить установку приложения из папки? Android
Чтение ассоциированного .txt файла с внутренней памяти по URI Android
Чтение файлов из res в android studio Android
Чтение и запись внешних файлов Android
Android Узнать имена всех txt файлов в папке

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

Или воспользуйтесь поиском по форуму:
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
12.11.2014, 17:39     Как реализовать чтение txt файлов из папки по порядку? #20
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Kroshandowski Посмотреть сообщение
static ArrayList<String> strings; //ТУТ ЕЩЕ НА static ругается
Это должно быть в теле класса активити(в самом верху до onCreate).
Цитата Сообщение от Kroshandowski Посмотреть сообщение
public void setRandomTextOnMyTextView(this, myTextView){
Ну конечно это объявление метода там нужно (Context context, TextView myTextView);

Добавлено через 3 минуты
Вот так должна выглядеть активити:
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
static ArrayList<String> strings;
    
    onCreate(){
 
//Тут то что в onCreate() было ДО изменений которые я советовал.
        setRandomTextOnMyTextView(this, myTextView);
 
    }
 
 
    public void setRandomTextOnMyTextView(Context context, TextView myTextView){
 
        if(strings == null){
            strings = new ArrayList<String>();
            strings.add(context.getResources().getString(R.string.str1));
            strings.add(context.getResources().getString(R.string.str2));
            strings.add(context.getResources().getString(R.string.str3));
            strings.add(context.getResources().getString(R.string.str4));
        }
 
        String randomString = strings.get(new Random().nextInt(strings.size()));
        myTextView.setText(randomString);
 
 
    }
Yandex
Объявления
12.11.2014, 17:39     Как реализовать чтение txt файлов из папки по порядку?
Ответ Создать тему
Опции темы

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