在我的应用程序创建的外部目录中找不到该文件

我无法找到一个.csv文件,该文件是在将我的Android设备连接到我的计算机后,在文件资源管理器中创建并写入的。在我的应用程序创建的外部目录中找不到该文件

我有WRITE_EXTERNAL_STORAGE在我的表现像这样:

public void exportDatabase() { 

File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

+ "/Folder");

boolean var = false;

if (!folder.exists()) {

Log.d(EXPORT_DATA_TAG, "Folder does not exist");

var = folder.mkdir();

Log.d(EXPORT_DATA_TAG, "mkdir() success? " + var);

}

CharSequence contentTitle = getString(R.string.app_name);

final ProgressDialog progDailog = ProgressDialog.show(

this, contentTitle, "Exporting data...",

true);

final Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

}

};

final String filename = folder.toString() + "/" + "LeadCapture.csv";

Log.d(EXPORT_DATA_TAG,"Writing data to file: " + filename);

new Thread() {

public void run() {

boolean success = writeData(filename);

if (success) {

handler.sendEmptyMessage(0);

Log.d(EXPORT_DATA_TAG,"Write successful to .csv");

} else {

Log.d(EXPORT_DATA_TAG,"Failed to write to .csv");

}

progDailog.dismiss();

}

}.start();

}

这需要在写功能:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我用我的主要活动此功能写入文件我的数据库帮助类:

public boolean writeData(String filename){ 

leadDatabase = openOrCreateDatabase(database_name, MODE_PRIVATE, null);

try {

FileWriter fw = new FileWriter(filename);

Cursor cursor = leadDatabase.rawQuery("select * from " + database_name, null);

fw.append("Index");

fw.append(',');

fw.append("BarcodeData");

fw.append(',');

fw.append("Notes");

fw.append(',');

fw.append('\n');

if (cursor.moveToFirst()) {

do {

fw.append(cursor.getString(0));

fw.append(',');

fw.append(cursor.getString(1));

fw.append(',');

fw.append(cursor.getString(2));

fw.append(',');

fw.append('\n');

} while (cursor.moveToNext());

}

if (cursor != null && !cursor.isClosed()) {

cursor.close();

}

fw.close();

leadDatabase.close();

return true;

} catch (Exception e) {

Log.d(DATABASE_TAG,"Error: ",e);

leadDatabase.close();

return false;

}

}

Logcat表示该文件已成功写入/storage/sdcard1/Download/Folder/LeadCapture.csv,但我无法在Downloads文件夹或任何位置找到该文件夹​​或文件。

我试图改变

File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

File folder = new File(Environment.getExternalStorageDirectory())

这导致这条道路/storage/sdcard1/Folder/LeadCapture.csv,但我仍然无法找到该文件。我非常困惑,因为在关于这个问题的大多数其他问题中,它没有WRITE_EXTERNAL_STORAGE权限,他们不知道文件路径,或者他们写入内部存储器,这里没有一个是这种情况。理论上,即使我的writeFunction()不正确,它至少应该创建一个我可以看到的空目录。有任何想法吗?

回答:

如果有其他人遇到这种情况:在设备上创建文件时出现延迟时间。 MediaScanner必须扫描新文件才能显示出来,并且只能每隔一段时间运行一次,或者设备重置时才运行。添加以下到我的应用程序,尽快触发介质扫描,因为我是做写入文件:

   String[] files = { filename }; 

MediaScannerConnection.scanFile(getApplicationContext(), files, null, null);

以上是 在我的应用程序创建的外部目录中找不到该文件 的全部内容, 来源链接: utcz.com/qa/266593.html

回到顶部