Samira Radwan Ответов: 1

Ошибка "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

Создается ли исключение?

1 Ответов

Рейтинг:
0

David Crow

Я подозреваю, что вы хотите что-то вроде:

InputStream stream = manager.open("firmware/" + file);


Samira Radwan

Похоже, ты прав. Я попробую это сделать. спасибо