当前位置: 首页 > 知识库问答 >
问题:

无法使用PCLStorage或Xamarin Forms Labs在Android文件系统中创建文件夹/文件

谯阳伯
2023-03-14

我正在使用Xamarin平台开发一个Android应用程序,我试图在本地存储上创建一个文件夹,但没有成功。

首先我试着使用这个系统。通过Xamarin Forms Labs创建的FileManager类创建IO命名空间。我通过“/storage/emulated/0/`”路径传递的函数片段。

        public void CreateDirectory(string path)
        {
            this.isolatedStorageFile.CreateDirectory(path);
        }

        public Stream OpenFile(string path, FileMode mode, FileAccess access)
        {
            return (Stream)this.isolatedStorageFile.OpenFile(path, (System.IO.FileMode)mode, (System.IO.FileAccess)access);
        }

这不起作用,所以我选择使用PCLstore一个用于跨平台文件操作的库。我试过这个代码。

IFolder rootFolder = FileSystem.Current.LocalStorage;
folder = await rootFolder.CreateFolderAsync("wakesocial",
                CreationCollisionOption.OpenIfExists);

没有工作。我导航到内部存储的根,但我没有看到文件夹。

所以这个错误似乎不是因为正在使用的库而发生的,而是Android特有的。我已经读写到清单中的外部存储。所以问题是。应用程序是否有权限在存储设备的根级别创建文件或文件夹,或者它必须在特定位置创建它,例如在Android/data/Packagename中

共有3个答案

楚健
2023-03-14

在Android上,PCL存储的LocalStorage文件夹对应于“我的文档”特殊文件夹。

我不确定您试图在哪个路径中创建文件夹,但是如果您知道路径并希望使用PCL存储,您应该能够使用FileSystem。当前。GetFolderFromPathAsync以获取对应于现有文件夹的PCL存储IFolder

池兴邦
2023-03-14

经过多次尝试我用这个解决了这个问题

        string rootPath = Android.App.Application.Context.GetExternalFilesDir(null).ToString();

        var filePathDir = Path.Combine(rootPath, "Folder");

        if (!File.Exists(filePathDir))
        {
            Directory.CreateDirectory(filePathDir);
        }

创建的文件夹可以通过adb@/sdcard/Android/Data/folder或类似的方式访问,也可以通过设备内存@/Android/Data访问/

嵇永望
2023-03-14
string folderPath = Environment.ExternalStorageDirectory.AbsolutePath; //Android     

   public async Task PCLGenaratePdf(string folderPath )
    {
        IFolder rootFolder = await FileSystem.Current.GetFolderFromPathAsync(folderPath );
        IFolder folder = await rootFolder.CreateFolderAsync("folder", CreationCollisionOption.OpenIfExists);
        IFile file = await folder.CreateFileAsync("file.pdf", CreationCollisionOption.ReplaceExisting);
    }
 类似资料:
  • 问题内容: 我已经阅读了Node.js的文档,除非我错过了一些内容,否则它不会告诉某些操作(特别是)中包含哪些参数。正如您在文档中看到的那样,它不是很多。 当前,我有以下代码,该代码尝试创建一个文件夹或使用现有的文件夹: 但是我想知道这是正确的方法吗?检查代码是否正确知道文件夹已存在?我知道我可以在创建目录之前执行此操作,但这已经是对文件系统的两次打击。 其次,是否有Node.js的完整或至少更详

  • 问题内容: import java.io.File; File folder = new File(Environment.getExternalStorageDirectory() + “/TollCulator”); boolean success = true; if (!folder.exists()) { //Toast.makeText(MainActivity.this, “Dire

  • 我总是得到: 多部分体中缺少端边界。 API沙箱没有帮助。可以在那里创建文件夹。 有效载荷为:

  • 在Android Studio中提供了新建文件夹的功能,在这里可以新建一些缺省的文件夹.

  • Tip ceph fs new 命令是从 Ceph 0.84 起引入的,在此之前,无需手动创建文件系统,名为 data 和 metadata 的存储池默认即存在。 Ceph 命令行现在有了创建和删除文件系统的命令,但是当前一套集群只能有一个文件系统存在。 一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据。配置这些存储池时需考虑: 为元数据存储池设置较高的副本水

  • 问题内容: 我想在此处创建的文件夹中创建一个文本文件。 但是此代码不会将文本文件创建到该文件夹​​中。而是将文本文件放置在该文件夹之外。 问题答案: java.io.File的构造函数之一带有一个父目录。您可以改为: