【问题标题】:Does the File system affect applications portability ?文件系统会影响应用程序的可移植性吗?
【发布时间】:2023-10-05 16:06:01
【问题描述】:

当我们在任何编程语言中使用文件处理 API 时,我假设它将在二进制文件中转换为操作系统将为您服务的文件 I/O 请求。

从逻辑上讲,您的最终二进制可执行文件应该与主机操作系统使用的文件系统无关。

是这种情况还是文件系统实际上会影响应用程序的可移植性?

【问题讨论】:

    标签: file-io operating-system filesystems portability


    【解决方案1】:

    通常,答案是“是和不是”——让我详细说明一下:

    不同的文件系统有不同的属性,例如最大文件大小、文件名区分大小写、共享文件名的文件系统对象的数量,很可能更多。

    现在,只要您只使用这些功能的公共子集,即文件大小低于 2G、文件名没有大小写不同(并且始终使用相同的大写)、文件名中的小字符子集等. 不太可能遇到便携性问题。

    但是,当您使用任何高级功能时,您可能很容易遇到麻烦。当遇到将 4G+1 字节写入 FAT 磁盘的请求时,Windows 往往会做一些奇怪的事情,在 ext3 上,my.pdfmy.PDF 是不同的文件,很容易位于同一个目录中。

    【讨论】:

    • 也不允许使用路径分隔符。
    • @EugeneMayevski'EldoSCorp 我不同意:路径分隔符不是文件系统的属性,而是操作系统的属性:同一个 FAT 文件系统将在 Windows 上使用 \ 和 @ 987654324@ 在 Unix 类型的系统上。
    • 感谢您的指正。是和不是。严格来说你是对的,但从 OP 的角度来看,当他编写与平台无关的代码时,他与操作系统交互而不是直接与文件系统交互。