如何读取文件中的部分字节

比如,我有一个100MB的文件,我需要知道它从第101字节到第105字节这5个字节中的内容,那我怎么来获取?如果用打开文件函数(比如fopen)来打开文件,岂不是要把这100MB的文件全都读入内存,但我只需要这5个字节,这样岂不是很浪费资源?要如何才能避免把不需要的部分也加载到内存中,而只把这5个字节加载到内存中?

方法一:使用fopen打开文件,不等同于将文件内容完全都到内存中。
只有在使用fread时,数据才会缓存到内存中。
所以,在使用fread之前,可以使用fseek来调整文件指针的位置,然后在读取5个字节就行了。
方法二:就是使用内存文件映射的机理。
可以将文件的某一部分的内容映射到进程地址空间中,在读操作时,就可以读取指定区间的内容了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-13
fopen() 打开
fseek(fp, 100, 0); 指针移动到100
fread(&buffer, 5, 1, fp);读取5个字节追问

但是在用fopen()函数时,肯定会把整个100MB的文件全部加载到内存中,而我只希望加载第101到105这5个字节,该怎么做?

追答

调用fopen只会在文件系统管理器中创键一个打开文件对象,保存与此文件相关的底层信息,然后就返回了,不会把内容读入内存的。在调用fread时,才会把文件内容读入内存。

本回答被提问者采纳

C语言如何读取文件中指定的某一段
使用fread函数读取指定长度的字符串,即使包含\\n也会被读取,可以首先使用fseek定位到文件结尾,然后ftell函数返回的值就是文件的大小,这样就可以用循环多次读取文件,直到读取所有内容 FILE *file = NULL;char szFile[1025] = {0};int nHadRead = 0;file = fopen( "file.txt", "r+");if ( ...

c++的文件输入输出流中,能够从文件中读取数据的方法有哪些?
1.get()方法:get()方法是文件输入流中最基本的读取字符的方法。通过get()方法可以读取一个字符并将其放入字符变量中。语法:int get()2. getline()方法:getline()方法可以从文件输入流中读取一行数据,并将其存储在字符串变量中。语法:istream& getline(char* str, streamsize n)3. read()方法...

如何用c语言从txt文件中读取数据
一、打开文件:FILE fopen(const char filename,const char mode);因为txt文件为文本文件,所以打开时选择的mode应为"r"或者"rt"。二、读取文件:读取文件应根据文件内容的格式,以及程序要求,选择读取文件的函数。可以使用一种,也可以几种混用。常用的文件读取函数如下:1、fgetc,从文件中读取一个...

【总结收藏】JAVA文件读取常用工具类
一、读取文件成字节 将文件内容转化为字节,使用FileInputStream文件字节输入流。通过FileInputStream的available()方法获取文件字节数,使用read()方法读取数据,最后别忘了关闭文件字节流。二、字节写入文件 与读取文件成字节类似,使用FileOutputStream流将字节写入文件中。调用write()方法写入数据后,别忘了...

python读文件多少字节(python查看字节大小)
1、Python读取二进制文件2、python读取文件内最多多少行字符3、python读写文件4、python读取文件解决‘utf8’codeccan’tdecodebyte0xa1的问题Python读取二进制文件实际项目中经常遇到读取二进制问题,Python下读取二进制文件一般用Python的文件打开读写相关函数和struct.1。获取文件名filename,可用对话框,也...

如何从文件中一个字节一个字节读取
BufferedReader br=new BufferedRead(new FileReader(file)) StringBuffer sb=new StringBuffer(); String line; while((line=br.readLine())!=null){ sb.append(line); }

c语言怎么提取文本文件中我想要的一些信息?
%d",&a);\/\/从输入文件读取一个整数 b=fgetc(fp1);\/\/从输入文件读取一个字符 fgets(c,100,fp1);\/\/从输入文件读取一行字符串 printf("%ld",ftell(fp1));\/\/输出fp1指针当前位置相对于文件首的偏移字节数 fputs(c,fp2);\/\/向输出文件写入一行字符串 fputc(...

java中如何从文件中读取数据
分为读字节,读字符两种读法 ◎◎◎FileInputStream 字节输入流读文件◎◎◎ public class Maintest { public static void main(String[] args) throws IOException { File f=new File("G:\\\\just for fun\\\\xiangwei.txt");FileInputStream fin=new FileInputStream(f);byte[] bs=new byte[1024...

批处理 如何读取到Hex文件的单字节内容?
使用 hexdump 配合 for \/f "tokens=" 读取,hexdump 也包含了输出选项。

labview如何读取文本文档中某一行的字符串
Read from Text File函数有一个count输入,表示从文本文件中读取的字节数(byte),当设置为-1时表示整个文本。此外,在函数的右键快捷菜单中选择“Read Lines”将以行为单位(而不是字节)读取文本文件。Read from Text File函数同样也提供了“Convert EOL”选项,此时该函数将把所有基于平台的行结束符...

相似回答