Dav*_*pez 5 file-io android save android-sdcard nexus-7
对于我的项目,我希望能够将传感器数据保存到文件中,并能够从PC访问它以进行进一步分析.这是我到目前为止的代码,它成功地运行:
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();
Run Code Online (Sandbox Code Playgroud)
问题是Nexus 7实际上没有外部存储(我相信它使用某种模拟器,以便与大多数在其代码中使用外部存储的应用程序兼容.)
运行此代码后,在设备上使用Astro文件管理器,我在四个位置看到"Sensor_Data.csv"文件:/ sdcard,/ storage/sdcard0,/ storage/emulated/0和/ storage/emulated/legacy.我可以使用texteditor或documentviewer从设备中打开每一个,所有数据都在那里.
问题是当我将Nexus 7连接到PC时,我只看到"内部存储",当打开时实际上只显示虚拟SD卡内容,而不是实际的内部存储,但.csv文件不存在.还有一个额外的目录"storage/emulated/legacy",但也没有任何内容,也没有"sdcard0"或"0"文件夹.当我记录"Environment.getExternalStorageDirectory().getAbsolutePath()"以确切地看到我得到的路径/存储/模拟/ 0
我已经尝试将文件保存在内部存储中的其他位置但没有成功,但我宁愿将其保留在"外部存储"中,以便该应用程序与使用外部存储的大多数设备兼容.
更新 所以在使用adb pull filename之后是结果:
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>
Run Code Online (Sandbox Code Playgroud)
因此,唯一不起作用的位置是/storage/emulated/0/Sensor_Data.csv,即使Astro在所有四个中看到它并且LogCat显示它被保存到/ storage/emulated/0 /
也只是尝试保存到
root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
Run Code Online (Sandbox Code Playgroud)
再次,我可以在相同的四个位置的Astro中看到它,但是当我浏览Windows资源管理器并导航到下载文件夹时,它不存在.
| 归档时间: |
|
| 查看次数: |
10885 次 |
| 最近记录: |