问题标签 [storagefile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
333 浏览

c# - UWP 在创建子文件夹时枚举包含 10,000 个文件的文件夹

我是一个相当有经验的开发人员,但这让我在 UWP 中遇到了困难——我会保持简单。

假设我想浏览图片文件夹中的所有照片,为它们加水印,并将加水印的版本保存在图片的子文件夹中(例如图片\水印)

听起来容易吗?

尝试 1:使用 GetFilesAsync(包括 GetItemsAsync、GetFoldersAsync)- 此方法遍历每个文件,为我提供所需的 StorageFile 对象。

这种方法有两个问题:

  1. 在扫描完每个文件之前,我无法显示进度条,这在 UWP 中速度非常慢。

  2. 如果我保留对 StorageFile 对象的任何引用,运行时代理将消耗所有内存(因此枚举并再次枚举以获取进度非常慢,认为比 Win32 慢 1,000 倍)

尝试 2:使用查询 - 此方法涉及使用 Windows.System.Search 和查询返回指向所有文件的指针列表 (ish)。然后,我可以使用 StorageFolderQueryResult 动态获取每个 StorageFile 并立即释放,以便运行时代理运行。这非常快,因为它使用 Windows 索引系统,非常非常快。

问题是查询系统相当愚蠢,一旦我创建了子文件夹“Watermarked Photos”,查询返回的存储文件(查询时不存在)开始包含 Watermarked 文件夹中的文件。看起来查询实际上只是一些文件,而不是实际文件的静态列表,因此根据在其范围内调用查询后添加/删除的任何文件,结果是任意的。

有人对如何做到这一点有想法吗?

0 投票
1 回答
73 浏览

uwp - 发送带有附件错误的电子邮件:无法从“Windows.Storage.StorageFile”转换为“字符串”。

我正在尝试通过 web 服务使用 smtp 发送带有附件的电子邮件,但是我遇到了这个错误:

'无法从 'Windows.Storage.StorageFile' 转换为 'string'。'

错误

这是我的按钮单击事件的代码:

有问题的行是这一行:

这是我用于发送电子邮件的网络服务的代码:

0 投票
1 回答
62 浏览

uwp - 如何在 UWP 中检索存储在本地磁盘上的最新文件

我正在尝试在我的 UWP 应用程序中检索存储在我的图片库中的最新文件。我知道如何按名称检索文件......但是,我希望按日期/时间检索它,这是最新的文件。

如何更改以下代码?

0 投票
3 回答
154 浏览

c# - 为什么 MS 强迫我进行异步操作?

我需要从资源中的文本文件中读取数值(版本号)。我将此版本号与已安装组件的版本号进行比较。如果资源中的版本号高于安装的版本,我将新组件(数据库)从我的资源复制到用户可以使用的本地目录。

我需要同步执行此操作,因为我的应用程序在没有数据库的情况下无法工作。

但是,我看不到任何同步的方法。MS强迫我用这样的异步任务来做:

现在我遇到了应用程序在数据库复制到本地目录之前启动的情况,因为复制也需要异步完成,根本没有任何方法可以同步。没有像 StorageFile.Copy() 这样的函数。

因此,我使用的是:

这让我发疯。

人们写道,应该拥抱、拥抱和欣赏异步,但在我的情况下,它只会带来麻烦。

我看不到任何使这件事同步的方法,我想知道为什么 MS 强迫我这样做。

非常感谢任何帮助。

谢谢你。

代码作为屏幕截图:

在此处输入图像描述

编辑:我在这里添加了顶级方法:

0 投票
3 回答
192 浏览

c# - 吃异常还是检查null?

我有以下代码:

当相关文件不存在时,IDE 会抛出错误:

在此处输入图像描述

我是不是该

1)让IDE调试警告器忽略这个错误(说“不要打破这个异常”),我应该让“if(file!= null)”完成这项工作

2)或者我应该检查文件是否真的存在

3)使用try-catch?

我不得不根据答案添加代码的重要部分:

这会引发相同的异常,因为在 UWP 中,除了尝试访问文件之外,似乎没有其他方法可以检查文件是否实际存在:

如何检查文件是否存在于 Windows 应用商店应用程序中?

所以问题仍然存在。

0 投票
1 回答
540 浏览

sqlite - 网络共享路径上的 sqliteconnection(通用 Windows 平台)

尝试通过共享文件夹访问 sqlite 文件。
(目前是 Windows IOT 的默认共享文件夹)

抛出错误。但文件位置正确。

我可以使用 StorageFile 或 StorageFolder 类访问文件。但无法弄清楚如何修改 SQLite 连接路径。你有什么想法吗?

将网络路径附加到驱动器名可能允许访问?所以例如。“Z:\settings.sqlite”文件可通过普通桌面应用程序访问。但不适用于 UWP。

我发现的最接近的情况是;将文件复制到本地>修改>并上传回网络。uwpc-copy-database-from-installed-location-to-local-folder

0 投票
1 回答
287 浏览

c# - CreateFileAsync 创建被阻止的文件

我正在开发一个需要在本地存储之外创建文件的 UWP 应用程序。我使用文件夹选择器让用户选择输出导向器,然后我使用存储该选择LocalSettings并将文件夹添加到FutureAccessList.

然后,我StorageFile.CreateFileAsync用来创建文件(这是成功的,没有错误或异常)。

问题是,文件是使用阻塞创建的,正如您在文件属性对话框中看到的那样:在此处输入图像描述

有没有一种特定的方法可以在没有这个的情况下创建文件,或者有一种使用 C# 解除阻塞的方法?

0 投票
1 回答
230 浏览

c# - 在 uwp 中保存 System.Comment 或 System.Subject 文件属性

我想将 GUID 与我的 StorageFile 相关联,以便更轻松地测试两个文件是否来自同一源。

我正在尝试将 GUID 保存在文件属性中:

这行不通。当它到达 SavePropertiesAsync 时,它会抛出一个 COMException,说“错误 HRESULT E_FAIL 已从对 COM 组件的调用中返回”。

该文件是 app 目录中的 SQLite 数据库,具有自定义文件扩展名。

如何使用 GUID 标记此文件?

PS 经过一番摸索......也许问题是我没有为自定义文件类型注册文件属性处理程序。还不知道该怎么做。

0 投票
1 回答
1151 浏览

uwp - 另一个进程错误正在使用 UWP StorageFile 文件

我的应用程序的数据存储在本地 JSON 中。我最初将其存储为字符串应用程序设置,但这并没有提供足够的空间。因此,我正在更新我的应用程序以从本地存储中的 JSON 文件读取/写入。

当用户与我的应用程序交互时,我的应用程序会在不同时间读取和写入 JSON,并且在读取或写入文件时经常出现此错误:

System.IO.FileLoadException:“该进程无法访问该文件,因为它正被另一个进程使用。”

以下是涉及的方法:

有时错误在 上WriteTextAsync,有时在 上ReadTextAsync。似乎没有发生错误的特定点,只是似乎随机发生。请让我知道是否有其他方法可以避免错误。

0 投票
1 回答
95 浏览

c# - 在 UWP 中移动和替换另一个文件后如何修改文件?

在 UWP 中调用MoveAndReplaceAsync用新文件替换旧文件后,我无法修改新文件。

例如,在这里我打开一个文件并将其保存在_file

在此处理程序中,我将其写入一个新文件,将其移动并替换为打开的文件,然后尝试追加。

我试过附加旧的和新的StorageFile,但总是得到以下错误。