这里有人能告诉我文件通常如何保存在硬盘中吗?内容是用二进制值表示的,即1和0。如果是这样,是否可以打印那些1& 0是使用C程序吗?
答案 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
(或者你拥有的任何块设备;这个例子是第一个硬盘的第一个分区)并开始阅读;与其他操作系统类似。
请注意
因此,一个文件(当你正常打开它时出现)不一定看起来就像在磁盘上一样(可能,但不能保证这一点,实际上没有任何意义)。