问题标签 [virtualfilesystem]

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 回答
205 浏览

node.js - 使用虚拟文件系统在沙箱中运行 nodejs

我正在开发一个在线 python 编译器项目。当用户发送 python 时,服务器将执行它。我想要做的是,创建一个带有虚拟文件系统的沙箱,在其中执行该脚本,并且该沙箱应该远离真实服务器的文件系统,但 nodejs 应该能够控制该沙箱的标准输入和标准输出。

如何使它成为可能?

0 投票
1 回答
1141 浏览

c# - 如何在 .NET 中创建带有脱机文件(类似于 OneDrive)的虚拟文件系统?

我需要创建一个虚拟文件系统,将文件从我的 Azure 应用服务同步到本地驱动器并向后同步。我只需要将一些文件和文件夹同步到我的本地文件系统并可以脱机使用。文件/文件夹应在首次访问期间或当用户选择“始终保留在此设备上”菜单时同步。类似于 OneDrive 的做法。我发现了 Microsoft CloudMirror C++ 示例,它具有一些基本的 OneDrive 功能,但它在启动期间会同步所有文件,并且在首次访问时不会列出/加载。

是否可以完全在 .NET 中构建具有上述功能的虚拟文件系统?

0 投票
1 回答
103 浏览

kotlin - 一种在 kotlin 中锁定对特定资源的访问的简单方法

我们收到了一个任务,我们必须创建一个分布式文件系统。这个文件系统应该有多个服务器,每个服务器都执行特定的功能。

这个问题与锁服务器有关,它用于防止两个人同时写入同一个文件。每次访问文件的尝试都会生成一个线程,该线程在完成后提供对所请求文件的访问。如果访问当前不空闲的文件,则线程应该被阻塞,直到锁被释放。对于 JAVA,我可能只使用 wait() 和 notify() 方法,但这些在 Kotlin 中不存在(我知道你可以通过强制转换来强制它们,但不赞成)。有没有一种优雅的方式来做到这一点?我们可以使用的库不受限制,因此,如果您知道适合的库,我将很乐意查看。现在我认为最适合的是ReentrantLock,但我正在寻找更多的可能性。

我还查看了这个列表:https ://stackoverflow.com/a/35521983/7091281 但是列出的那些似乎都不适合 - 我特别需要阻止线程,而我发现的一切都完全相反。

顺便说一句,系统的不同部分应该通过 RMI 进行通信。此外,虽然我们可以走自己的路,但鼓励使用线程而不是协程。(我们应该在 JAVA 中工作,但我们被允许使用 kotlin 和 scala)

0 投票
1 回答
502 浏览

javascript - 适用于分块的浏览器客户端虚拟文件系统

我正在尝试移植桌面应用程序的某些部分,以便能够在浏览器(客户端)中运行。我需要一种虚拟文件系统,我可以在其中读写文件(二进制数据)。据我所知,在浏览器中广泛使用的唯一选项之一是 IndexedDB。但是,我有点疏远试图找到读取或写入更大文件的示例。似乎 API 只支持向/从数据库(blob 或字节数组)传递/获取整个文件内容。

我想要找到的是我可以持续“流式传输”的东西,可以说数据进出虚拟文件系统,类似于您在任何其他非浏览器应用程序上的操作方式。例如(伪代码)

我了解同步 API 对浏览器来说是个问题;read如果是异步方法,那也可以。但我想逐块浏览文件——它可能很大,例如几个 100 MB。块大小无关紧要。这既适用于阅读,也适用于写作。

随机访问(能够在虚拟文件中寻找一个位置)将是一个加分项,但不是强制性的。


我的一个想法是一个商店=一个虚拟文件,然后键是块索引?有点像MDN 上的游标示例,但每条记录都是一个固定大小的 blob 或数组。那有意义吗?有更好的 API 或方法吗?


从概念上讲, Streams似乎是我正在寻找的 API,但我不知道如何“流入/流出”虚拟文件系统,如 IndexedDB。

0 投票
0 回答
32 浏览

c# - 在不使用进程事件的情况下确定文件何时不再使用

除了使用 Process.Exited(){} 事件并测试文件是否被锁定之外,有没有办法确定文件何时不再使用?有没有我们不使用的模式或某些命令可以更好地处理这个问题?

目前,我们在用户的临时文件夹中创建文件,在其默认程序中启动文件(由文件扩展名确定),然后如果有更改则更新文件并在关闭后删除。

这适用于所有单个文件启动。

但是,当在某些程序(如 Gimp、Word 或 Paint.net)中打开第二个或更多文件时,我们会遇到问题。他们打开文件,然后将文件句柄传递给现有进程,关闭作为下面的归档进程创建的初始进程。由于原始进程(文件进程)关闭,Exited 事件过早触发。

如果您将以下代码放入控制台应用程序项目的 Program.cs 并将路径和文件名更改为现有文件。您可以运行它,文件应在其默认查看器/编辑器中打开。可能需要选择默认程序。

我们用 Word 和 GIMP 对此进行了测试,以确保它有效。确保所有 WinWord 进程(或为您决定测试的文件设置为默认程序的任何进程)都已关闭,并在退出事件中使用断点运行程序。您会注意到它仅在程序关闭并且文件未锁定时才会触发。

但是,如果您有 Word 文档或上述任何其他程序,打开然后运行该程序,您会注意到 Exited 事件在打开文档后立即触发。对于 Word 文档,文件被锁定,但对于 GIMP,文件未被锁定。因此,仅在进程退出时确定文件是否被锁定是不够的。

因此,如果它是唯一运行的进程,或者它是保留我们创建的进程的程序,则没有问题。像记事本这样的程序会保留打开每个文件的过程,并且 Exited 事件会按预期触发。

有没有更好的方法来处理这个?

0 投票
1 回答
191 浏览

fuse - 从 FUSE 虚拟文件系统中取消链接文件

我是 FUSE 的新手。我通过 FUSE 创建了一个虚拟文件系统。我可以使用以下命令读取文件:

并正确返回文件的值:

但是,我想从文件系统中删除相同的文件。我使用 unlink 系统调用:

这段代码没有给出任何错误,但是当我为同一个文件调用 cat 时,它会打印相同的值:

我应该怎么做才能从文件系统中删除文件。谢谢

这就是我声明取消链接操作的方式

0 投票
1 回答
319 浏览

winapi - OneDrive 中“虚拟文件”背后的 Windows API

OneDrive 文件夹可以按原样显示文件,但它们不在磁盘上。

https://support.microsoft.com/en-us/office/save-disk-space-with-onedrive-files-on-demand-for-windows-10-0e6860d3-d9f3-4971-b321-7092438fb38e

我想以编程方式创建一个类似的文件夹。OneDrive 客户端使用什么 API?

0 投票
1 回答
593 浏览

macos - 如何在 macos 上实现虚拟文件系统?

我已经看到一些应用程序能够在 MacOS 上的 Finder 中将自己表示为外部磁盘。通常,这些是云存储应用程序,例如PCloud DriveWD Discovery。我想知道他们是如何做到这一点的。

我意识到云存储可能只是实现了一些远程文件系统协议,例如 Samba 或 AFP。但我仍然不太明白应用程序如何将文件系统直接挂载到 Finder 中。此外,如果虚拟文件系统不依赖于网络存储,是否有更有效的方法来挂载它?

0 投票
1 回答
346 浏览

filter - 如何避免在 Windows 文件管理器根目录中显示存储提供程序同步根目录

我正在使用存储提供程序和 Windows Cloud Files API 创建文件系统。我想避免在 Windows 文件管理器中显示同步根目录:

在此处输入图像描述

这里是我用来注册同步根的代码:

可以在此GitHub 存储库中找到完整的代码。

如何使我的文件系统不在 Windows 文件管理器的根级别显示?

0 投票
1 回答
79 浏览

cloud-storage - 如何将云存储提供商挂载为驱动器?

我正在基于这个 repo为 Windows 创建一个自定义云存储提供程序。如本文所述,我已删除 Windows 文件管理器中的根节点。现在我需要将它安装为驱动器。

如何将我的自定义云存储提供商显示为驱动器?