Чтение русского текста из File

270
07 января 2018, 06:36

Задача: скачать текст из Firebase и продемонстрировать его в log'ах.

Скачиваю текстовый файл с помощью кода:

            //Скачиваие файла
            // Сначала получаем доступ к Хранилищу
            FirebaseStorage storage2 = FirebaseStorage.getInstance();
            // Создаем ссылку на рут
            StorageReference storageRef2 = storage2.getReferenceFromUrl("gs://XXX");
            StorageReference TextPathReference = storageRef2.child("text/" + "2.txt");
            final File TextFile = new File(getFilesDir(), "2.txt");
            TextPathReference.getFile(TextFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) 
                {
                    // Файл был скачан
                    Log.d("TAG_LOG", "Текстовый файл был скачан"); //Пишет в лог
                    File file = new File(TextFile.getAbsolutePath());
                    String [] loadText = Load(file);
                    String finalString = "";
                    for (int i = 0; i < loadText.length; i++)
                    {
                        finalString += loadText[i]+ System.getProperty("line.separator");
                    }
                    Log.d("TAG_LOG", "Текст в файле: " + finalString); //Пишет в лог
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                    // Ошибка
                    Log.d("TAG_LOG", "Ошибка"); //Пишет в лог
                }
            });

где Load:

public static String[] Load(File file)
    {
        FileInputStream fis = null;
        try
        {
            fis = new FileInputStream(file);
        }
        catch (FileNotFoundException e) {e.printStackTrace();}
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);
        String test;
        int anzahl=0;
        try
        {
            while ((test=br.readLine()) != null)
            {
                anzahl++;
            }
        }
        catch (IOException e) {e.printStackTrace();}
        try
        {
            fis.getChannel().position(0);
        }
        catch (IOException e) {e.printStackTrace();}
        String[] array = new String[anzahl];
        String line;
        int i = 0;
        try
        {
            while((line=br.readLine())!=null)
            {
                array[i] = line;
                i++;
            }
        }
        catch (IOException e) {e.printStackTrace();}
        return array;
    }

В результате в Log пишется текст (например: Текст в файле: hello world)

Проблема: если текст в файле записан русскими буквами, то в результате в логах надпись такого типа: (например: Текст в файле: ������ ���)

Как перевести символы "�" в русские буквы?

Answer 1

Попробуйте

InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
Answer 2

Текстовый файл нужно создавать не через блокнот, а через другой текстовый редактор. В моём случае мне помог Notepad++.

READ ALSO
Libgdx &ldquo;затухающая&rdquo; анимация

Libgdx “затухающая” анимация

Имеется кнопка TextButton , так же есть анимация spinAnimationНи как не могу понять, как реализовать "затухание анимации"(т

264
Как перебрать циклом массив для поиска совпадений?

Как перебрать циклом массив для поиска совпадений?

Пишу свою первую игру по типу три в ряд! В процессе создания игры сделал следующее:

290
Js + Java EE(Ajax добавление данных в таблицу)

Js + Java EE(Ajax добавление данных в таблицу)

Здравствуйте, есть приложение, в котором находится комната администратораТам есть таблица в которой находятся группы студентов, и есть кнопочка...

248
Android обработка касаний для игры

Android обработка касаний для игры

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

223