【发布时间】:2023-10-05 16:06:01
【问题描述】:
当我们在任何编程语言中使用文件处理 API 时,我假设它将在二进制文件中转换为操作系统将为您服务的文件 I/O 请求。
从逻辑上讲,您的最终二进制可执行文件应该与主机操作系统使用的文件系统无关。
是这种情况还是文件系统实际上会影响应用程序的可移植性?
【问题讨论】:
标签: file-io operating-system filesystems portability
当我们在任何编程语言中使用文件处理 API 时,我假设它将在二进制文件中转换为操作系统将为您服务的文件 I/O 请求。
从逻辑上讲,您的最终二进制可执行文件应该与主机操作系统使用的文件系统无关。
是这种情况还是文件系统实际上会影响应用程序的可移植性?
【问题讨论】:
标签: file-io operating-system filesystems portability
通常,答案是“是和不是”——让我详细说明一下:
不同的文件系统有不同的属性,例如最大文件大小、文件名区分大小写、共享文件名的文件系统对象的数量,很可能更多。
现在,只要您只使用这些功能的公共子集,即文件大小低于 2G、文件名没有大小写不同(并且始终使用相同的大写)、文件名中的小字符子集等. 不太可能遇到便携性问题。
但是,当您使用任何高级功能时,您可能很容易遇到麻烦。当遇到将 4G+1 字节写入 FAT 磁盘的请求时,Windows 往往会做一些奇怪的事情,在 ext3 上,my.pdf 和 my.PDF 是不同的文件,很容易位于同一个目录中。
【讨论】:
\ 和 @ 987654324@ 在 Unix 类型的系统上。