Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Android设备向PC传输CSV文件_Android_File Transfer_Android File - Fatal编程技术网

从Android设备向PC传输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

我有一个使用以下方法生成csv文件的应用程序

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()