如何保存文件?

时间:2011-09-20 09:19:32

标签: c file

这里有人能告诉我文件通常如何保存在硬盘中吗?内容是用二进制值表示的,即1和0。如果是这样,是否可以打印那些1& 0是使用C程序吗?

4 个答案:

答案 0 :(得分:3)

是的,在最低级别,所有文件的内容都是二进制位和字节。如果打开文件以便以二进制模式读取,则可以阅读这些文件:

FILE * pFile;
pFile = fopen ("somefile.txt","rb");
...

然后,您可以使用fread从文件读取到字节缓冲区,并使用printf打印出以所需格式读取的字节(如"%x"为十六进制)。

答案 1 :(得分:1)

  

文件通常如何保存在硬盘中?

文件的存储方式取决于底层文件系统。

  

内容是否使用二进制值表示,即1和0。

最后,你电脑上的所有东西都用0和1表示,所以即使是文件,是的。

答案 2 :(得分:1)

C编程语言创建了一个抽象文件,即文件是字节流。就C而言,一个字节由等于CHAR_BIT的多个位(1或0值)组成。

硬件实际是否以多个位存储一个字节与C无关,因为C实现(与OS等结合使用)会使其看起来像是。如果你可以设计一个带有许多微小blob的存储介质,每个blob可以处于256种状态中的任何一种状态,那么欢迎你为每个blob存储1个字节。

但实际上,磁性和闪存HDD都具有对应于单个位的微观结构。硬件不提供对单个位的直接访问,但它们在那里。存储介质上的单个位是否对应于文件中的单个位是另一回事 - 硬件和文件系统软件都可以对数据(压缩,加密,RAID复制,稀疏文件)执行一系列操作事情比“磁盘上的8位等于文件的一个字节”复杂得多。

答案 3 :(得分:0)

确实是 - 在Linux中,只需打开/dev/sda1(或者你拥有的任何块设备;这个例子是第一个硬盘的第一个分区)并开始阅读;与其他操作系统类似。

请注意

  • 您需要超级用户/管理员权限才能进行此类低级别磁盘访问
  • 通常还有文件系统从文件中抽象出存储 - 换句话说,10 MB的文件不一定对应于磁盘的单个10 MB大小的部分:它可能是多个部分,它可以被压缩,或加密,或所有这些
  • 对于分布式/网络/内存文件系统,该文件可能根本不存在于磁盘上。

因此,一个文件(当你正常打开它时出现)不一定看起来就像在磁盘上一样(可能,但不能保证这一点,实际上没有任何意义)。