【问题标题】:Get files from a folder that I have created in Xamarin.Android从我在 Xamarin.Android 中创建的文件夹中获取文件
【发布时间】:2017-06-23 14:55:37
【问题描述】:

我想从外部存储文件夹(wall_e_imgs)中获取所有文件。这里是代码-

public void getImages()
    {
        var path1 = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath.ToString();
        string path = System.IO.Path.Combine(path1, "wall_e_imgs");
        //var files= System.IO.Directory.GetFiles(Android.OS.Environment.ExternalStorageDirectory.ToString() + "wall_e_imgs");
        //var files = System.IO.Directory.GetFiles(path);
        //string path = Android.OS.Environment.ExternalStorageDirectory.ToString() + "/wall_e_imgs";
        //File directory=new File(path);
        Java.IO.File directory = new Java.IO.File(path);
        Java.IO.File[] files = directory.ListFiles();//always count is 0 even though there are lot files there

        foreach (var i in files)
        {
            FileInfo info = new FileInfo(i.Name);
            if (info.Name.Contains("Wall_e"))
            {
                di.Add(new DownloadedImages { Path1 = info.DirectoryName, Name1 = info.FullName });
            }
        }

    }

但即使文件很多,它总是给出0个文件。

【问题讨论】:

  • 如何存储文件?
  • 您是否在清单中启用了 ReadExternalStorage 权限?
  • @SeanStayn-是的,我已启用 ReadExternalStorage 权限

标签: c# xamarin xamarin.android


【解决方案1】:

试试这个

var folder = Android.OS.Environment.ExternalStorageDirectory + Java.IO.File.Separator + "yourfoldername";
                if (!Directory.Exists(folder))
                    Directory.CreateDirectory(folder);

                var filesList = Directory.GetFiles(folder);
                foreach (var file in filesList)
                {
                    var filename = Path.GetFileName(file);
                }

【讨论】:

    【解决方案2】:

    试试这样的:

    // Use whatever folder path you want here, the special folder is just an example
    string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "wall_e_imgs");
    if (Directory.Exists(folderPath))
    {
        var files = Directory.EnumerateFiles(folderPath);
        foreach (var file in files)
        {
            // Do your stuff
        }
    }
    

    请注意,这使用来自System.IODirectory 类,而不是Java.IO

    【讨论】:

    • No..Not working,它显示找不到路径的一部分
    【解决方案3】:

    ffilelist 将包含“/storage/emulated/0/Music/”中的 mp3 文件列表

        string phyle;
        string ffilelist = "";
        public void listfiles()
        {
            try
            {
                var path1 = "/storage/emulated/0/Music/";
                var mp3Files = Directory.EnumerateFiles(path1, "*.mp3", SearchOption.AllDirectories);           
                foreach (string currentFile in mp3Files)
                {
                    phyle = currentFile;
                    ffilelist = ffilelist + "\n" + phyle;
                }
                //playpath(phyle); // play the last file found
            }
            catch (Exception e9)
            {              
                Toast.MakeText(ApplicationContext, "ut oh\n"+e9.Message , ToastLength.Long).Show();
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多