`
omygege
  • 浏览: 1357845 次
文章分类
社区版块
存档分类
最新评论

open和fopen的区别

 
阅读更多

转载从:http://blog.csdn.net/hairetz/archive/2009/05/05/4150193.aspx

open和fopen的区别:

1.缓冲文件系统
缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器 而定。
fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等
2.非缓冲文件系统
缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数 据。非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度 快,由于ANSI标准不再包括非缓冲文件系统,因此建议大家最好不要选择它。本书只作简单介绍。open, close, read, write, getc, getchar, putc, putchar 等
前者属于低级IO,后者是高级IO。
前者返回一个文件描述符(用户程序区的),后者返回一个文件指针。
前者无缓冲,后者有缓冲。
前者与 read, write 等配合使用, 后者与 fread, fwrite等配合使用。
后者是在前者的基础上扩充而来的,在大多数情况下,用后者。
http://blog.chinaunix.net/u/21067/showart_213410.html
open 是系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,fopen是C的库函数,返回的是一个指向文件结构的指针。

fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api
linux中的系统函数是open,fopen是其封装函数,个人观点。仅供参考。

文件描述符是linux下的一个概念,linux下的一切设备都是以文件的形式操作.如网络套接字、硬件设备等。当然包括操作文件。
fopen是标准c函数。返回文件流而不是linux下文件句柄。

设备文件不可以当成流式文件来用,只能用open
fopen是用来操纵正规文件的,并且设有缓冲的,跟open还是有一些区别

一般用fopen打开普通文件,用open打开设备文件

fopen是标准c里的,而open是linux的系统调用.
他们的层次不同.
fopen可移植,open不能

我认为fopen和open最主要的区别是fopen在用户态下就有了缓存,在进行read和write的时候减少了用户态和内核态的切换,而open则每次都需要进行内核态和用户态的切换;表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比fopen快。
分享到:
评论

相关推荐

    linux_file_op.zip_file操作_linux fopen_open

    linux系统下一切皆文件,上传比较详细的文件操作fopen,open,,,,

    解决C++ fopen按行读取文件及所读取的数据问题

    "0.can't open " << dataList << endl; return -1; } 2、按行读取数据: 方法一: char loadImgPath[1000]; while(EOF != fscanf(fpListFile, "%s", loadImgPath)) { ... } 其中,loadImgPath不能...

    sina weibo open api

    新浪微博Open API,注:需要授权的开发者才能访问,其API调用格式类似Twitter,但需要一个API Key用于认证管理。

    PHP fopen()和 file_get_contents()应用与差异介绍

    主要介绍了PHP fopen()和 file_get_contents()应用与差异,需要的朋友可以参考下

    PHP使用fopen与file_get_contents读取文件实例分享

    php中读取文件可以使用fopen和file_get_contents这两个函数,二者之间没有本质区别,只是前者读取文件的php代码相比后者要复杂一点。本文章通过实例向大家讲解fopen和file_get_contents读取文件的实现代码。需要的...

    php中file_get_content 和curl以及fopen 效率分析

    curl多用于互联网网页之间的抓取,fopen多用于读取文件,而file_get_contents多用于获取静态页面的内容。 1. fopen /file_get_contents 每次请求都会重新做DNS查询,并不对DNS信息进行缓存。但是CURL会自动对DNS信息...

    PHP fopen中文文件名乱码问题解决方案

    $fp = fopen($fileName, 'w'); fwrite($fp, '这是中文内容'); fclose($fp); echo $fileName.' '; if(file_exists($fileName)){ echo 'hhhhh'; } ?> 结果: 文件名是乱码 解决: 对文件名进行编码...

    PHP fopen函数用法实例讲解

    fopen(filename,mode,include_path,context) 参数: filename 必需。规定要打开的文件或 URL。 mode 必需。规定要求到该文件/流的访问类型。 include_path 可选。如果也需要在 include_path 中检索文件的话...

    php打开文件fopen函数的使用说明

    1.resource fopen(string $filename, string $mode [,bool $use_include_path [, resource $zcontext]])函数功能:fopen() 将 filename 指定的名字资源绑定到一个流上。如果filename 是 “scheme:...

    PHP读取网页文件内容的实现代码(fopen,curl等)

    1.fopen实现代码:复制代码 代码如下: <?php $handle = fopen (“http://www.example.com/”, “rb”); $contents = “”; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($...

    php文件包含目录配置open_basedir的使用与性能详解

    当程序要使用例如fopen()或file_get_contents()打开一个文件时,这个文件的位置将会被检查。当文件在指定的目录树之外,程序将拒绝打开。 本指令不受安全模式打开或关闭的影响。 2.open_basedir设置...

    PHP fopen 读取带中文URL地址的一点见解

    例如下面这种情况: 复制代码 代码如下: $files = fopen(‘http://www.website.com/我的PP.jpg’, ‘rb’); 那“$files”的返回值将会是“False”。首先我想到的是将URL用urlencode编码一下,发现还是不行...

    php file_put_contents()功能函数(集成了fopen、fwrite、fclose)

    命令解析:file_put_contents (PHP 5) file_put_contents — 将一个字符串写入文件 说明: int file_put_contents ( string filename, string data [, int flags [, resource context]] ) 和依次调用 fopen(...

    解析php中的fopen()函数用打开文件模式说明

    fopen() 函数用于在 PHP 中打开文件。此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:复制代码 代码如下:<?php$file=fopen(“welcome.txt”,”r”);?>...

    PHP 获取远程网页内容的代码(fopen,curl已测)

    1、fopen的使用 复制代码 代码如下: <?php $handle = fopen (“http://s.jb51.net/”, “rb”); $contents = “”; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); ...

    浅谈php中fopen不能创建中文文件名文件的问题

    之前网页的chartset用的是utf-8,文件也用utf-8,然后用fopen()创建一个中文文件名的文件时问题就出来了,文件名都是乱 码! 查看了很多文档试了不少方法都解决不了,本来想着用别的方法绕过这个问题,忽然...

    php读取本地文件常用函数(fopen与file_get_contents)

    1.首先来介绍一下fopen()函数下面我们给出了一个直接打开本地文件的代码demo,必要的地方我们都已经加上了注释: 复制代码 代码如下: //直接打开一个本地文件的实例代码 <?php //假若我们本地的文件是...

    php 使用fopen函数创建、打开文件详解及实例代码

    ,fopen()函数字面意思是打开文件,但该函数也有创建文件的功能,当使用 fopen() 函数打开一个文件时,如果文件不存在,则会尝试创建该文件,并返回一个资源。 php fopen函数介绍 fopen函数打开...

Global site tag (gtag.js) - Google Analytics