我使用File f = new File(s)按鈕來創建一個新文件,並保存該文件。然後使用.fileList()/ getApplicationContext()。fileList()(這兩個工作)收集'saved'文件,並將其用於for循環以保存到ArrayList,然後將其傳遞給ListView的ListAdapter。在適配器中,我設置了一個按鈕來刪除每個文件。我在代碼的每個部分放置了日誌,當我按下一個按鈕時,單獨的按鈕和文件被識別,但是在f.exists()中它總是返回null。即使列表是使用收集的文件創建的,因此文件必須存在,它始終返回null。爲什麼是這樣?我一直在嘗試調試3天!從適配器在Android上檢查文件的問題
代碼刪除(一切在適配器作品):
public void onClick(View v) {
try {
File f = new File(getChild(groupPosition, childPosition).toString());
if (f.getAbsoluteFile().exists()) {
f.delete();
Log.d("delete", f.getAbsolutePath().toString() + " is deleted!");
} else {
Log.d("delete", f.getAbsolutePath().toString() + ": doesn't exist?");
}
} catch (Exception e) {
e.printStackTrace();
}
}
編輯: 試圖以刪除數據目錄
(通過=新的文件(縣)創建的)中的所有文件String [] filenames = getApplicationContext().fileList();
if (filenames.length > 0) {
for (int i = 0; i < filenames.length; i++) {
File f = new File(filenames[i]);
Log.d("file selected:", f.getName());
Log.d("file path:", f.getAbsolutePath().toString());
if (f.exists()) {
if (f.delete()) {
Log.d("deleted:", f.getName());
} else {
Log.d("couldn't delete:", f.getName());
}
} else {
Log.d("doesn't exist:", f.getName());
}
}
}
所以這種方法在堆棧跟蹤:(+10人)
12-16 21:31:11.187: D/file selected:(1270): new_recipe
12-16 21:31:11.187: D/file path:(1270): /new_recipe
12-16 21:31:11.187: D/doesn't exist:(1270): new_recipe
12-16 21:31:11.197: D/file selected:(1270): Untitled_Recipe
12-16 21:31:11.197: D/file path:(1270): /Untitled_Recipe
12-16 21:31:11.197: D/doesn't exist:(1270): Untitled_Recipe
12-16 21:31:11.197: D/file selected:(1270): hgk
12-16 21:31:11.197: D/file path:(1270): /hgk
12-16 21:31:11.197: D/doesn't exist:(1270): hgk
AAARGH!
發佈您的'適配器'代碼 – Apoorv
發佈。 fyi文件名/ listview名稱,基本上每個文件名在整個應用程序中都是靜態的 – Ollygrov
嘗試添加一些日誌記錄並查看getChild(groupPosition,childPosition).toString()產生的內容,它是否是正確的文件路徑? – Sun