首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将文件保存在Nexus 7的外部存储上并从PC检索

将文件保存在Nexus 7的外部存储上并从PC检索
EN

Stack Overflow用户
提问于 2013-01-16 04:21:25
回答 3查看 11K关注 0票数 5

对于我的项目,我希望能够将传感器数据保存到文件中,并能够从PC访问它以进行进一步分析。这是我到目前为止拥有的代码,它成功地工作了:

代码语言:javascript
复制
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();

问题是Nexus7实际上没有外部存储器(我相信它使用了某种模拟器,以便与大多数在代码中使用外部存储器的应用程序兼容)。

运行这段代码后,使用设备上的Astro文件管理器,我在四个位置看到了一个"Sensor_Data.csv“文件: /sdcard、/storage/sdcard0、/storage/emulated/0和/storage/emulated/legacy。我可以在设备中使用texteditor或documentviewer打开每个文件,所有数据都在那里。

问题是,当我将Nexus7连接到PC上时,我只看到了“内部存储”,当打开它时,实际上只显示了虚拟的SD卡内容,而不是实际的内部存储,但.csv文件并不在那里。还有一个额外的目录"storage/emulated/legacy“,但是里面什么也没有,也没有"sdcard0”或"0“文件夹。当我登录"Environment.getExternalStorageDirectory().getAbsolutePath()“查看确切的路径时,我得到/storage/emulated/0

我尝试过将文件保存到其他地方的内部存储器中,但没有成功,但我宁愿将它保存在“外部存储器”中,这样应用程序就可以与大多数使用外部存储器的设备兼容。

更新,因此在使用adb拉取文件名后,结果如下:

代码语言:javascript
复制
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/

我也刚刚尝试保存到

代码语言:javascript
复制
root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

同样,我可以在Astro中的相同四个位置看到它,但当我通过Windows资源管理器并导航到downloads文件夹时,它不在那里。

EN

回答 3

Stack Overflow用户

发布于 2013-01-16 05:06:18

你有没有试过使用带有"adb pull filename“和Astro看到的完整路径名的终端?这应该是可行的,如果你自己使用它也不会太难。

票数 0
EN

Stack Overflow用户

发布于 2013-04-22 15:11:53

我也经历过这个(在我的Nexus 4上)。该文件存在于我的手机上(使用adb shell找到),但我笔记本电脑上的文件资源管理器找不到该文件。就像@billtian说的,这似乎是Nexus 4和7设备上的一个bug。我在一台旧的爱立信Xperia上试用了我的代码,在那里我可以通过我的笔记本电脑找到文件。

票数 0
EN

Stack Overflow用户

发布于 2015-11-21 14:13:54

为什么,最好不要把它发送到你的邮箱。请参见以下示例:

代码语言:javascript
复制
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"email@example.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
intent.putExtra(Intent.EXTRA_TEXT, "body text");
File root = Environment.getExternalStorageDirectory();
File file = new File(root, xmlFilename);
if (!file.exists() || !file.canRead()) {
    Toast.makeText(this, "Attachment Error", Toast.LENGTH_SHORT).show();
    finish();
    return;
}
Uri uri = Uri.parse("file://" + file.getAbsolutePath());
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Send email..."));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14346160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档