Невозможно сохранить файл storage emulated 0 download

Обновлено: 05.07.2024

Недавно я понял, что если я удаляю файлы, /sdcard/Download он удаляет файлы из /storage/emulated/0/Download . И если я добавлю в него файлы, /sdcard/Download то дублирую их в /storage/emulated/0/Download .

Так что же /storage/emulated/0/ ? Для каких целей он у нас есть в нашей файловой системе Android?

/storage/emulated/0/Download фактический путь к файлам.

/sdcard/Download символическая ссылка на фактический путь /storage/emulated/0/Download

Однако фактические файлы находятся в файловой системе /data/media , которая затем монтируется /storage/emulated/0 (и часто в другие точки монтирования).

Symlink При вычислении, символическая ссылка является термином для любого файла , который содержит ссылку на другой файл или каталог в виде абсолютного или относительного пути , и что влияет на разрешение имени пути. Символьные ссылки уже присутствовали к 1978 году в миникомпьютерных операционных системах от DEC и RDOS от Data General.

Этот ответ был бы лучше, если бы он немного объяснил, почему он «эмулируется». Я полагаю, что Android делает хак, чтобы подделать FAT fs, который на самом деле подкреплен чем-то лучшим, но я не знаю деталей и нажал на этот вопрос, надеясь узнать что-то новое. @R .. «эмулированное» ИМХО указывает на тот факт, что это «эмулируемая SD-карта» (не настоящая).

/storage/emulated/0/ фактически /data/media/0/ выставляется через эмулированную / виртуальную файловую систему, а не через реальную.

Это со ссылкой на мой предыдущий ответ здесь , но с более соответствующими деталями.

ХРАНЕНИЕ АНДРОИДОВ:

* >S> Для линка, >E> для эмулировать и >B> для связывания монтирования
* USER-ID текущего пользователя в случае Multiple Users или Work Profile , как правило , 0 то , что от владельца устройства
* VIEW является одним из read (для приложений с permission.READ_EXTERNAL_STORAGE) или write (permission.WRITE_EXTERNAL_STORAGE) или default (для процессов , запущенных в корне / global namespace т.е. т.е. вне zygote)
* В предыдущих версиях Android были незначительные различия, но концепция эмуляции с тех пор была реализована.
* Для получения более подробной информации о реализации пространства имен монтирования Android см. Этот ответ .

Короче говоря, /sdcard и /storage/emulated/0 - которые представляют файловую систему FAT / vFAT / FAT32 - указывают на /data/media/0 (или /mnt/expand/[UUID]/media/0 в случае приемлемого хранения ) сквозной FUSE или sdcardfs эмуляции.

Будучи не специфичным для Android, но в основном связанным с Linux, symlink и bind mount (см. «Создание bind mount») выходят за рамки этого вопроса, поскольку речь идет в основном о части эмуляции.

Эмуляция:

Почему эмуляция здесь? Эмулируемая файловая система - это уровень абстракции в реальной файловой системе ( ext4 или f2fs ), который служит в основном двум целям:

  • Сохранение USB-подключения устройств Android к ПК (теперь через MTP осуществляется через несколько дней)
  • Ограничить несанкционированный доступ приложений / процессов к личным носителям пользователя и данным других приложений на SD-карте.

В ранних устройствах Android не хватало внутренней памяти и использовались (физически) внешние SD-карты, которые традиционно используют файловую систему семейства FAT для обеспечения совместимости с большинством ПК (см. Доминирование Microsoft в мире ПК).
Когда размер внутреннего хранилища вырос, та же файловая система была переведена на внутреннюю (все еще называемую «внешнюю») SD-карту.
Но реализация FAT / vFAT имела две основные проблемы, которые Google постепенно решала:

  • Устройства Android были подключены к ПК напрямую ( USB Mass Storage ) так же, как мы подключаем USB-накопитель в наши дни. UMS предоставляет устройство на уровне блоков и отключает SD-карту от платформы Android (отключает монтирование), что делает целые данные недоступными для приложений и, возможно, нарушает многие функции.
  • FAT (любимый в Windows в дни разработки) никогда не был предназначен для обеспечения разрешений UNIX ( символические ссылки mode, uid, gid и аналогичные , и тому ioctls подобное FS_IOC_FIEMAP ). Таким образом, все данные на SD-карте были доступны всем приложениям (поскольку каждое приложение Android является пользователем UNIX / Linux и имеет идентификатор пользователя) без ограничений, что вызывает серьезные проблемы с безопасностью и конфиденциальностью.

Обе эти проблемы были решены с помощью эмуляции:

  • Фактическое хранилище SD-карты было перемещено в /data раздел (или независимый раздел / sdcard на некоторых устройствах ранее), который содержит ext4 файловую систему (постепенно заменяющуюся f2fs ), полностью реализуя разрешения UNIX.
  • Этот дизайн сделал использование UMS невозможным, поскольку весь /data раздел не мог быть открыт для ПК по двум причинам: (1) он содержит множество настроек и данных приложений, которые должны быть защищены от других приложений, а также от пользователей. (2) Файловые системы Linux не поддерживаются Windows.
    Таким образом, UMS был заменен на Media Transfer Protocol, который является расширением типа клиент-сервер для PTP - уже установленный протокол. MTP не предоставляет блочное устройство, но работает через программный стек. Хост MTP работает на Android как приложение ( android.process.media ), полностью изолированное в среде Android, не способное выполнять какие-либо сложные задачи.

Теперь приложения (и MTP, который также является приложением) вместо этого взаимодействуют с эмулируемым хранилищем /data/media , выполняя обе задачи одновременно, т.е. осуществляя проверку разрешений снизу и выглядя как файловая система FAT на верхней поверхности.

Google теперь реализует эмуляцию через sdcardfs, чтобы преодолеть недостатки FUSE ; одна из основных причин - затраты на ввод / вывод, т. е. повышение скорости чтения / записи.

ВНЕШНИЕ РАЗРЕШЕНИЯ НА ХРАНЕНИЕ:
Концепция публичных и приватных файлов на внешнем хранилище может быть продемонстрирована на примере:
Установите приложение Termux.
Создать каталоги /sdcard/Android/data/com.termux/test_dir и /sdcard/test_dir .
Создать файлы /sdcard/Android/data/com.termux/test_file и /sdcard/Android/data/com.termux/test_file .
Выполните следующие команды:

without_storage_perm

* У вас должен быть установлен WhatsApp или выбрать личную папку другого приложения.

Теперь принудительно остановите приложение Termux и предоставьте разрешение на хранение . Выполните команды еще раз:

with_storage_perm

Смотрите разницу в разрешениях для одинаковых файлов и каталогов. Кажется, что это просто невозможно без эмуляции в собственной файловой системе Linux, когда одновременно работают сотни приложений (пользователей). Это эмуляция файловой системы, которая позволяет открывать один и тот же файл с тремя различными наборами разрешений одновременно, независимо от его исходных разрешений в реальной файловой системе:

Я написал код для записи звука и сохранения ti ниже местоположения файла.

в Logcat он дает мне местоположение файла как
/ хранение / эмуляция/0/AudioRecorder / 1436854479696.mp4

Я не могу найти эту папку на SD-карте. Как получить доступ к папке?

Как сказал Хирен, вам понадобится проводник, чтобы увидеть ваш каталог. Если вы коренитесь, я настоятельно рекомендую root explorer, иначе ES File Explorer-хороший выбор.

мой Android 6.0 позволяет мне просматривать память стажера без необходимости сторонних приложений. Я просто делаю это*:

  1. "настройки"
  2. "хранение и USB"
  3. "стажер"
  4. [пусть он загрузится немного. ]
  5. [прокрутите вниз]
  6. "обзор"

* слова могут не соответствовать стандартной английской версии одни, поскольку я просто свободно перевожу их с португальского.

Примечание: по крайней мере в моем телефоне, /storage/emulated/0 не соответствует SD-карте, но интерн. Этот метод не работал для моей внешней карты, но я никогда не пробовал его с другим телефоном.

надеюсь, что это помогает!

также вы можете использовать мост отладки Android (adb) чтобы скопировать файл с устройства Android в папку на вашем ПК:

и вы можете скопировать с устройства всего :

подключите устройство и запустите adb shell Что даст вам командную оболочку на вашем устройстве. У вас нет разрешения читать /storage/emulated/ но так как вы знаете, что это в подкаталоге 0 просто go cd /storage/emulated/0 и вы сможете смотреть вокруг и взаимодействовать как aspected.

Примечание: можно использовать adb беспроводное, а также

в эмуляторе для просмотра этого файла нажмите Настройки>хранилище>другое>Android>данные>com.имя_компании.textapp>файл>загрузить. Здесь textapp-это имя приложения, над которым вы работаете.

здесь он находится в /mnt / shell / emulated / 0

, которые указывают на /storage/emulated/0

enter image description here

Если вы используете Android Device monitor и эмулятор android: я получил доступ следующим образом: Данные/Медиа/0/

чтобы восстановить ваши фотографии из / storage / emulated/0 / просто откройте файл 100Andro..там вы увидите свои фотографии, хотя у вас может не быть доступа к ним в вашем PC explorer. Там открываем каждую картинку одну за другой, продолжаем настройку (три точки..) и сохранить изображение. Он будет отображаться в файле android "картинки", откуда вы также можете скопировать их с помощью проводника. Нет функции "сохранить все", однако она должна выполняться один за другим, но она работает.

в моем случае, / storage / emulated/0 / соответствует корневому пути моего устройства. Например, когда я делаю снимок с помощью приложения камеры по умолчанию моего телефона, изображения сохраняются автоматически / store / emulated/0 / DCIM / Camera / mypicname.в формате JPEG

например, предположим, что вы хотите сохранить свои фотографии в каталоге / Pictures, а именно в каталоге Pictures, который существует в корневом каталоге. Таким образом, вы используете приведенный ниже код.

если вы хотите сохраните изображения в каталоге DCIM или Downloads, приведите приведенные ниже аргументы для среды.getExternalStoragePublicDirectory() метод, показанный выше.

затем укажите свое имя изображения:

затем создайте объект file, как показано ниже. Суффикс указывается в качестве 2-го аргумента.

г-н дорогие игрушки сказал: Я поражен, что эта проблема все еще появляется, поскольку она начала происходить еще в Honeycomb.

Итак, /storage / emulated/0 / DCIM / Camera-это та же папка, что и ваша обычная папка DCIM/Camera. Его просто симлинк. Таким образом, файлы находятся в правильном месте, у вас просто есть приложение, которое помещает плохие данные в базу данных MediaStore.

при доступе к файлам с вашего ПК вы фактически перечисляете базу данных MediaStorage для файлов. Его не тянет традиционные списки каталогов. То, что вы видите, основано на том, что находится в этой базе данных и записях пути в базе данных. Файлы в базе данных, указывающие на эмулированные каталоги, не отображаются, поскольку они считаются дубликатами, поскольку их физический каталог совпадает с обычным DCIM/Camera. Что происходит, так это то, что некоторые плохо написанные сторонние приложения вставляем записи в базу данных с/storage/emulated/0/DCIM / Camera path вместо правильного корневого пути к DCIM / Camera. Это означает, что служба MTP не может видеть их, когда вы подключены к компьютеру.

обычно самый простой способ решить проблему - просто очистить базы данных MediaStore, чтобы получить плохие записи из базы данных MediaStore и позволить системе переиндексировать файлы и поместить в базу данных с правильными путями.

Настройки->Приложения Удар 3 точечное меню в правом верхнем углу и выберите Показать систему Найдите хранилище носителей, выберите его, выберите Хранилище, затем очистите данные Найдите внешнее хранилище, выберите его, выберите Хранилище, затем очистите данные Выключите телефон, снова включите телефон, подождите, пока служба индексатора восстановит данные.

когда вы закончите, файлы должны отображаться с соответствующим деревом каталогов и быть видны с ПК. В зависимости от количества файлов на телефоне восстановление базы данных мультимедиа в качестве службы может занять 10-20 минут ходит телефонных справочников, получение мета-данных, создания эскизов и др.

Я недавно потерял содержимое карты micro-SD и не резервное копирование содержимого в последнее время достаточно. К счастью, я заметил, что фотографии, которых мне не хватало, оказались в /storage / emulated/0/DCIM/.эскизы на устройстве Android 5.1. Печально то, что я не могу добраться до этих файлов, чтобы сделать что-нибудь с ними на моем устройстве. Единственный способ, которым я даже знал, что они там, - это то, что файловый менеджер ASTRO поднял их, когда я искал фотографии. Я хотел бы быть в состоянии поставить их в безопасное место и надеялся сделать это через мой компьютер. Кто-нибудь знает способ заставить мой компьютер (Windows 7) распознать этот файл? (Естественно, я сказал своему компьютеру просматривать скрытые файлы, так что это не проблема.) Все, что я вижу /Внутренняя память и SD-карта (не для хранения). Если у вас есть обходной путь, пожалуйста, дайте мне знать тоже. Если бы я мог переместить (или еще лучше скопировать) эти фотографии в другое место на своем телефоне, а затем переместить их, это было бы абсолютно замечательно.

папка "/storage/emulated / " на самом деле не существует. Это то, что можно назвать "символической ссылкой", или, проще говоря, ссылкой на то, где хранятся реальные данные. Вам нужно будет найти фактическое физическое местоположение на вашем устройстве, где оно хранится. Так как он находится в /storage / emulated/0/DCIM/.миниатюры, вероятно, находятся в /Internal Storage/DCIM/.ноготь большого пальца./ Обратите внимание, что эта папка, вероятно, содержит только "эскизы", которые являются очень маленькими версиями реальных файлов. Возможно, ваши реальные файлы ушли навсегда, если ваша SD-карта неисправима.

изменить: "Никогда Не Говори Никогда" Ссылка на самом деле относится к эмулированной SD-карте на вашем устройстве. Получите доступ к данным "сразу" * как карта СД, и вы будете иметь доступ ко всем данным на этой карте. * Файл "приложение" Airdroid позволит это. И, если память служит, то доступ через кабель данным по USB будет также.

Я мог бы восстановить мои файлы, перейдя в " Настройки - > хранение и usb - > изображения - > камера. Там, если вы выберете фотографию, то правое верхнее меню изменится на "Выбрать все" и "копировать в"..". Сначала выберите все, а затем скопировать в папку, как "загрузки" или какой виден в проводнике. После копирования в нужную папку. Скопируйте из этой папки в папку компьютеры.

у меня была аналогичная проблема, только папке не начинаться с . . То, что решило для меня было сброс Media Manager.

на Settings -> Apps , убедится Show System проверяется в меню, искать Media Store или что-то подобное, нажмите на него и Clear Data . Затем перезагрузите телефон и подождите, пока Media Store восстановит себя.

перестройка занимает несколько минут. вы можете проверить сделано ли оно путем контролировать использование данных в этих же место, где вы его очистили. Как только он перестает расти в течение нескольких минут, это делается. Например, мой остановился на 21 МБ.

Скачивая файлы на своем Андроид смартфоне или планшете, многие пользователи сталкиваются с тем, что они не могут найти скачанный файл. Они просто не знают, куда скачиваются файлы на Андроид. В этом материале мы постараемся решить эту проблему.

Если коротко, то на Андроид файлы скачиваются в папку Download. А место расположения этой папки может меняться в зависимости от прошивки вашего Андроид устройства. Например, папка Download может размещаться по одному из адресов:

  • mnt/sdcard/download
  • storage/emulated/0/download

Для того чтобы найти данную папку установите хороший файловый менеджер. Например, такой как AntTek Explorer Ex.


Если скачанных файлов нет в папке Download, то возможно программа, с помощью которой вы скачивали, сохранила файлы в другую папку. Откройте программу и войдите в ее настройки. Возможно, там будет указана папка для сохранения скачанных файлов. Например, в веб-браузере Dolphin для того чтобы сменить папку для сохранения скачанных файлов необходимо открыть: Настройки – Конфиденциальность и персональные данные – Загрузить директорию.

Кроме этого, нередко в самой программе можно посмотреть список файлов, которые были скачаны. Например, такая функция есть в веб-браузерах Dolphin и Firefox.



Есть чем дополнить материал? Расскажите об этом в комментариях.

Терминология

Гугл нам говорит, что есть следующие понятия:

  1. Внутренняя (internal) память — это часть встроенной в телефон карты памяти. При ее использовании по умолчанию папка приложения защищена от доступа других приложений (Using the Internal Storage).
  2. Внешняя (external) память — это общее «внешнее хранилище», т.е. это может быть как часть встроенной памяти, так и удаляемое устройство. Обычно это часть встроенной памяти, как удаляемое устройство я видел в последний раз на андройде 2.2, где встроенная память была около 2Гб, и подключаемая память становилась внешней (Using the External Storage).
  3. Удаляемая (removable) память — все хранилища, которые могут быть удалены из устройства без «хирургических» вмешательств.

До версии KitKat 4.4 API не предоставляло функционала для получения путей к внешней памяти. Начиная с этой версии (API 19) появилась функция public abstract File[] getExternalFilesDirs (String type), которая возвращает массив строк с путями к внутренней и внешней памяти. Но как же быть с нашей SD Card, которая вставлена в слот? Путь к ней мы опять не можем получить.

Результаты поиска

Чтобы ответить на поставленный вопрос я обратился к всезнающему гуглу. Но и он мне не дал четкого ответа. Было рассмотрено множество вариантов определения от использования стандартных функций, которые ведут к внешней памяти, но ничего общего с удаляемыми устройствами хранения данных они не имеют, до обработки правил монтирования устройств (Android же на ядре Linux работает). В последних случаях были использованы «зашитые» пути к папке с примонтироваными устройствами (в различных версиях эта директория разная). Не стоит забывать, что от версии к версии правила монтирования меняются. В конечном итоге я решил объединить все полученные знания и написал свой класс, который может нам вернуть пути к внешним и удаляемым устройствам.

Описание кода

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

И был создан класс StorageHelper, который и осуществляет поиск доступных карт памяти. В классе StorageHelper реализовано два способа поиска — через системное окружение (Environment) и с использованием утилиты Linux mount, а точнее результата ее выполнения.

Способ первый — Environment

Вариант решения взят со stackoverflow. Ответ где-то там внизу.

Способ второй — mount
Про дублирование

Многие замечали в директории монтирования устройств такую картину:

И что самое интересно, все это одна и та же внешняя карта памяти. Такое дробление начинается с версии Jelly Bean и сделано это для поддержки многопользовательского режима работы системы. Более подробно тут. И вот, чтобы не получать одну и туже карту памяти как различные устройства, необходим способ определения идентичности. Если бы был доступ к конфигурации монтирования, то и вопросов не было. Но доступа нет. Поэтому я тут подсмотрел решение с расчетом хэша для каждого устройства:

  1. создаем StringBuilder
  2. записываем в него общий размер устройства и размер используемого пространства устройства
  3. обходим содержимое корня устройства
  4. записываем имя каталога
  5. записываем имя файла и размер
  6. вычисляем hash

Своя функция расчета хэша calcHash

Пример использования

Заключение

Подробные рассуждения по этому вопросу понимания памяти в Android, некоторые советы можно прочитать тут. Исходный код всего класса расположен еще нигде не расположен. На днях постараюсь разместить на gitHub. Кто еще какими способами пользуется? UPD1: Исходный код класса на bitbucket 173 237.3k 173

Как найти папку storage на Андроид?

Опишите причину своей жалобы

Распаковал архив в storage и не могу найти указаный путь

как найти папку /storage/sdcard0/ на Android?

Это вообще-то не папка, storage это хранилище общее, включает в себя память устройства, внутреннюю память и внешнюю карту памяти.Потому и пишет storage/SDcard 0/а дальше уже папки. Вы распаковать наверное в sdcard 0, там и надо искать, а может в sdcard1 смотря куда направили.

Для того, чтобы было все понятно с этим, достаточно установить любой файловый менеджер, например Тотал Коммандер, а вот в нем уже можно увидеть, что папка storage/sdcard0 находится вот здесь:

Распаковывать архивы и добавлять другие файлы следует в одно из этих расположений, а вот просто в корень файловой системы их не рекомендуется помещать.

На самом деле storage в android это не папка а раздел который включает в себя реальные карты памяти, как внутреннюю так и флеш память (SD). А когда прописывается путь к какому то файлу то в начале указывается storage.

3 ответа

Папка «/storage /emulated /» на самом деле не существует. Это то, что можно назвать «символической ссылкой» или, проще говоря, ссылкой на то, где хранятся реальные данные. Вам нужно будет найти фактическое физическое местоположение на вашем устройстве, где оно хранится. Поскольку он находится в /storage/emulated/0/DCIM/.thumbnails, он, вероятно, находится в /Internal Storage /DCIM /.thumbnails /. Обратите внимание, что эта папка, вероятно, содержит только «миниатюры», которые представляют собой очень маленькие версии реальных файлов. Возможно, ваши настоящие файлы ушли навсегда, если ваша SD-карта невосстановима.

ответил phyrfox 3 августа 2015, 06:22:20 3

Я мог бы восстановить мои файлы, перейдя в «Настройки -> Хранение и usb -> Изображения -> Камера. Если вы выберете фотографию, то в правом верхнем меню изменится значение« Выбрать все »и« Копировать в .. »Сначала выберите все, затем скопируйте в папку« Загрузка »или в зависимости от того, что видно в проводнике. После копирования в нужную папку Скопируйте из этой папки в папку« Компьютеры ».

ответил The Analyst 12 июня 2016, 17:28:39 1

У меня была аналогичная проблема, только папка не начиналась с . . Что для меня решило сбросить Media Manager.

Перейдите в Settings -> Apps , убедитесь, что Show System проверяется в меню, ищите Media Store или что-то в этом роде, щелкните по нему и Clear Data . Затем перезагрузите телефон и подождите, пока Media Store не восстановит себя.

Перестройка занимает несколько минут. Вы можете проверить, выполняется ли это путем мониторинга использования данных в том же месте, где вы его очистили. Как только он перестает расти в течение пары минут, это делается. Например, мой остановился на 21 МБ.

ответил André Chalella 6 марта 2017, 05:09:28

Похожие вопросы

Популярные теги


После этого скачиваем интересующий вас файл из Интернета. Как правило, его можно открыть, просто нажав на уведомление, однако если по какой-либо причине оно свернулось, а файл открыть всё же нужно, на помощь придет файловый менеджер. Поможет он и просто в том случае, если кто-то из ваших друзей перекинул документ на ваш смартфон с помощью USB-кабеля. Тогда вопрос «Где же он находится?» станет самым актуальным.

Все скачанные из Интернета файлы хранятся в папке «Download». Для её открытия вам требуется открыть файловый менеджер, затем найти в каталогах данную папку. После этого вы сможете открыть любой скачанный ранее файл, в том числе установочный *.apk, *.zip и так далее.

В случае, если вам неизвестно, где именно сохранился ваш файл, вы можете произвести поиск, нажав на иконку лупы в приложении, речь не идет именно о Cabinet. С тем же успехом можно использовать и ES Проводник, например.

Хотим обезопасить пользователей от случайных действий. Так как память смартфонов разделена на два раздела: системная и внутренняя, есть риски удаления системных файлов, что приведет к некорректной работе смартфона. Для их удаления вам потребуются Root-права, однако возможны и случаи, когда Root-доступ имеется, а сам пользователь об этом и понятия не имеет.

Таким образом, мы научились находить скачанные из Интернета файлы. Предлагаем поддержать неопытных пользователей и прокомментировать статью, добавив свои дополнения.

Читайте также: