【问题标题】:android string array nullpointerexception on older android versions较旧的android版本上的android字符串数组nullpointerexception
【发布时间】:2016-03-10 07:45:49
【问题描述】:

此代码在 android 4.4、5.0、5.1、6.0 上运行良好

 File file = new File("/storage/emulated/0//Videos/");
    String[] myFiles;
    myFiles = file.list();
    for (int i = 0; i < myFiles.length; i++) {
        File myFile = new File(file, myFiles[i]);
        myFile.delete();
 }

但是当我将它用于 android 4.0、4.1、4.2 时,我得到 java.lang.NullPointerException 引用行

for (int i = 0; i < myFiles.length; i++)

所以我尝试初始化字符串,

String[] myFiles = new String[100] //just big value

但 android studio 显示初始化程序“new String[100]”是冗余的,错误未解决。

为什么会这样?

谢谢..!

【问题讨论】:

    标签: java android


    【解决方案1】:

    File.list() 的 javadoc 说它可以返回 null。每当您调用它并正确处理它时,您应该始终检查它,除非您绝对确定它不会返回 null。

    【讨论】:

      【解决方案2】:

      这是因为您没有检查您的文件夹是否为空或没有确保您的目录包含文件

      File file = new File("/storage/emulated/0//Videos/");
      String[] myFiles;
      if (file == null) {
      
      } else {
          myFiles = file.list();
          for (int i = 0; i < myFiles.length; i++) {
              File myFile = new File(file, myFiles[i]);
               if(myFile.exists())
              myFile.delete();
          }
      }
      

      如果您想删除整个目录,则可以使用此示例方法

      public void deleteDirectory(File file) {
      if( file.exists() ) {
          if (file.isDirectory()) {
              File[] files = file.listFiles();
              for(int i=0; i<files.length; i++) {
                  if(files[i].isDirectory()) {
                      deleteDirectory(files[i]);
                  }
                  else {
                      files[i].delete();
                  }
              }
          }
              file.delete();
          }
      }
      

      【讨论】:

      • 感谢您的宝贵回复,但我仍然收到同样的错误...电话:xperia u。我在 zenfone 5、LG g3 上没有收到此错误
      • 检查此路径 /storage/emulated/0//Videos/ 因为某些设备使用 storage0
      • 我尝试了 3 种不同的删除方法,均无效。如果我尝试获取目录中的文件名,它不会显示...我已声明读取权限并写外部存储..那它可能是什么?
      • 还是 file.list() 方法不起作用?因为系统 out.println() 方法不显示文件名......?这也可能吗?
      猜你喜欢
      • 1970-01-01
      • 2015-01-03
      • 2022-01-19
      • 1970-01-01
      • 2023-01-29
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      相关资源
      最近更新 更多