如何显示Android设备SD卡目录下的所有文件名列表?

问题描述 投票:0回答:1

在我的 Android 原生 Java 项目中,我有一个类,我想在其中显示这些文件夹内所有 SD 卡目录和文件名的日志。

代码如下:

public class LogFileListActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_log_file_list);

        // Get the root directory of the SD card
        File rootDirectory = Environment.getExternalStorageDirectory();

        // Log all files in the root directory
        logFiles(rootDirectory);

        // Log files in the "Podcasts" folder
        logFilesInPodcasts();

    }


    private void logFiles(File directory) {
        if (directory.exists() && directory.isDirectory()) {
            File[] files = directory.listFiles();

            if (files != null) {
                for (File file : files) {
                    Log.e("##FILE_INFO", "File Name: " + file.getName() + ", File Path: " + file.getAbsolutePath());
                }
            }
        }
    }


    private void logFilesInPodcasts() {
        // Get the "Podcasts" folder
        File podcastsFolder = new File(Environment.getExternalStorageDirectory(), "Download");

        // Log files in the "Podcasts" folder
        logFiles(podcastsFolder);
    }

}

现在的问题是:

不是显示SD卡的目录,而是显示sdk_gphone64_x86_64下的文件夹。 另一个问题 - 它正在记录到子目录,但不显示其下的文件名列表。所以,我需要一个解决方案来获取每个目录下的所有文件名。

我想要一个可以在设备的任何目录中查看所有文件列表的解决方案。我怎样才能做到这一点?

java android path android-sdcard
1个回答
0
投票

这可能对您有帮助:

import android.os.Bundle;
import android.os.Environment;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

import java.io.File;

public class LogFileListActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_log_file_list);

       
        File rootDirectory = Environment.getExternalStorageDirectory();

      
        logFiles(rootDirectory);

        previously)
        logFilesInDownload();
    }

    private void logFiles(File directory) {
        if (directory.exists() && directory.isDirectory()) {
            File[] files = directory.listFiles();

            if (files != null) {
                for (File file : files) {
                    if (file.isDirectory()) {
                      
                        Log.e("##FILE_INFO", "Directory Name: " + file.getName() + ", Directory Path: " + file.getAbsolutePath());
                       
                        logFiles(file);
                    } else {
                        
                        Log.e("##FILE_INFO", "File Name: " + file.getName() + ", File Path: " + file.getAbsolutePath());
                    }
                }
            }
        }
    }

    private void logFilesInDownload() {
       
        File downloadFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

       
        logFiles(downloadFolder);
    

} }

© www.soinside.com 2019 - 2024. All rights reserved.