Android txt: открыть не удалось: ENOENT (нет такого файла или каталога) - PullRequest
0 голосов
/ 03 мая 2020

Я работаю над проектом, в котором я loading txt data из памяти телефона and making a list view with that text data. Мой проект отлично работает на android версии 9.1. Но когда я запустил этот же проект в моем телефоне с версией lollipop (5.1.1), он не загружает файл, и просмотр списка остается пустым.

LogCat:

java .io.FileNotFoundException: Загрузка / sampledata.txt: открыть не удалось: ENOENT (Нет такого файла или каталога)

Это происходит только на телефоне с леденцом и отлично работает в другой версии. Как я могу избавиться от этой проблемы?

Основная деятельность

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";


//---- FOR LIST -----
ListView listView;
ArrayAdapter<String> adapter;
int count = 0;
String[] data;

BufferedReader bufferedReaderCounter;
BufferedReader bufferedReaderLoader;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED){
        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1000);
    }

    listView = findViewById(R.id.listview);

}

public void loadclick(View view) {
    filesearch();
}

private void filesearch(){
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.setType("text/*");
    startActivityForResult(intent, 42);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 42 && resultCode == Activity.RESULT_OK) {

        if (data != null) {
            Uri uri = data.getData();
            String path = uri.getPath();
            path = path.substring(path.indexOf(":") + 1);
            Toast.makeText(this, " " + path, Toast.LENGTH_SHORT).show();
            loaddatafromfile(path);

        }
    }
}

private void loaddatafromfile(String path){

    File file = new File(path);
    try {
        file.mkdirs();

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

    try {
        bufferedReaderCounter = new BufferedReader(new FileReader(file));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    try {

        //*** EXEPTION COMMING FROM HERE ****

        bufferedReaderLoader = new BufferedReader(new FileReader(file));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }


    try {
        while (bufferedReaderCounter.readLine() != null){
            count++;
        }
    }catch (Exception e){
    }

    data = new String[count];

    try {
        for (int i = 0; i<count; i++){
            data[i] = bufferedReaderLoader.readLine();
        }
    }catch (Exception e){
    }

    adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, data);
    listView.setAdapter(adapter);

}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == 1000){
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
            Toast.makeText(this,"Granted", Toast.LENGTH_SHORT).show();
        }
    }
}
...