3

我正在尝试从我正在编写的 Android 应用程序中一次输出一个数值,但我很难弄清楚发生了什么。试图寻找答案,但只会更加困惑。这让我觉得应该是相对简单的东西,所以我为它如此困惑而感到非常愚蠢。

String directory = Environment.getExternalStorageDirectory().getAbsolutePath();

当我登录目录时,我得到一个路径“/storage/emulated/0”那在哪里?如果我不调试,这与我得到的不同吗?

然后我有:

String fileName = directory + "/Android/data/com.sample.app/files/test.txt"
File myFile = new File(fileName);
FileOutputStream fos;
try { 
    fos = new FileOutputStream(myFile);
    String text = "Test text\n";
    fos.write(text.getBytes());
fos.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e){
    e.printStackTrace();
}       

我尝试使用 Windows 资源管理器找出保存和/或应该保存的内容,但我没有看到它。这是基于此链接中信息的代码:http: //developer.android.com/guide/topics/data/data-storage.html,但我真的不明白“/storage/emulated/0”在哪里来自以及我如何访问该位置或摆脱它。

编辑:现在我只想保存所有的数字,这样我就可以检查会出现什么。这些数字是从音频输入中记录的。

编辑:使用我手机上的 ASTRO File 应用程序显示文件不需要“/Android/data/com.sample.app/files/”部分,不知道如何使用它。

4

1 回答 1

2

路径不对?

/storage/emulated/0是文件系统中的路径,代表外部存储。在早期版本的 Android 中,我们经常拥有/mnt/sdcard/或类似的东西,但今天的许多设备没有 SD 卡,但无论如何都模拟外部存储。

要查看 Android 文件系统中的文件,我建议使用Astro File Manager之类的应用程序。看看您的文件是否已写入。

一个可能的错误可能是,您在自己的路径和本地路径File.separator之间缺少一条。directory

String fileName = directory + File.seperator + "Android/data/com.sample.app/file/test.txt"

创建目录?

您还应该通过调用确保该目录存在myDir.mkDirs();,其中myDir是没有文件名的完整路径。

要创建目录,您可以使用以下代码

directory = directory + "/Android/data/com.sample.app/file/test.txt" 
new File(directory).mkDirs();

清单中的使用权限?

最后一个错误来源可能是,您可能会错过外部存储权限,您需要一个

您还需要确保您需要写入外部存储的权限。<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />在您的 Android 清单文件中查找。

于 2013-03-24T18:18:44.423 回答