Ошибка внешнего хранения, это две ошибки, 1.ENOENT (нет такого файла или каталога) 2.Неверный путь: / storage / extSdCard

Logcat показывает ошибку в этих строках в memorymethod.Ява
все ошибки, связанные с getexternalpath()методом, который я дал ниже в memorymothod.Java-код.

StatFs statFs2 = new StatFs(getExternalPath());
public static double getExternalUsedStorage()
{
    return Double.parseDouble(getExternalTotalMemory())-Double.parseDouble(getExternalFreeMemory());
}

Вот некоторые коды от memorymethod.java :

public static String getExternalPath()
{
     String sSDpath = null;
     File   fileCur = null;
     for( String sPathCur : Arrays.asList("MicroSD", "external_SD", "sdcard1", "ext_card", "external_sd", "ext_sd", "external", "extSdCard", "externalSdCard")) // external sdcard
     {
          fileCur = new File( "/mnt/", sPathCur);
          if( fileCur.isDirectory() && fileCur.canWrite())
          {
              sSDpath = fileCur.getAbsolutePath();
              break;
          }
          if( sSDpath == null)
          {
              fileCur = new File( "/storage/", sPathCur);
              if( fileCur.isDirectory() && fileCur.canWrite())
              {
                  sSDpath = fileCur.getAbsolutePath();
                  break;
              }
          }
          if( sSDpath == null)
          {
              fileCur = new File( "/storage/emulated", sPathCur);
              if( fileCur.isDirectory() && fileCur.canWrite())
              {
                  sSDpath = fileCur.getAbsolutePath();
                  //Log.e("path",sSDpath);
                  break;
              }               
        }
        fileCur = new File( "/storage/extSdCard");
        return fileCur.getAbsolutePath();
 }

4 ответа

  1. Проверьте этот код

    String fileName="abc.txt";
    
    File file = new File(fileName);
    
    File dirAsFile = file.getParentFile();
    

    используйте этот код u получит путь файла ur с помощью внешнего или внутреннего пути хранения

  2. Используйте это, чтобы получить определенный файл

    File dir = new File (Environment.getExternalStorageDirectory().getAbsolutePath() + "/PersonData");
    File file   =   new File(dir, "Data.pdf");
    

    Здесь Данные.pdf-это имя файла, внутри моей» PersonData » именованной папки во внешнем хранилище

  3. Я надеюсь, что это поможет вам:

    public static long getExternalStorageAvailableSpace() {
        long availableSpace = -1L;
        try {
            StatFs stat = new StatFs(Environment.getExternalStorageDirectory()                .getPath());
            stat.restat(Environment.getExternalStorageDirectory().getPath());
            availableSpace = (long) stat.getAvailableBlocks() * (long) stat.getBlockSize();
        } catch (Exception e) {
            e.printStackTrace();
        }
    
        return availableSpace;
    }