我無法找到一個.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()不正確,它至少應該創建一個我可以看到的空目錄。有任何想法嗎?
https://stackoverflow.com/questions/32789157/how-to-write-files-to- external-public-storage-in-android-so-that-they-are-visibl – CommonsWare
你給你閱讀權限嗎? – ABDevelopers
'var = folder.mkdir()'。如果mkdirs()失敗,則不應繼續。更好:'if(!folder.mkdir()){Toast(...);返回;}'。然後你不會抱怨你無法創建一個文件。但是一個目錄。 – greenapps