首页 > 解决方案 > 为什么使用 Android Studio 在 Java 中的文件列表数组为空?

问题描述

我正在使用带有 Java 的 Android Studio。

我编写了一种方法(即 deleteWithExtension)来从设备内部存储器中删除文件。此方法是添加一些测试文件并尝试获取这些文件的列表。

但问题是,代码永远不会进入 for 循环,因为数组 theFiles[] 返回 null。如您所见,代码以示例文件添加过程开始,因此它不应为空。我还可以在 Android Studio 的设备文件资源管理器中看到这些示例文件。

public static void CreateFile(Context mContext, String fileName, String textToBeWritten) {
    try {
        File dosya = new File(mContext.getFilesDir() + fileName);
        dosya.createNewFile();

        FileWriter fw = new FileWriter(dosya);
        BufferedWriter yazici = new BufferedWriter(fw);
        yazici.write(textToBeWritten);
        yazici.flush();
        yazici.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public static void deleteWithExtension(Context mContext, String extension) {
    //First let's add a few sample files with same extension.
    CreateFile(mContext,"SampleFile1.smp","anything1");
    CreateFile(mContext,"SampleFile2.smp","anything2");
    CreateFile(mContext,"SampleFile3.smp","anything3");
    CreateFile(mContext,"SampleFile4.smp","anything4");
    CreateFile(mContext,"SampleFile5.smp","anything5");

    //Now, 5 sample files have been added. Let get them and put in an array.
    File dir = mContext.getFilesDir();
    final String[] theFiles = dir.list();
    for (final String file : theFiles) {    
        //do something here....
        int aa=9;
        //The code never goes into here, because array theFiles is always null but 5 sample files was added at first.
    }
}

标签: androidjava-io

解决方案


如下替换 CreateFile() 方法。我希望我能帮助你。

public static void CreateFile(Context mContext, String fileName, String textToBeWritten) {
        try {
            File dosya = new File(mContext.getFilesDir() + File.separator + fileName);
            dosya.createNewFile();
    
            FileWriter fw = new FileWriter(dosya);
            BufferedWriter yazici = new BufferedWriter(fw);
            yazici.write(textToBeWritten);
            yazici.flush();
            yazici.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

推荐阅读