问题标签 [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 投票
2 回答
1948 浏览

c# - 我可以从 file.OpenStreamForWriteAsync() 获取 file.OpenStreamForReadAsync() 吗?

我仍在学习读/写文件流的技巧,如果我正在寻找的是可行的,希望有人能提供帮助。

下面的代码进行 WebApi 调用(GetAsync()第 2 行的注释)以获取图像文件 Id 并将下载的文件保存到具有计算的 Md5Hash 的数据库中。代码工作正常,但为了提高效率,我想知道是否可以从中获取file.OpenStreamForReadAsync()file.OpenStreamForWriteAsync()不确定是否可行,但我可以看到一些在流上运行的扩展方法,但我尝试过的却没有运气至今)。如果这是可能的,我可以避免保存文件并再次打开它,而是在using (var fileStream = await file.OpenStreamForWriteAsync()){ ... }块内调用 GetMD5Hash() 方法。

我可以在块Utils.GetMD5Hash(stream);外,块内有如下所示的等价物,using目的是避免在using块外打开文件吗?

0 投票
2 回答
69 浏览

c# - 尝试通过“appFolder.GetFilesAsync();”读取文件列表时不断出错

我一直在关注 Debug.Window 的输出。

我的代码是:

我使用了来自 inet 的一个非常基本的示例,因为我的原始代码与我现在在这个示例中遇到的问题相同。

我基本上想要一个位于指定目录中的文件列表。

逐步调试显示将目录分配给 appFolder 没有问题。

但是当涉及到

上面提到的输出逐步退出。显然没有要捕获的异常,否则它将继续使用 catch(Exception ex)。

有谁知道我做错了什么或者可以指出我的问题的另一种解决方案?

任何提示都值得赞赏。

PS:对不起我糟糕的英语。

0 投票
0 回答
535 浏览

c# - 设备未联网时的 UWP BackgroundDownloader().CreateDownload() 或 CreateStreamedFileFromUriAsync()

在我的应用程序中,我必须从诸如http://localhost:8080/getfile/myfile_ID之类的 REST uri 获取 LOCAL Web 服务器中的一些文件,然后将它们复制到应用程序的 localStorage 上,这样我就可以这样进行:

或像这样:

这在位于网络上的任何设备上都可以正常工作,设备获得了 IP,但是当设备不在任何网络上(拔下 RJ45 或未连接到任何 Wifi)时,代码卡在这些线路上而没有任何错误。我可以在调试中看到程序只是等待异步方法完成,但它从未发生过。如果在调试过程中,我再次插入 RJ45 或连接到 Wifi,那么异步方法现在结束并且工作正常。

这是正常行为吗?我知道,为了从 uri 获取文件,设备必须联网,但是本地 uri 呢?

0 投票
3 回答
3978 浏览

c# - 时间:2019-05-01 标签:c#uwpSaveStorageFile without Dialog

我遇到了一些关于FileSavePicker. 有没有关于保存 aStorageFile而不显示任何弹出窗口或对话框来询问用户的解决方案。我想从后面的代码中给出存储文件的当前路径。

0 投票
1 回答
1790 浏览

c# - 从 UWP 中的 url 获取 WriteableBitmap?

所以我的应用程序从一个有效的 url 获取 BitmapImage,然后我需要将该图像分配给 writeablebitmap。目前我有这个:

这是非常糟糕的代码,但它一直有效StorageFile.GetFileFromApplicationUriAsync(),直到我被告知值落在意外范围内。我猜这是因为它只接受“ms-appx:///”格式,而不是“http://”。有什么办法可以让这个工作吗?最终以更清洁的方式?我以为这很容易,但这是一场噩梦。从昨天开始,我一直在尝试这样做。

PS 我知道这可能看起来像重复,但我在 StackOverflow 上绝对没有发现任何实际有效的东西。

0 投票
1 回答
627 浏览

sqlite - UWP 从数据库中保存和检索存储文件

我想将 StorageFile 和位图图像保存并检索到 Sqlite 数据库中。然后稍后检索它们。和 bitmapimage 将来自该文件的缩略图。提前谢谢

0 投票
0 回答
120 浏览

c# - 使用 StorageFile 时文件内容丢失/损坏

TL/DR:我们有一个 Windows 通用应用程序,它使用 StorageFile 类与本地存储的 JSON 数据进行交互。使用该应用一天后,用户收到 UnauthorizedAccessException 并且数据消失。

长版:我们有一个 Windows 通用应用程序,它从 API 检索数据并将该数据本地保存到我们应用程序的 ApplicationData.Current.LocalFolder 中的 JSON 文件,以便用户可以离线工作。数据通常在一天开始时检索,并在一天结束时发送回 API。当一条记录成功发送回 API 时,它会从本地 JSON 中删除。与 API 的整个同步过程是使用 UI 中的按钮手动触发的。此工作流程还限制了应用程序和 API 之间发送的数据量,并防止本地文件无休止地增长。

我们使用 StorageFile 类将数据加载到内存中的集合中,以读取 JSON 文件的内容并使用 Newtonsoft JsonConvert 对象将它们转换为我们的模型对象。所有这一切一直顺利进行了一段时间,直到最近,当用户开始报告数据正在消失时。查看应用程序的日志文件,我们看到一个一致的错误弹出:

在读取文件或写入文件时,我们可能会看到此错误。至少从最终用户的角度来看,这些错误的不幸结果是数据消失了。这通常发生在用户一天大部分时间都在使用该应用程序之后,完成了他们对 15 条记录中的 10 条的工作。在我的测试中,我看到 JSON 文件的大小从 <50Kb 跃升至高达几百 Kb,这似乎并不过分。

现在,当数据消失时,它并没有全部消失。在文件访问错误之后,如果用户仍在处理一条记录,因此它在内存中,则该记录最终成为本地 JSON 文件中的唯一记录。将数据保存到本地文件时,我们将文件中的数据加载到集合中,合并到修改后的记录中,然后将其序列化并全部写回 JSON 文件,替换文件的内容。

任何帮助将不胜感激。谢谢。

编辑:虽然这可能类似于如何处理 StorageFile 操作的并发性中发布的问题?,我们对 async/await 操作非常谨慎,尤其是在与文件系统交互时。快速扫描代码堆栈显示我们的方法返回一个 Task 并处于等待状态。我觉得我们的情况与该线程中讨论的情况不同。特别是对于一个用户,这个问题在最新一轮 Windows 更新之后才开始发生。在 Windows 更新之前,他们已经使用该应用程序一段时间没有任何问题。那时我们的应用程序没有任何更新。

0 投票
1 回答
41 浏览

mobile - 我应该从 CameraCaptureUI 中删除 StorageFile

我正在创建一个通用应用程序来捕获照片或视频并通过其 REST API 将其上传到 SharePoint。当前原型的流程很简单:

  1. 在主页上,用户单击按钮以捕获照片或视频
  2. 可以使用 CameraCaptureUI API 捕获照片或视频
  3. 用户被重定向到他/她可以输入一些元数据的页面
  4. 如果用户单击上传按钮,文件将被发送到 SharePoint 并且用户被发送回主页
  5. 如果用户点击取消按钮,他/她将被送回主页

所有这些都有效,但我不确定在不再需要 StorageFile 后如何处理它。在手机上,文件被保存到某个默认位置。我没有将它复制到图片库或其他任何东西,在文件上传(或用户取消)后,我不再需要它在设备上。

我应该自己删除这个 StorageFile 还是在应用程序暂停或关闭时操作系统会处理这个问题?我想避免应用程序随着时间的推移慢慢消耗越来越多的存储空间,例如因为用户在文件上传之前关闭它。

附带说明:我没有使用后台任务来上传文件。用户需要监控上传(进度条),如果失败则重试。如果由于没有 Internet 连接或 SharePoint 关闭而无法上传文件,我不再关心它。

0 投票
0 回答
449 浏览

c# - storagefile.OpenStreamForReadAsync 返回错误

当我尝试返回流时,通用 Windows 平台 10 TargetFile.OpenStreamForReadAsync() 给我一个错误“附加信息:访问被拒绝。(来自 HRESULT 的异常:0x80070005(E_ACCESSDENIED))”

0 投票
2 回答
577 浏览

c# - 如何锁定打开的 StorageFile 以防止用户在我的应用程序之外重命名它?

我有一个在桌面上的 Windows 10 上运行的基本 UWP 应用程序。该应用程序定义了一种自定义文件格式,并允许用户打开和编辑文档。

我使用 aFileOpenPicker让用户选择文件。

我的问题是:如何防止用户在我的应用程序外部(例如在 Windows 资源管理器中)重命名/移动/删除文档,而它在我的应用程序中打开?

Word Mobile 锁定打开的文档。如果我尝试在 Windows 资源管理器中重命名打开的文档,则会收到错误消息:

“操作无法完成,因为文件已在运行时代理中打开。关闭文件并重试。”

我想实现同样的目标。我怀疑 Word Mobile 应用程序正在以特殊模式打开文件或以某种方式锁定它。我尝试了各种Storagefile.OpenXXX()方法,但没有运气: