【问题标题】:Different File Formats are stored differently不同的文件格式存储方式不同
【发布时间】:2010-10-29 04:46:02
【问题描述】:

这可能真的很琐碎。

文件存储操作系统是否依赖?

为什么文本文件从 Dos 转移到 Unix 时会发生变化,是 Unix 中的编辑器对某些字符的解释不同,还是文件本身在从 Dos 转移到 Unix 时会发生变化,因此实用程序 Dos 转移到 Unix。

为什么 Java 类文件可以从 Dos 移动到 Unix 并且不会改变?

什么是平台无关存储?

【问题讨论】:

    标签: file operating-system storage


    【解决方案1】:

    字节和字符的存储方式存在根本区别。见:

    http://www.joelonsoftware.com/articles/Unicode.html

    关于各种字符集的描述以及它们在各种操作系统之间的差异(以及更多内容)。

    Java 类文件是二进制文件并且总是以大端存储。这意味着无论它们在什么操作系统之间移动,它们始终是相同的。

    【讨论】:

    • Big Endian 或 Little Endian 与文件存储有何关系?我可以理解 Java 类文件可能有整数、浮点数,它们会对不同的 Endian 系统产生影响。但是,当您阅读文件时,这有什么关系。例如。如果我正在阅读文本文件,为什么字节序很重要?
    • 字节顺序只是字节排序的约定。当文件被写入时,它要么以小端、中端或大端存储——取决于处理器。如果我们读回它,我们必须知道它是如何编写的,为此我们通常有一个字节顺序标记。见stackoverflow.com/questions/701624/…
    【解决方案2】:

    文件存储不是独立于操作系统的,即使内容可能相同,它的解释方式也不同。以防万一,多年前我不得不将(Business Basic)程序和数据从 Datageneral 小型计算机移植到 DOS。这些文件使用 8 位编码,必须先翻译(到 7 位)才能在 DOS 上“理解”。

    【讨论】:

    • 我想我同意你的看法。不同的文件格式需要以不同的方式存储,操作系统应该能够以这种方式存储和读取它们。
    【解决方案3】:

    简短回答:视情况而定。

    文本文件在从 DOS 移动到 Unix 时不会自行更改:例如,尝试使用 USB 密钥移动它们。

    使用第三方软件复制时,它们可能会发生变化:ftp 可以选择处理文本转换。

    此外,这不仅取决于操作系统,还取决于文件系统。在 OS X 之前的 mac(HFS 文件系统)上,文件存储在两个分支上:数据和资源。在没有分叉概念的文件系统上复制时,文件可以复制为包含数据和资源分叉的单个文件 (AppleSingle) 或两个单独目录中的两个文件 (AppleDouble)。

    【讨论】:

      【解决方案4】:

      有两个区别:

      Newlines

      • Unix:\n
      • X 之前的 Mac OS:\r
      • Windows:\r\n

      Little/big endianness

      edianess 可能不同,但这通常只对 unicode 和二进制数据有影响。

      【讨论】:

      • 你混淆了这个问题。他问文件有什么变化。答案是什么。复制到 unix 机器的文件中仍然会有 DOS 换行符。
      • 如果没有任何改变,为什么我必须做一个 dos2Unix ?
      • 因为您的 EDITOR 已更改。这是该平台上的编辑采用的编辑约定,仅此而已。
      【解决方案5】:

      不,文件不会更改。仅用于编辑它们的约定。

      可以改变的是用于编目和列出目录等的文件系统结构和元数据(即时间戳)。此外,文件自然会在加密的文件系统上被加密,但文件系统的复杂性对于通过系统调用读取文件的应用程序几乎总是透明的(如果您正在编写分区调整大小或其他低级磁盘工具,它们将是相关的)。

      澄清一下,在 linux 操作系统中需要 vim 或 emacs 来使用 unix 约定。事实上,许多编辑器和应用程序都可以检测换行编码并进行调整。如何处理文件取决于软件,而不是操作系统。

      【讨论】:

        【解决方案6】:

        通常,文件系统会按照要求写入的方式存储文件。读取文件的程序将解释文件中的字节。

        例如,在 DOS(和 Windows)中,换行符由两个字节组成,但在 Unix 上它只有一个字节。但这只是一个标准。 Unix 上的程序可以读取带有两字节换行符的文件。这些程序只需要知道换行符是什么。

        【讨论】:

          猜你喜欢
          • 2011-10-24
          • 2018-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-25
          • 2022-11-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多