已创建 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 在此答案下方的评论中。
我的代码在特定目录中创建了一个 .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 在此答案下方的评论中。