Ошибка "Java.io.filenotfoundexception" при чтении файла активов
Всем привет,
В моем приложении я добавил новый каталог в активы. Этот каталог имеет один двоичный файл (.мусорное ведро)файл.
Я пытаюсь прочитать этот файл с помощью Входной поток без успеха.
Я вижу имя файла, я даже могу сравнить его с существующей строкой, но я не могу его открыть.
Пожалуйста, посоветуйте.
Что я уже пробовал:
AssetManager manager =SmartControlApplication.getContext().getResources().getAssets(); String[] list = null; try{ list = manager.list("firmware"); for(String file : list){ if(file.toString().equals(imgPath)){ //return true, the file does exist Log.d(LOG_TAG, "file name "+ file.toString()); InputStream stream = manager.open(file); stream.read(mFileBuffer, 0, mFileBuffer.length); stream.close(); success = true; } } }catch(IOException ex){ ex.printStackTrace(); success = false; }
Я также пытался использовать BufferReader
BufferedReader reader = null; reader = new BufferedReader(new InputStreamReader(manager.open(file))); String mLine; while ((mLine = reader.readLine()) != null) { //process line Log.d(LOG_TAG, "file name "+ file.toString());
Но всегда InputStream не видит файла.
wseng
Он что-то показывал в этой строке ? Log.d(LOG_TAG, "file name "+ file.toString());
Samira Radwan
Да, это так. Я только что проверил Logcat
wseng
проверьте, какая строка неверна. Может быть, он потерпит неудачу после InputStream stream = manager.open(file);
?
Samira Radwan
Он терпит неудачу на этой линии. InputStream не видит файл, когда я пытаюсь его открыть. Я даже использовал DataInputStream, и он дает то же самое (Нет такого файла или каталога). есть предложения?
wseng
Можете ли вы заменить этот код и посмотреть ? InputStream inputStream = new FileInputStream(inputFile);
Samira Radwan
не повезло!!
wseng
Просто любопытно, что такое ценность file
. Зачем вам это нужно String[]
так как вы действительно можете использовать String
чтобы добиться? Просто назначьте значение пути String file
и посмотрим, как пойдут дела.
Samira Radwan
Я не думаю, что это проблема, причина использования списка заключается в том, что у меня будет количество файлов в этой папке. Я должен фильтровать, какой из них использовать.
Я только что проверил список и вижу, что у меня есть 2 файла при отладке. Итак, если у [manager.list] есть файлы в этом каталоге, почему поток их не видит?
Samira Radwan
Спасибо за вашу помощь. Я скопировал файл непосредственно в папку assets (без вложенных папок), и он, кажется, работает. все еще недоумеваю, почему не в подпапке, но пока все работает нормально. Спасибо снова
David Crow
"Я добавил новый каталог к активам."
Ваш код, по-видимому, не принимает во внимание этот "новый каталог".
Кроме того, намеренно ли то, что for()
цикл продолжает искать файлы даже после того, как нашел тот, который искал?
Samira Radwan
да, я добавил каталог "прошивка". проверьте эту строку кода: list = manager.list("прошивка"); (список всех файлов в папке "прошивка".
David Crow
Создается ли исключение?