Android FileInputStream FileNotFoundException, несмотря на наличие разрешений, файл существует, хранилище смонтировано, может читать и т. Д. - PullRequest
1 голос
/ 20 ноября 2011

Я начинающий разработчик для Android и сталкиваюсь со следующей проблемой при попытке доступа к XML-файлу на SD-карте.

Для начала я выполнил следующие проверки: - Разрешение на чтение / запись внешнего хранилища дано в манифесте Android - Файл существует в указанном месте - Я проверил: fileexists = true;canread = true;isfile = true - состояние внешнего хранилища = смонтировано

Тем не менее FileInputStream дает мне исключение FileNoteFoundException.Код:

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

}
    //probeersel
    public void myClickHandler(View view) {
        switch (view.getId()) {
            case R.id.button1:

                XPath xpath = XPathFactory.newInstance().newXPath();

                File mealsource = new File(getExternalFilesDir(null)
                         + "/test.xml");

                Toast.makeText(this, "External Files Dir: " + getExternalFilesDir(null), Toast.LENGTH_LONG).show();
                Toast.makeText(this, "Exists: " + String.valueOf(mealsource.exists()), Toast.LENGTH_LONG).show();
                Toast.makeText(this, "Can read: " + String.valueOf(mealsource.canRead()), Toast.LENGTH_LONG).show();
                Toast.makeText(this, "Is file: " + String.valueOf(mealsource.isFile()), Toast.LENGTH_LONG).show();
                Toast.makeText(this, "External Storage State: " + Environment.getExternalStorageState(), Toast.LENGTH_LONG).show();
                Toast.makeText(this, "Absolute path " + mealsource.getAbsolutePath(), Toast.LENGTH_LONG).show();

                FileInputStream mealstream = new FileInputStream(mealsource);

                InputSource inputsource = new InputSource(mealstream);

                expression = "Meals/Meal/ShrtDesc/text()";

                meallist = (NodeList) xpath.evaluate(expression, inputsource, XPathConstants.NODE);

etc

Итак, резюмируем: все мои проверки говорят, что файл готов к чтению и готов к действию, но конструктор FileInputStream, похоже, не замечает этого.Что мне делать?Что я пропустил?Может ли это быть как-то связано с содержанием XML?

Большое спасибо за любую помощь или советы, которые вы можете дать мне.

...