05
Янв
2018

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

Задача: скачать текст из 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)

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

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

Источник: https://ru.stackoverflow.com/questions/767029/%D0%A7%D1%82%D0%B5%D0%BD%D0%B8%D0%B5-%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%B3%D0%BE-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0-%D0%B8%D0%B7-file

Тебе может это понравится...

Добавить комментарий