如何访问 /storage/emulated/0/
How to access /storage/emulated/0/
我写了一段代码来录制音频并将其保存到下面的文件位置。
private String getFilename() {
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath, AUDIO_RECORDER_FOLDER);
if (!file.exists()) {
file.mkdirs();
}
return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + file_exts[currentFormat]);
}
在 Logcat 中,它给了我一个文件位置
/storage/emulated/0/AudioRecorder/1436854479696.mp4
我无法在我的 SD 卡上找到此文件位置。如何访问该位置?
试试这个
private String getFilename() {
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath + "/AudioRecorder" );
if (!file.exists()) {
file.mkdirs();
}
return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + ".mp4");
}
正如 Hiren 所说,您需要一个文件资源管理器才能查看您的目录。如果你是 root 用户,我强烈建议你使用 root explorer,否则 ES File Explorer 是一个不错的选择。
无需第三方应用
我的 Android 6.0 允许我浏览实习记忆而不需要第三方应用程序。我只是这样做*:
- "Settings"
- "Storage and USB"
- "Intern"
- [稍微加载一下...]
- [一直向下滚动]
- "Browse"
* 单词可能与标准英文版本不对应,因为我只是从葡萄牙语随意翻译它们。
注意:至少在我的phone中,/storage/emulated/0
不对应SD卡,而是intern memory。此方法不适用于我的外接卡,但我从未在另一张 phone.
上尝试过
希望对您有所帮助!
如果您正在使用 Android 设备监视器和 android 模拟器:我已经通过以下方式访问:
Data/Media/0/
Xamarin Android
使用命令
//获取文件目录
Image image =new Image() { Source = file.Path };
然后在指挥
adb pull //这里是图片文件路径
插入您的设备,然后 运行 adb shell
将在您的设备上为您提供命令 shell。您没有读取 /storage/emulated/
的权限,但因为您知道它位于子目录 0 中,所以只需转到 cd /storage/emulated/0
,您就可以环顾四周并按方面进行交互。
注意:您也可以无线使用adb
在模拟器中,要查看此文件,请单击“设置”>“存储”>“其他”>Android>“数据”>com.companyname.textapp>“文件”>“下载”。
此处,textapp 是您正在使用的应用程序的名称。
从
开始尝试
ftp://ip_my_s5:2221/mnt/sdcard/Pictures/Screenshots
指向/storage/emulated/0
要从 /storage/emulated/0/ 恢复您的图片,只需打开 100Andro 文件..您将在其中看到您的图片,尽管您可能无法在您的电脑资源管理器中访问它们。一张一张打开每张图片,继续设置(三个点..)并保存图片。它将显示在 android 文件 'Pictures' 中,您也可以从那里使用资源管理器复制它们。没有 'save all' 功能,但是必须一项一项完成,但它有效。
QT
在这里,它位于 /mnt/shell/emulated/0
在我的例子中,/storage/emulated/0/ 对应于我设备的根路径。例如,当我使用 phone 的默认相机应用程序拍照时,图像会自动保存 /store/emulated/0/DCIM/Camera/mypicname.jpeg
例如,假设您要将图片存放在/Pictures目录下,即根目录下的Pictures目录下。所以你使用下面的代码。
File storageDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES );
如果您想将图像保存在 DCIM 或下载目录中,请为上面显示的 Environment.getExternalStoragePublicDirectory() 方法提供以下参数。
Environment.DIRECTORY_DCIM
Environment.DIRECTORY_Downloads
然后指定您的图像名称:
String imageFileName = "JPEG_" + timeStamp + "_";
然后如下所示创建文件对象。您将后缀指定为第二个参数。
File image = File.createTempFile(
imageFileName, // prefix
".jpg", // suffix
storageDir // directory
);
https://productforums.google.com/forum/#!msg/nexus/WIcHUNQfRLU/ALpViG86AwAJ
昂贵的玩具先生说:
很惊讶这个问题仍然出现,因为它早在 Honeycomb 就开始发生了。
因此,/storage/emulated/0/DCIM/Camera 与普通 DCIM/Camera 文件夹是同一个文件夹。它只是一个符号链接。所以这些文件实际上位于正确的位置,您只是有一个将错误数据放入 MediaStore 数据库的应用程序。
从您的 PC 访问文件时,您实际上是在为文件枚举 MediaStorage 数据库。它不拉一个传统的目录列表。因此,您所看到的是基于该数据库中的内容和数据库中的路径条目。数据库中指向模拟目录的文件没有显示,因为它们被认为是重复的,因为它与正常的物理目录相同 DCIM/Camera。发生的事情是一些编写不当的第三方应用程序使用 /storage/emulated/0/DCIM/Camera 路径而不是 DCIM/Camera 的正确根路径将条目插入到数据库中。这意味着当您连接到您的 PC 时,MTP 服务看不到它们。
通常解决问题的最简单方法是清除 MediaStore 数据库以从 MediaStore 数据库中取出错误的条目,让系统重新索引文件并使用正确的路径放入数据库。
设置->应用
点击右上角的三点菜单和 select 显示系统
找到媒体存储,Select 它,Select 存储,然后清除数据
找到外部存储,Select它,Select存储,然后清除数据
关闭 phone,重新打开 phone,等待索引器服务重建数据。
完成后,文件应该会显示正确的目录树,并且可以从 PC 上看到。根据 phone 上的文件数量,重建媒体数据库可能需要 10-20 分钟,因为服务遍历 phone 目录、获取元数据、创建缩略图等。
Android 建议您在路径名中调用 Environment.getExternalStorageDirectory.getPath()
而不是硬编码 /sdcard/
。这 return 是主要的 shared/external 存储目录。因此,如果模拟存储,这将 return /storage/emulated/0
。如果您使用文件资源管理器浏览设备存储,则该目录将为 /mnt/sdcard
(已在 Xperia Z2 运行 Android 6 上确认)。
您还可以使用 Android Debug Bridge (adb) 将文件从 Android 设备复制到您 PC 上的文件夹:
adb pull /storage/emulated/0/AudioRecorder/1436854479696.mp4 <folder_on_your_PC_e.g. c:/temp>
并且您可以从设备整个 AudioRecorder
文件夹复制:
adb pull /storage/emulated/0/AudioRecorder <folder_on_your_PC_e.g. c:/temp>
使用设备文件资源管理器查看设备上的文件
https://developer.android.com/studio/debug/device-file-explorer
如果您在 Mac 上的 Android Studio 中使用模拟器,您可以前往 View -> Tool Windows -> Device File Explorer
。这里可以使用finder-like结构。
我写了一段代码来录制音频并将其保存到下面的文件位置。
private String getFilename() {
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath, AUDIO_RECORDER_FOLDER);
if (!file.exists()) {
file.mkdirs();
}
return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + file_exts[currentFormat]);
}
在 Logcat 中,它给了我一个文件位置
/storage/emulated/0/AudioRecorder/1436854479696.mp4
我无法在我的 SD 卡上找到此文件位置。如何访问该位置?
试试这个
private String getFilename() {
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath + "/AudioRecorder" );
if (!file.exists()) {
file.mkdirs();
}
return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + ".mp4");
}
正如 Hiren 所说,您需要一个文件资源管理器才能查看您的目录。如果你是 root 用户,我强烈建议你使用 root explorer,否则 ES File Explorer 是一个不错的选择。
无需第三方应用
我的 Android 6.0 允许我浏览实习记忆而不需要第三方应用程序。我只是这样做*:
- "Settings"
- "Storage and USB"
- "Intern"
- [稍微加载一下...]
- [一直向下滚动]
- "Browse"
* 单词可能与标准英文版本不对应,因为我只是从葡萄牙语随意翻译它们。
注意:至少在我的phone中,/storage/emulated/0
不对应SD卡,而是intern memory。此方法不适用于我的外接卡,但我从未在另一张 phone.
希望对您有所帮助!
如果您正在使用 Android 设备监视器和 android 模拟器:我已经通过以下方式访问:
Data/Media/0/
Xamarin Android
使用命令 //获取文件目录
Image image =new Image() { Source = file.Path };
然后在指挥 adb pull //这里是图片文件路径
插入您的设备,然后 运行 adb shell
将在您的设备上为您提供命令 shell。您没有读取 /storage/emulated/
的权限,但因为您知道它位于子目录 0 中,所以只需转到 cd /storage/emulated/0
,您就可以环顾四周并按方面进行交互。
注意:您也可以无线使用adb
在模拟器中,要查看此文件,请单击“设置”>“存储”>“其他”>Android>“数据”>com.companyname.textapp>“文件”>“下载”。 此处,textapp 是您正在使用的应用程序的名称。
从
开始尝试ftp://ip_my_s5:2221/mnt/sdcard/Pictures/Screenshots
指向/storage/emulated/0
要从 /storage/emulated/0/ 恢复您的图片,只需打开 100Andro 文件..您将在其中看到您的图片,尽管您可能无法在您的电脑资源管理器中访问它们。一张一张打开每张图片,继续设置(三个点..)并保存图片。它将显示在 android 文件 'Pictures' 中,您也可以从那里使用资源管理器复制它们。没有 'save all' 功能,但是必须一项一项完成,但它有效。
QT
在这里,它位于 /mnt/shell/emulated/0
在我的例子中,/storage/emulated/0/ 对应于我设备的根路径。例如,当我使用 phone 的默认相机应用程序拍照时,图像会自动保存 /store/emulated/0/DCIM/Camera/mypicname.jpeg
例如,假设您要将图片存放在/Pictures目录下,即根目录下的Pictures目录下。所以你使用下面的代码。
File storageDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES );
如果您想将图像保存在 DCIM 或下载目录中,请为上面显示的 Environment.getExternalStoragePublicDirectory() 方法提供以下参数。
Environment.DIRECTORY_DCIM
Environment.DIRECTORY_Downloads
然后指定您的图像名称:
String imageFileName = "JPEG_" + timeStamp + "_";
然后如下所示创建文件对象。您将后缀指定为第二个参数。
File image = File.createTempFile(
imageFileName, // prefix
".jpg", // suffix
storageDir // directory
);
https://productforums.google.com/forum/#!msg/nexus/WIcHUNQfRLU/ALpViG86AwAJ
昂贵的玩具先生说: 很惊讶这个问题仍然出现,因为它早在 Honeycomb 就开始发生了。
因此,/storage/emulated/0/DCIM/Camera 与普通 DCIM/Camera 文件夹是同一个文件夹。它只是一个符号链接。所以这些文件实际上位于正确的位置,您只是有一个将错误数据放入 MediaStore 数据库的应用程序。
从您的 PC 访问文件时,您实际上是在为文件枚举 MediaStorage 数据库。它不拉一个传统的目录列表。因此,您所看到的是基于该数据库中的内容和数据库中的路径条目。数据库中指向模拟目录的文件没有显示,因为它们被认为是重复的,因为它与正常的物理目录相同 DCIM/Camera。发生的事情是一些编写不当的第三方应用程序使用 /storage/emulated/0/DCIM/Camera 路径而不是 DCIM/Camera 的正确根路径将条目插入到数据库中。这意味着当您连接到您的 PC 时,MTP 服务看不到它们。
通常解决问题的最简单方法是清除 MediaStore 数据库以从 MediaStore 数据库中取出错误的条目,让系统重新索引文件并使用正确的路径放入数据库。
设置->应用 点击右上角的三点菜单和 select 显示系统 找到媒体存储,Select 它,Select 存储,然后清除数据 找到外部存储,Select它,Select存储,然后清除数据 关闭 phone,重新打开 phone,等待索引器服务重建数据。
完成后,文件应该会显示正确的目录树,并且可以从 PC 上看到。根据 phone 上的文件数量,重建媒体数据库可能需要 10-20 分钟,因为服务遍历 phone 目录、获取元数据、创建缩略图等。
Android 建议您在路径名中调用 Environment.getExternalStorageDirectory.getPath()
而不是硬编码 /sdcard/
。这 return 是主要的 shared/external 存储目录。因此,如果模拟存储,这将 return /storage/emulated/0
。如果您使用文件资源管理器浏览设备存储,则该目录将为 /mnt/sdcard
(已在 Xperia Z2 运行 Android 6 上确认)。
您还可以使用 Android Debug Bridge (adb) 将文件从 Android 设备复制到您 PC 上的文件夹:
adb pull /storage/emulated/0/AudioRecorder/1436854479696.mp4 <folder_on_your_PC_e.g. c:/temp>
并且您可以从设备整个 AudioRecorder
文件夹复制:
adb pull /storage/emulated/0/AudioRecorder <folder_on_your_PC_e.g. c:/temp>
使用设备文件资源管理器查看设备上的文件
https://developer.android.com/studio/debug/device-file-explorer
如果您在 Mac 上的 Android Studio 中使用模拟器,您可以前往 View -> Tool Windows -> Device File Explorer
。这里可以使用finder-like结构。