如何访问 /storage/emulated/0/

44

我已经编写了一个代码来记录音频并将其保存到以下文件位置。

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卡中找到这个文件位置。如何获取这个位置?


你需要安装文件管理器并找到AudioRecorder文件夹。 - Hiren Patel
对于希望从外部访问目录的人(例如 Android 设备监视器),请参见此处 - BlueRaja - Danny Pflughoeft
很遗憾,这个问题没有明确指定文件是应该通过手机应用程序还是连接的计算机上的程序进行访问。 - PJTraill
16个回答

30

不需要第三方应用程序

我的Android 6.0允许我无需第三方应用程序便可浏览内部存储。 我只需要这样做:

  1. "设置"
  2. "存储和USB"
  3. "内部存储"
  4. [等待加载...]
  5. [滚动到最底部]
  6. "浏览"

* 因为我只是从葡萄牙语中自由翻译它们,所以这里的单词可能与标准英语版不对应。

注意:至少在我的手机上,/storage/emulated/0不对应于SD卡,而是对应于内部存储。 这种方法在我的外部卡上不起作用,但我从未尝试过在另一台手机上使用它。

希望这有所帮助!


5
那真是太糟糕了!在我的情况下,我可以在这个视图中看到照片...但是当连接到USB并在资源管理器中查看相同文件夹时,我看到的是不同的东西。谢谢,我从来没想到过这个。 - Chris Nevill
在Android 13上,这对我不起作用。设置/电池和设备护理/存储。然后只显示“内部”,并列出了用于图像、视频等的空间使用情况。但没有出现“浏览”。 - Jonathan Hartley

17

你也可以使用Android 调试桥(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>

12

插入您的设备并运行adb shell,这将在您的设备上获得一个命令行。您没有权限读取/storage/emulated/,但是由于您知道它在子目录0中,只需执行cd /storage/emulated/0,然后您就能够浏览和交互如预期。

注意: 您也可以使用无线方式使用adb


是的,我已经执行了上述操作,现在我在提示符127|shell@pplus:/storage/emulated/0 $处。我应该如何“四处浏览和交互”?我偶然发现cd作为一个改变目录的命令,所以我尝试了cd data。/system/bin/sh: cd: /storage/emulated/0/data: 没有那个文件或目录。 - DSlomer64
我刚试了一下,感觉可能会发生两件事情。你是否执行了 ls 命令并确保 data/ 文件夹在其中。同时尝试使用 /storage/emulated/1 - FrickeFresh

11

正如Hiren所说,您需要一个文件浏览器来查看您的目录。 如果您已经root了设备,我强烈建议使用Root Explorer,否则ES File Explorer是一个不错的选择。


谢谢。我能够使用蓝牙文件传输浏览器找到它。对这个答案点赞。 - nerdy_me
3
那么,“文件管理器”在安卓上处理文件的默认应用程序不能访问那个文件夹吗? - Lealo
1
ES文件浏览器在我的Android 7上没有显示此目录。 - Jasper Citi
ES文件浏览器曾经是一款很棒的应用,但不幸的是,谷歌已将其移除:https://www.androidpolice.com/2019/04/27/es-file-manager-vanishes-from-play-store-possibly-part-of-do-global-scandal/ - rkagerer
在Android 13上,我无法使用任何文件浏览器(如Google Files、Samsung MyFiles、SolidExplorer2)访问此位置。它们都会显示权限错误。 - Jonathan Hartley

4
尝试一下。
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");
}

3
在模拟器中,要查看此文件,请点击“设置”>“存储”>“其他”>“Android”>“data”>“com.companyname.textapp”>“file”>“Download”。这里,textapp是您正在使用的应用程序的名称。

3

https://productforums.google.com/forum/#!msg/nexus/WIcHUNQfRLU/ALpViG86AwAJ

昂贵的玩具先生说: 很惊讶这个问题仍然存在,因为它最早在蜂窝网络时代就开始出现了。

所以,/storage/emulated/0/DCIM/Camera是与您正常的DCIM/Camera文件夹相同的文件夹。它只是一个符号链接。因此,文件实际上位于正确的位置,只是您有一个将错误数据放入MediaStore数据库中的应用程序。

当从计算机访问文件时,您实际上正在枚举媒体存储库以获取文件。它不会拉取传统的目录列表。因此,您看到的是基于该数据库中的内容和路径条目的内容。指向模拟目录的数据库中的文件不会显示,因为它们被认为是重复项,因为它们与您正常的DCIM/Camera相同的物理目录。发生的情况是一些编写不良的第三方应用程序正在插入带有/storage/emulated/0/DCIM/Camera路径而不是DCIM/Camera根路径的条目到数据库中。这意味着当您连接到计算机时,MTP服务无法看到它们。

通常,解决问题的最简单方法是清除MediaStore数据库,以将错误条目从MediaStore数据库中删除,并让系统重新索引文件并将其放入具有正确路径的数据库中。

设置->应用程序 点击右上角的3点菜单,选择显示系统 找到媒体存储,选择它,选择存储,然后清除数据 找到外部存储,选择它,选择存储,然后清除数据 关闭手机,重新打开手机,等待索引器服务重建数据。

完成后,文件应该显示正确的目录树,并且可以从计算机中看到。根据手机上的文件数量,重建媒体数据库可能需要10-20分钟,因为服务遍历手机目录、获取元数据、创建缩略图等。


3

Android建议您调用Environment.getExternalStorageDirectory.getPath()而不是在路径名中硬编码/sdcard/。这将返回主共享/外部存储目录。因此,如果存储被模拟,则会返回/storage/emulated/0。如果您使用文件浏览器探索设备存储,则该目录将为/mnt/sdcard(在运行Android 6的Xperia Z2上经过确认)。


没错,在Android 5.0(棒棒糖,API 21)上,我可以通过adb pull /mnt/sdcard/AudioRecording.3gp .获取一个文件,其路径由Environment.getExternalStorageDirectory().getAbsolutePath() + "/AudioRecording.3gp"语句设置。 - user3405291

2

这里,它被发现在/mnt/shell/emulated/0


1

从这里开始尝试

ftp://ip_my_s5:2221/mnt/sdcard/Pictures/Screenshots

指向 /storage/emulated/0 的点


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接