从Android设备向PC传输CSV文件
我有一个使用以下方法生成csv文件的应用程序从Android设备向PC传输CSV文件,android,file-transfer,android-file,Android,File Transfer,Android File,我有一个使用以下方法生成csv文件的应用程序 protected void makeCsvFileTrackLog() { final String CSV_SEPARATOR = ","; System.out.println("startMakeFile"); Date T = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHH
protected void makeCsvFileTrackLog() {
final String CSV_SEPARATOR = ",";
System.out.println("startMakeFile");
Date T = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String szDateTime = sdf.format(T);
SimpleDateFormat date = new SimpleDateFormat("yyyyMMdd");
String szDate = date.format(T);
//creates /flightData directory on device if not created yet...
File appDir = new File(Environment.getExternalStorageDirectory(), "flightData");
appDir.mkdir();
//creates new file if needed for sampling date
File exportDir = new File(Environment.getExternalStorageDirectory(), "flightData/" + szDate);
exportDir.mkdir();
try {
File csvSandboxFile = new File(Environment.getExternalStorageDirectory() + "/flightData/" + szDate, "TracklogDB_" + szDateTime + ".csv");
csvSandboxFile.createNewFile();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvSandboxFile), "UTF-8"));
DBAdapter msdb = new DBAdapter(getApplicationContext(), szDbName, null);
db = msdb.getWritableDatabase();
Cursor c = db.rawQuery("SELECT * FROM trackLogDB", null);
StringBuffer sb = new StringBuffer();
...
} catch (IOException e) {
Log.e("IOException", "exception in createNewFile() method");
}
System.out.println("endMakeFile");
}
这构建文件没有问题。然而,当技术人员和普通用户试图将数据从设备转移到PC上时,就会出现问题。我们的大多数设备都运行Android版本7或8。PC是当前的Linux或Win10。为了卸载数据,android设备必须在连接到PC之前重新启动。一旦连接,用户选择通过android设备上的USB传输文件。如果电脑是Win10,他们必须等待Windows操作系统正确检测Android设备。然后,他们必须浏览到设备上CSV文件所在的目录。但是,在他们刷新之前,新创建的CSV文件在目录中“通常”不可见。有时,一个简单的刷新工作,在其他时候,目录必须关闭和重新打开
问题#1:在Android应用程序方面,我可以做些什么来让我的CSV文件更容易被发现
问题#2:我能对windows或Linux设备做些什么来帮助他们找到Android设备上的文件吗
注意:这些CSV不包含“私有”数据。尽管你有问题,我还是会给你一个建议,为什么你不在你的应用程序中启动一个http服务器,这样人们就可以从wifi下载文件(当然,pc和手机必须连接到同一个网络)您可以使用Fetch库,它实际上是一个下载管理器库,但它也提供了一个http文件服务器。使用这种方法,他们不需要usb电缆连接,并且遭受MTPThanks为Amim建议带来的所有问题。好的,有道理。但是,如果我们请求访问“他们的”wifi,我们的IT安全人员将失去理智。
这构建文件没有问题。
难以置信,因为文件appDir=new文件(Environment.getExternalStorageState(),“flightData”)
不能是有效的目录,您可以使用appDir.exists()和mkdir()的返回值轻松检查。只有当目录不存在时,您才应该调用mkdir()。根据pc上的资源管理器,文件位于哪个目录?根据Android设备上的文件管理器,在哪个目录下。我仍然不能相信你的代码能工作..糟糕的代码,你调用了新文件(Environment.getExternalStorageState()..
三次。你应该只调用一次。它应该是getExternalStorageDirectory()
。