已创建 android 目录但无法通过 PC usb 连接看到

Created android directory but not visible via PC usb connection

我的代码在特定目录中创建了一个 .csv 文件,当我使用 USB 电缆访问 phones 存储时,我希望 PC 可以看到该文件。

private final String SPECTRA_CSV_DIRECTORY = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Spectra_Logs";

 public void saveMeasurementToFiles(String[] data) { //ADHI 1.4.4

    if (isExternalStorageWritable()) {
        if (directoryExists(SPECTRA_CSV_DIRECTORY)) {
            try {
                File spectraLog = new File(createCSVFileName(0));
                spectraLog.createNewFile();
                FileOutputStream fos = new FileOutputStream(spectraLog, true);

                for (int i = 0; i < data.length; i++)
                    fos.write((data[i] + System.getProperty("line.separator")).getBytes());

                fos.close();
            }
            catch (FileNotFoundException e) {
                messageLogger.saveErrorToFile(SmartUtilities.getStackTrace(e), "CSV_Save_Error");
                Toast.makeText(this, "CSV Save: Error accessing file", Toast.LENGTH_SHORT).show();
            }
            catch (IOException e) {
                messageLogger.saveErrorToFile(SmartUtilities.getStackTrace(e), "CSV_Save_Error");
                Toast.makeText(this, "CSV Save: Error with data stream", Toast.LENGTH_SHORT).show();
            }
            catch (Exception e) {
                messageLogger.saveErrorToFile(SmartUtilities.getStackTrace(e), "CSV_Save_Error");
                Toast.makeText(this, "CSV Save: Unknown error occurred, check error logs", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

下面是所调用方法的一些代码,以便您了解代码的作用。

private boolean directoryExists(String path) {
    try {
        File folder = new File(path);
        boolean exists = folder.exists();

        // Check if exists, if not; create it
        if (!exists)
            exists = folder.mkdirs();

        // Check if successful
        if (exists) {
            Log.d("FILE IO:", "Spectra directory found or created successfully");
            return true;
        }
        else {
            Log.d("FILE IO ERROR:", "Spectra directory missing - cannot be resolved.");
            Toast.makeText(this, "Error: Spectra directory missing - cannot be resolved.", Toast.LENGTH_LONG);
            return false;
        }
    }
    catch (Exception e) {
        Log.d("FILE IO ERROR:", "Problem saving spectra csv to storage");
        Toast.makeText(this, "Error saving spectra csv to storage.\n\n" + e.toString(), Toast.LENGTH_LONG);
        return false;
    }
}

我已经 root 我的 phone 我可以使用 root 浏览器查看它应该在的目录(我假设)并用文本编辑器打开 .csv 文件。目录路径如下:

storage/emulated/0/Spectra_Logs

...但是当我将 phone 插入计算机时,我看不到任何 .csv 文件,这令人失望,因为我只想将这些文件导出到我的计算机上。

所以我的第一个问题是:为什么它们对 PC 不可见?

第二个问题:如何让它们可见?

我为遇到同样问题的任何人找到了解决方案。

  • 从计算机上拔下 phone
  • 转到 --- 设置 > 应用 > 应用信息
  • 使用选项显示系统应用程序
  • 设置 > 应用 > 应用信息(系统应用)> 外部存储 > 应用数据 > 存储
  • 然后按清除数据
  • 转到 --- 设置 > 应用 > 应用信息
  • 使用选项显示系统应用程序
  • 设置 > 应用 > 应用信息(系统应用)> 媒体存储 > 应用数据 > 存储
  • 然后按清除数据
  • 重启 phone
  • 将 phone 重新插入电脑
  • 设置phone传输文件(mtp)
  • updated/new 个文件夹应该可见

我不确定为什么 phone 要求您这样做,或者是否有办法在创建文件时以编程方式刷新它,但如果我发现任何进一步的信息,我会 post 在此答案下方的评论中。