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

c++ - Running a process inside a virtual file system?

What I'm trying to achieve is to run a program, which thinks a folder exists within its own folder while actually the folder is somewhere else on the system.

So my program would launch a process and say to the process: Folder A which is at C:\A is within your own directory at C:\Program Files (x86)\SomeProgram\A

So the "virtual" directory would only be visible to that process.

I'm using Qt to program my program, so if there are any Qt functions I could use that would be great (in relation to portability). However, plan C++ or any windows-bound API's would be fine.

I was thinking about NTFS junctions or symbolic links but I would have no idea how to create either of those in C++, let alone bind them to a specific process.

Thanks in advance!

EDIT:

In relation to the above, I've found this question: https://superuser.com/questions/234422/does-windows7-support-symbolic-links-folder-shortcuts. However, it only shows how to perform the required actions from the command-line and it wouldn't be process bound.

EDIT 2:

Some extra information: I'm trying to create a virtual directory that is made up of a couple of other directories but then merged (I'm using a priority system to decide which files "win" from other files). These merged directories would then appear to the target process as one directory containing the merged files.

0 投票
1 回答
508 浏览

hook - 挂接到 Windows 文件系统并插入虚拟文件系统

我正在开发一个类似于名为Mod Organizer的程序的应用程序。本质上,该程序所做的是让人们下载并安装游戏模组,天际。然而,Mod Organizer 做了一些有趣的事情。MO 不是将模组直接安装到游戏的数据目录(像其他模组管理器一样),而是将每个模组安装到其他任意位置的自己的目录中,然后在游戏启动后将所有模组一起加载。这很重要,因为它使 mod 管理变得不那么麻烦。

我的问题是:我如何在运行中创建这个文件系统或让 Windows“假装”一个充满 mod 文件的目录在其他地方。

起初我想用我的代码创建符号链接,但本指南让我走上了“挂钩”的道路,并特别推荐尝试 EasyHook。虽然我认为可以理解挂钩的基本概念(本质上是拦截来自操作系统的信号并出于任何目的重定向它们),但我真的不知道如何使挂钩实际重定向文件。

如果有人知道这种挂钩的好资源或有更好的方法来解决我的问题,我将不胜感激。

0 投票
1 回答
80 浏览

c# - .NET Windows API 检查文件夹是否被访问

我正在寻找一个功能,它允许我在访问文件夹之前放置一个对话框窗口(带密码查询)。有这样的功能吗?此外,如果此保护在任何程序之前存在,这将是非常棒的,甚至允许 Windows Explorer/cmd.exe 访问这些文件。有可能做到吗?

我没有使用 IOContainer、passwd 之类的东西。受保护的 ZIP 或任何其他太慢的东西,因为我猜一个文件中有 20GB 有点矫枉过正,解密该文件需要很长时间。是否有适用于 C# 的 VFS 解决方案,它支持密码保护并且可以用作磁盘上的普通文件系统或文件夹?

谢谢!

0 投票
1 回答
444 浏览

linux - 设备文件是由特定文件系统实现的还是Linux中的虚拟文件系统实现的?

在 Tanenbaum 的 Modern OS 书中,对于 Linux 文件系统,有两个草图:

在此处输入图像描述

在此处输入图像描述

在这两个草图中,特定文件系统(例如 ext4 类型)(第一个草图中的“文件系统”和第二个草图中的“文件系统 1”)列在“虚拟文件系统”下。

不同之处在于

  • 在第一个草图中,“文件系统”与“终端”和“套接字”处于同一级别,不包括后两者,
  • 在第二个草图中,“文件系统 1”包括“常规文件”、“块特殊文件”、“字符特殊文件”和“网络套接字”。

我的理解是,这两个草图显示的是同一个东西,所以它们应该是一致的。

我的问题是

  • 特定文件系统(例如 ext4)是否实现了设备文件并使它们与常规文件一样对待,还是“虚拟文件系统”的工作?

  • 我该如何理解上面提到的“文件系统”和“网络套接字”、“块/字符特殊文件”之间的关系的两个草图之间的区别?

0 投票
1 回答
150 浏览

linux - 虚拟文件系统是否位于分布式文件系统之上?

在 Linux 内核中,虚拟文件​​系统位于具体文件系统和设备文件之上,以提供统一的接口来访问位于其下方的文件系统。

分布式文件系统是位于每台计算机的虚拟文件系统之下还是之上?

分布式文件系统是在操作系统内核级别实现的,还是作为操作系统内核之上的软件实现的?

图层的总体情况如何?

谢谢。

0 投票
1 回答
1360 浏览

java - 读取使用虚拟文件系统 JIMFS 创建的文件

我使用 JIMFS 创建了一个 VFS。

我正在尝试以另一种方法读取文件(refData.csv)(路径传递给另一种方法)。

到目前为止我尝试过的是:

不幸的是,到目前为止,这些都不起作用。我了解,我将默认 FS 与虚拟 FS 混合使用。

如何访问创建的文件?

0 投票
0 回答
176 浏览

linux - qt 二进制文件的执行和/proc 之间有什么关系?

我是 Qt 和 Linux 内部的新手。这是为了更好地了解 qt 及其在 Linux 上的执行。

我有一个在基于 Imx6 的评估板上的 Linux 中运行的 Qt5 二进制文件。我可以通过以下方式运行我的应用程序:

在使用这个时,我不小心卸载了 proc 文件系统

之后,当我尝试运行时,我的应用程序出现错误,如下所示:

  1. 谁能解释 Qt/egl 与 proc 文件系统的关系?
  2. Qt/egl 从 /proc 需要的特定信息是什么?
  3. 有没有办法在不挂载 /proc 的情况下使这些信息可用?

对不起,如果我问错了问题,谢谢你的时间..

**

编辑:

** 的输出strace -e open -f ./fast_cluster/fast_cluster -platform eglfs | grep '/proc'此给出

0 投票
1 回答
665 浏览

jakarta-ee - java.lang.IllegalArgumentException: Given parent 不是 org.jboss.vfs.VirtualFile.getPathNameRelativeTo 中这个虚拟文件的祖先

我正在尝试将 WAR 部署到 JBoss,但它会引发以下异常:

这是如何引起的,我该如何解决?

0 投票
1 回答
241 浏览

android - Android Marshmallow libsqlite.so在源码调用ftruncate时如何使用ftruncate64?

我们的 Android 软件使用 SQLite 的虚拟文件系统 (VFS),该系统一直正常工作。一旦我们开始在 Android 6 (Marshmallow) 上使用它,就会开始出现各种奇怪的错误,将大的负偏移量传递给 ftruncate()、堆栈溢出、数据损坏等。使用readelf(以及其他工具),我们最终追踪到了问题更改使用的导入libsqlite.so:棒棒糖和更早的导入ftruncatemmap,最新的库导入ftruncate64mmap64。我们通过根据 API 版本(Marshmallow 是 23 版)更改我们使用的函数来“解决”这个问题:

查看来自http://www.sqlite.org/2015/sqlite-amalgamation-3081002.ziphttps://github.com/android/platform_external_sqlite/blob/master/dist/sqlite3.c的源代码C消息来源是ftruncatemmap这使得我们的方法充其量是“有问题的” 。

如何libsqlite.so导入和使用ftruncate64以及mmap64源代码只调用ftruncatemmap?我们不是在查看正确的源代码存储库吗?链接步骤是否发生了什么?Marshmallow 是否删除了对这些函数的非 64 位版本的支持?

0 投票
1 回答
1928 浏览

linux - 如何在 Rust 中创建虚拟文件系统?

我正在开发一个应用程序,它应该通过网络安装一个文件夹。它应该与 SMB 挂载的文件夹类似,只是服务器不使用 SMB 协议。与此类似:服务器 A 是一个 HTTP 服务器,其中包含文件,客户端 B 应该能够挂载这些文件,以便能够直接访问它们而无需先下载它们(流式传输)。因此,客户端应该能够流式传输文件,即在任意位置访问文件。此外,存储在服务器 A 上的文件以特定方式进行编码、压缩、加密和打包,因此我需要在将它们呈现给虚拟文件系统之前对它们进行解码(进行一些内部处理)。客户端应该具有只读访问权限。我希望客户端在 Windows 和 Linux 上可用。它应该如下所示:

客户端挂载了一个文件夹,想要访问位置 1248989 的 /virtualfolder/data.file。存储在服务器上的数据被分割成任意长度的块(假设它是 1 兆字节)。然后我需要下载与字节 1000000 - 1999999 相对应的文件部分,解码它们,缓存它们,然后用户可以访问这些数据。

当然,我的解码过程是在内部完成的,我只需要一个 API 来在操作系统上创建一个虚拟文件夹(或文件系统),它会显示文件的名称及其大小并让用户访问它们。

它应该看起来像这样:[OS] <-virtual filesystem API-> [Client] <-some protocol-> [Server]

访问文件应如下所示:

[OS] 我想从文件 /vfs/somefile.tar 中获取字节 0-255

[客户端] 从服务器的文件 /vfs/somefile.tar 中检索块 0-999999。这对应于块 B5F997084DC8687。下载 B5F997084DC8687 并解码。

[客户端] 这里是 /vfs/somefile.tar 从 0-255。

[OS] 我想从文件 /vfs/somefile.tar 中获取字节 256-511

[客户端] 这对应于 B5F997084DC8687。已下载并缓存此文件。

[客户端] 这是 256-511 的 /vfs/somefile.tar。

我认为非常简单。是否有用于此类事情的简单 API?