不同的文件格式以不同方式存储

时间:2009-05-27 07:01:41

标签: file operating-system storage

这可能是一个非常微不足道的。

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

为什么文本文件在从Dos移动到Unix时会发生变化,Unix中的编辑器是否会以不同的方式解释某些字符,或者当从Dos移动到Unix时文件本身会发生变化,因此实用程序Dos会变为Unix。

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

什么是平台独立存储?

6 个答案:

答案 0 :(得分:1)

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

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

有关各种字符集的描述以及它们在各种操作系统之间的区别(以及更多)。

Java类文件是二进制文件,始终存储在Big Endian中。这意味着无论在哪个操作系统之间移动它们都将是相同的。

答案 1 :(得分:1)

文件存储不是OS独立的,即使内容可能相同,它的解释方式也不同。一个案例是多年前我不得不将数据集小型机的程序和数据移植到DOS。这些文件遇到了8位编码,必须先翻译成7位才能在DOS上“理解”。

答案 2 :(得分:1)

简短回答:这取决于。

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

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

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

答案 3 :(得分:0)

不,文件不会改变。只有编辑它们的约定。

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

为了澄清,Linux操作系统中没有任何内容要求 vim或emacs使用unix约定。实际上,许多编辑器和应用程序可以检测换行编码并进行调整。这取决于软件如何处理文件,而不是操作系统。

答案 4 :(得分:0)

有两点不同:

Newlines

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

Little/big endianness

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

答案 5 :(得分:0)

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

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