我有应用程序,我去年写了从外部设备读取数据到时间,日期和温度的字节数组。外部设备可以存储一小时的温度,并且存储了六周的温度。外部设备不断覆盖最旧的数据,所以我总是有六周的温度。我的应用程序有一个字符串数组1008长,可存储六周的温度,如下所示
private static final String[] fullDataArray = new String[1008];
我的应用程序从字节数组中读取原始数据,然后写入字符串数组的每个元素,直到它完成所有1008,如下所示,
fullDataArray[arrayCount] = (nowDataString + " Temp = " + tempString + "c");
然后在列表视图中显示字符串数组中的数据,如下所示
private void printList(){
// create array adaptor and assign array to list view
final ArrayAdapter adapter = new ArrayAdapter(this,R.layout.data_layout,R.id.textItem,fullDataArray);
setListAdapter(adapter);
}
然后我正在阅读这个列表视图,该视图有六周的日期,时间和温度数据,并手动写入excel文件以保存记录的数据。
有没有办法导出原始字节数组或字符串数组以保存我手动将所有数据复制到excel之前丢失?
我没有在此应用程序之前完成任何Android编程,因此我没有做任何事情,所以我有点生疏。
关于如何解决这个问题的任何想法或建议都将非常受欢迎。
答案 0 :(得分:0)
感谢Barns的建议。
我在手机的内部存储空间中创建了一个CSV文件,我可以将其读取到我的PC上以复制数据,无需发送电子邮件。
在API 18上的旧手机以及新手机上使用此功能,因此无法创建适用于这两种API的文件,并在下面的解决方案中找到了解决方案。
在代码中设置权限
if(Build.VERSION.SDK_INT>22){
requestPermissions(new String[] {"android.permission.WRITE_EXTERNAL_STORAGE"}, 1);
}
在清单中设置权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
创建了一个新文件并打开了输出流
File file;
FileOutputStream fos;
OutputStreamWriter myOutWriter = null;
// create file and output stream to save data to csv file
String csvFile = "Temp Log.csv";
String path = Environment.getExternalStorageDirectory() + "/Documents";
file = new File(path, csvFile);
try {
// create csv file stream
Log.d(TAG,"Creating File Stream!");
fos = new FileOutputStream(file);
myOutWriter = new OutputStreamWriter(fos);
}catch(Exception e){
e.printStackTrace();
}
使用列表视图的数据
为CSV文件创建了我的字符串String csvData = new String(dayStr + "/" + monthStr + "/" + yearStr + "," + hourStr + ":00,");
csvData = (csvData + tempString);
csvData = (csvData + "\n");
写入CSV文件
try {
myOutWriter.write(csvData);
}catch(Exception e){
e.printStackTrace();
}
关闭流
try {
// close the csv output stream
myOutWriter.close();
}catch(Exception e){
e.printStackTrace();
}
这会在创建列表视图时为每组数据的CSV文件添加一行,并将CSV文件保存到手机上的文档文件夹中。尝试了很多不同的方法来获取文档文件夹和文件的路径,但上面的一个适用于我的手机上的两个API。尝试先创建一个xml文件但是很难向它写入数据?
适合我想要的东西,节省了我很多时间,但任何改进建议都会受到赞赏。