Чтение txt файла из внутреннего хранилища возвращает FIleNotFound, даже если файл присутствует по адресу - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь прочитать файл из внутреннего хранилища.файл доступен во внутреннем хранилище в указанном месте, и код может получить к нему доступ ... но когда он пытается открыть файл, он выдает исключение FileNotFound, которое возникает из-за , приложение не может открыть файл для чтения.Я узнал о , приложение не может открыть файл с помощью метода file.canRead(), который возвращает false.Кто-нибудь может мне помочь разобраться в ситуации?Вот мой код

path = MainActivity.this.getFilesDir().getAbsolutePath();
try {
        File file = new File(path, "jamshaid.txt");
        Context ctx = getApplicationContext();
        FileInputStream fileInputStream = ctx.openFileInput(file.getName());
        InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        String lineData = bufferedReader.readLine();
        view1.setText(lineData);

    } catch (Exception e) {
        e.printStackTrace();
    }

Разрешения

<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

API-версия моего устройства 24

Что яхочешь сделать?

я пытаюсь парсировать файл / установить текстовые данные файла в textView

Update1

после изменения
File directory = MainActivity.this.getFilesDir(); File file = new File(directory, "jamshaid.txt");
я получаюследующая ошибка

`09-25 14:45:16.413 21144-21144/com.example.root.testingvolley     W/System.err: java.io.FileNotFoundException: /data/user/0/com.example.root.testingvolley/files/jamshaid.txt (No such file or directory)`

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Попробуйте это для пути к каталогу

File directory = context.getFilesDir();
File file = new File(directory, filename);

Или

public String getTextFileData(String fileName) {

        StringBuilder text = new StringBuilder();


        try {


         FileInputStream fIS = getApplicationContext().openFileInput(fileName);
         InputStreamReader isr = new InputStreamReader(fIS, "UTF-8");
         BufferedReader br = new BufferedReader(isr);

            String line;

            while ((line = br.readLine()) != null) {
                text.append(line + '\n');
            }
            br.close();
        } catch (IOException e) {
            Log.e("Error!", "Error occured while reading text file from Internal Storage!");

        }

        return text.toString();

    }
0 голосов
/ 25 сентября 2018

Как вы проверяете, что файл существует?Возможно, файл не существует, и в этом случае openFileInput () вызовет исключение FileNotFoundException.

Вы можете попробовать открыть файл в режиме записи, который создаст файл, если такого файла не существует.

FileOutputStream fileOutputStream = ctx.openFileOutput(file.getName(), ctx.MODE_PRIVATE);
...