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

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

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

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

10.11.2014, 16:31. Просмотров 2011. Ответов 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);
 
        }
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2014, 16:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как реализовать чтение txt файлов из папки по порядку? (Программирование Android):

Копирование TXT-файлов из одной папки и BMP-файлов из другой папки в папку, в которой находится пакетный файл - CMD/BAT
Доброго времени суток. У кого есть возможность сообразить какой код мне нужет чтобы сделать вот это) - Копирование всех файлов с...

Копирование TXT-файлов из одной папки и BMP-файлов из другой папки в папку, в которой находится пакетный файл - Bash
Доброго времени суток. У кого есть возможность сообразить какой код мне нужет чтобы сделать вот это) - Копирование всех файлов с...

Как реализовать чтение из .txt файла - C#
Добрый вечер) Подскажите пожалуйста как реализовать чтение из .txt файла. Допустим в С++ у меня было так: std::ifstream...

Как реализовать загрузку .txt файлов? - C#
Собственно вопрос

Как реализовать дерево файлов определенной папки удаленной машины? - PHP
Есть код, который отображает дерево каталогов, он может отобразить дерево удаленного сайта либо локальной папки где исполняется код....

Обработка всех txt-файлов из папки - C#
Была сделана обработка файла, который выбирается в диалоговом окне: private void button4_Click(object sender, EventArgs e) { ...

24
Spelcrawler
531 / 501 / 111
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 16:32 #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);
0
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 16:55  [ТС] #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);
 
 
    }
0
Spelcrawler
531 / 501 / 111
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 17:04 #18
Метод то вы отдельно выносите. В onCreate() его вызвать нужно.

Добавлено через 49 секунд
Цитата Сообщение от Kroshandowski Посмотреть сообщение
static ArrayList<String> strings; //ТУТ ЕЩЕ НА static ругается
Это должно быть в теле класса активити(в самом верху до onCreate).
0
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 17:30  [ТС] #19
Spelcrawler, со static теперь норм. Все равно почеркивает
Java
1
(this, myTextView)
Хотя наверху я указал что
Java
1
TextView myTextView;
И this подчеркивает
0
Spelcrawler
531 / 501 / 111
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 17:39 #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);
 
 
    }
2
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 19:33  [ТС] #21
Spelcrawler, Все работает!!!!!!!!!!!!!!!!!!!!!!Ура!!!!!!!!!!!!!!!!

Добавлено через 12 минут
Spelcrawler, А как сделать чтобы текст шел подряд и обратно т.е. листаем вперед и назад?
0
Spelcrawler
531 / 501 / 111
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 20:14 #22
Kroshandowski, как вам нужно? Чтобы при, например, нажатии на кнопку появился следуюший текст, если это последний в списке - считать обратно? Или выбрать позицию в ручную каким-то способом?
0
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 20:22  [ТС] #23
Spelcrawler, ну предположим при каждом нажатии на кнопку (под названием "Вперед") мы читаем текст,который у нас забит в strings подряд. Дошли мы к примеру до str5 (т.е. до пятого по счету текста) и нужно вернуться чуть назад, на предыдущий текст str4 по нажатию на кнопку (под названием "Назад"). Что-то вроде листалки организовать.
P.S. По идее в задумке три кнопки...с одной вы меня уже выручили)
0
Spelcrawler
531 / 501 / 111
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.11.2014, 20:44 #24
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Ок. Заводим еще два поля:
Java
1
2
static int currentPosition = 0;
static int listSize = 0;
Переписываем метод:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void setTextOnMyTextView(Context context, TextView textView, int position){
 
            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));
                listSize = strings.size();
            }
 
 
 
            String currentString = strings.get(position);
            textView.setText(currentString);
 
 
        }
Вызываем в зависимости от ситуации:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Нужно запустить метод при создании активити, чтобы проинициализировать все данные.
            setTextOnMyTextView(this, myTextView, 0);
 
            //Случайный текст
            currentPosition = new Random().nextInt(listSize);
            setTextOnMyTextView(this, myTextView, currentPosition);
 
            //Вперед
            if(currentPosition + 1 < listSize){
                currentPosition++;
                setTextOnMyTextView(this, myTextView, currentPosition);
            }else{
                //тут можно сообщить что  вперед листать больше нельзя.
            }
 
            //Назад
            if(currentPosition > 0){
                currentPosition--;
                setTextOnMyTextView(this, myTextView, currentPosition);
            }else{
                //тут можно сообщить что  назад листать больше нельзя.
            }
1
Kroshandowski
2 / 2 / 0
Регистрация: 05.04.2013
Сообщений: 234
12.11.2014, 21:28  [ТС] #25
Spelcrawler, Огромное спасибо!)))
0
12.11.2014, 21:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2014, 21:28
Привет! Вот еще темы с ответами:

Копирование файлов с папки в папку и запись в txt - CMD/BAT
Добрый вечер, помогите сделать батник чтоб: - С папки HP копировались все файлы в папку STD - А в папке log создавался файлик txt с...

Чтение файлов из папки - C#
Здравствуйте, подскажите пожалуйста.... Пытаюсь считать файлы из папки и записать их в файлы. В случае с одним файлом считывание и...

Автоматический Экспорт из excel в txt всех файлов из папки - VBA
Здравствуйте, у меня есть готовый макрос, который определенным образом обрабатывает открытую книгу эксель и сохраняет обработки в txt файл,...

Поочередное считывание и обработка всех файлов txt из папки - Visual Basic
форумчане, подскажите, плз, как выполнить процедуру. я только начинаю разбираться в системе:) есть форма, на ней поле, куда вносится путь...


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

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

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