Сохранение файлов на внешнем хранилище на Nexus 7 и получение с ПК

Для моего проекта я хочу иметь возможность сохранять данные датчиков в файл и иметь доступ к ним с ПК для дальнейшего анализа. Это код, который у меня есть, и он успешно работает:

File root = Environment.getExternalStorageDirectory();
File csvfile = new File(root, "Sensor_Data.csv");
FileWriter writer = new FileWriter(csvfile, true);
writer.append("Time");
writer.append(',');
writer.append("Position");
writer.append('\n');
Number data[] = new Number[4000];
for (int i = 0; i<4000; i+=2){
    posHistory.toArray(data);
        writer.append(String.valueOf(data[i]));
    writer.append(',');
        writer.append(String.valueOf(data[i+1]));
    writer.append('\n');
}
writer.flush();
writer.close();

Проблема в том, что у Nexus 7 на самом деле нет внешнего хранилища (я считаю, что он использует своего рода эмулятор, чтобы быть совместимым с большинством приложений, которые используют внешнее хранилище в своем коде).

После запуска этого кода с помощью диспетчера файлов Astro на устройстве я вижу файл «Sensor_Data.csv» в четырех местах: / sdcard, / storage / sdcard0, / storage / emulated / 0 и / storage / emulated / legacy. И каждый из них я могу открыть изнутри устройства, используя texteditor или documentviewer, и все данные там.

Проблема в том, что когда я подключаю Nexus 7 к ПК, я вижу только «Внутреннее хранилище», которое при открытии показывает мне только содержимое виртуальной SD-карты, но не фактическое внутреннее хранилище, но файл .csv отсутствует. Существует дополнительный каталог «storage / emulated / legacy», но там тоже ничего нет, и нет папок «sdcard0» или «0». Когда я захожу в «Environment.getExternalStorageDirectory (). GetAbsolutePath ()», чтобы точно узнать, какой путь я получаю / storage / emulated / 0

Я попытался сохранить файл в другом месте во внутреннем хранилище, но безуспешно, но я бы предпочел сохранить его во «внешнем хранилище», чтобы приложение было совместимо с большинством устройств, использующих внешнее хранилище.

ОБНОВИТЬ Итак, после использования adb pull имя файла вот результаты:

adb pull /storage/emulated/0/Sensor_Data.csv
remote object '/storage/emulated/0/Sensor_Data.csv' does not exist

adb pull /storage/emulated/legacy/Sensor_Data.csv
243 Kb/s <1495 bytes in 0.006s>

adb pull /storage/sdcard0/Sensor_Data.csv
243 Kb/s <1495 bytes in 0.006s>

adb pull /sdcard/Sensor_Data.csv
243 Kb/s <1495 bytes in 0.006s>

Таким образом, единственное местоположение, которое не работает, это /storage/emulated/0/Sensor_Data.csv, хотя Astro видит его во всех четырех, а LogCat показывает, что оно сохраняется в / storage / emulated / 0 /

Также попытался сохранить в

root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

Я снова вижу его в Astro в тех же четырех местах, но когда я прохожу через Windows Explorer и перехожу в папку загрузок, его там нет.

Ответы на вопрос(3)

Ваш ответ на вопрос