java .io.FileNotFoundException, когда я пытаюсь прочитать двоичный файл в моем проекте Android Studio - PullRequest
1 голос
/ 05 мая 2020

Как сказано в заголовке, я хочу прочитать в уже созданный двоичный файл « mac_address_name ». Проект запускается на физическом устройстве, подключенном к android studio IDE.

Вот мое дерево проекта, вы можете увидеть классы и двоичный файл:

PROJECT TREE. PNG

Вот код в классе ProcessorManager , вы можете увидеть в комментариях все другие способы, которыми я пытался это сделать ...

private String readFromFile() {

    String ret = "";

    try {

        /*InputStream inputStream = main_activity.getApplicationContext().openFileInput("mac_address_name");*/
        /*InputStream inputStream = new FileInputStream(new File("../mac_address_name"));*/
        /*InputStream inputStream = main_activity.openFileInput("mac_address_name");*/
        InputStream inputStream = new FileInputStream(new File("mac_address_name"));
        if ( inputStream != null ) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ( (receiveString = bufferedReader.readLine()) != null ) {
                stringBuilder.append("\n").append(receiveString);
            }

            inputStream.close();
            ret = stringBuilder.toString();
        }
    }
    catch (FileNotFoundException e) {
        Log.e("login activity", "File not found: " + e.toString());
    } catch (IOException e) {
        Log.e("login activity", "Can not read file: " + e.toString());
    }

    return ret;
}

И вывод:

E / активность входа: Файл не найден: java .io.FileNotFoundException: mac_address_name: open failed: ENOENT (Нет такого файла или каталога)

1 Ответ

1 голос
/ 05 мая 2020

Для этого следует использовать активы. Переместите файл в папку src / main / assets внутри вашего проекта. Затем используйте AssetsManager, чтобы получить содержимое файла:

AssetManager am = context.getAssets();
InputStream is = am.open("mac_address_name");

Дополнительная информация: https://nbasercode.com/net/android-read-text-file-from-assets-folder-in-android-studio/ https://developer.android.com/reference/android/content/res/AssetManager

...