文件流fstream打开的文件如何获取文件句柄

文件流fstream打开的文件如何获取文件句柄,第1张

1.使用open或者fopen打开文件获取文件文件句柄。

2.如果是c 语言程序,可以使用fread将文件内容读取到内存里,然后通过\n来取到每一行,然后使用sscanf来获取浮点数;

如果是c++,可以直接使用getline函数获取一行数据,然后再调用sscanf来获取浮点数

3.处理完了关闭文件

如果是写文件,open打开,注意标志位设置成追加模式,然后按照格式组织好数据,可以使用sprintf来格式化数据到内存里,然后调用fwrite写入文件。

方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来。因为是用ServletContext读取文件路径,所以配置文件可以放入在web-info的classes目录中,也可以在应用层级及web-info的目录中。文件存放位置具体在eclipse工程中的表现是:可以放在src下面,也可放在web-info及webroot下面等。因为是读取出路径后,用文件流进行读取的,所以可以读取任意的配置文件包括xml和properties。缺点:不能在servlet外面应用读取配置信息。

方式二:采用ResourceBundle类读取配置信息,

优点是:可以以完全限定类名的方式加载资源后,直接的读取出来,且可以在非Web应用中读取资源文件。缺点:只能加载类classes下面的资源文件且只能读取.properties文件。

方式三:采用ClassLoader方式进行读取配置信息

优点是:可以在非Web应用中读取配置资源信息,可以读取任意的资源文件信息

缺点:只能加载类classes下面的资源文件。

方法4 getResouceAsStream

XmlParserHandler.class.getResourceAsStream 与classloader不同

你好,文件流一个个读取字符可以使用ifstream对象的get函数,读取文件一行内容可使用getline函数。示例如下:

string getFileContext(const string&filename)

{

string str

str.clear()

char buf[1024]

char *p

p = buf

memset(buf, 0, 1024)

ifstream in

in.open(filename)

while ((*p = in.get()) != EOF)

{

p++

}

cout <<"Buf" <<endl

puts(buf)

str += buf

cout <<str <<endl

in.close()

return str

}希望能够帮到你。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8108824.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存