簡體   English   中英

刪除內部存儲文件夾android中的文件

[英]Deleting files in Internal Storage folder android

我是android編程的新手,我正在通過android的內部存儲進行編碼。

我已經使用下面的代碼向其中寫入了文件

File mydir = getDir("users", Context.MODE_PRIVATE); //Creating an internal dir;
        if (!mydir.exists()) {
            mydir.mkdirs();
        }

        //Getting a file within the dir.
        try {

            for (int i = 0; i < 100; i++) {
                File fileWithinMyDir = new File(mydir, "myfile" + i);
                outputStream = new FileOutputStream(fileWithinMyDir); //Use the stream as usual to write into the file.
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

該文件夾已在下創建

現在,我要刪除除一個文件之外的所有內容的“用戶”文件夾。 說我要刪除全部內容,但文件名為“文件56”的文件除外。 我用來刪除整個用戶文件夾的代碼是,

public void deleteRecursive(File fileOrDirectory) {

        if (fileOrDirectory.isDirectory()) {
            for (File child : fileOrDirectory.listFiles()) {
                deleteRecursive(child);
            }
        }

        fileOrDirectory.delete();


    } 

現在如何刪除除該特定文件以外的所有內容?

也許像這樣的快速?

public void deleteRecursiveExcept(File fileOrDirectory, ArrayList<String> ignoreNames) {
    if(ignoreNames.contains(fileOrDirectory.getName()) return;

    if (fileOrDirectory.isDirectory()) {
        for (File child : fileOrDirectory.listFiles()) {
            deleteRecursive(child);
        }
    }
    fileOrDirectory.delete();
} 

您可能可以執行以下操作:

public void deleteRecursive(File fileOrDirectory, String fileNameToBeSkipped) {
    if (fileOrDirectory.isDirectory()) {
        for (File child : fileOrDirectory.listFiles()) {
            if (fileNameToBeSkipped == null || !child.getName().equals(fileNameToBeSkipped)) {
                deleteRecursive(child);
            }
        }
    }

    fileOrDirectory.delete();
}

public void deleteRecursive(File fileOrDirectory) {
    deleteRecursive(fileOrDirectory, null);
}

並開始刪除:

deleteRecursive(getDir("users", Context.MODE_PRIVATE), "File 56");

我只是這樣做,

public void deleteRecursive(File fileOrDirectory) {

        if (fileOrDirectory.isDirectory()) {
            for (File child : fileOrDirectory.listFiles()) {
                if (child.getName().equals("myfile40")) {

                    System.out.println("File 40 - Not deleted");
                } else {
                    deleteRecursive(child);
                }
        }

        fileOrDirectory.delete();


    } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM