精华内容
下载资源
问答
  • C语言 打开文件open函数

    千次阅读 2018-12-20 12:55:22
    头文件: #include <sys/types.h> #include <...定义函数: int open(const char * pathname, int flags); int open(const char * pathname, int flags, mode_t mode); ...
    • 头文件:
      #include <sys/types.h>
      #include <sys/stat.h>
      #include <fcntl.h>

    • 定义函数:
      int open(const char * pathname, int flags);
      int open(const char * pathname, int flags, mode_t mode);

    函数说明:

    • 参数 pathname 指向欲打开的文件路径字符串. 下列是参数flags 所能使用的旗标:
      O_RDONLY 以只读方式打开文件
      O_WRONLY 以只写方式打开文件
      O_RDWR 以可读写方式打开文件. 上述三种旗标是互斥的, 也就是不可同时使用, 但可与下列的旗标利用OR(|)运算符组合.
      O_CREAT 若欲打开的文件不存在则自动建立该文件.
      O_EXCL 如果O_CREAT 也被设置, 此指令会去检查文件是否存在. 文件若不存在则建立该文件, 否则将导致打开文件错误. 此外, 若O_CREAT 与O_EXCL 同时设置, 并且欲打开的文件为符号连接, 则会打开文件失败.
      O_NOCTTY 如果欲打开的文件为终端机设备时, 则不会将该终端机当成进程控制终端机.
      O_TRUNC 若文件存在并且以可写的方式打开时, 此旗标会令文件长度清为0, 而原来存于该文件的资料也会消失.
      O_APPEND 当读写文件时会从文件尾开始移动, 也就是所写入的数据会以附加的方式加入到文件后面.
      O_NONBLOCK 以不可阻断的方式打开文件, 也就是无论有无数据读取或等待, 都会立即返回进程之中.
      O_NDELAY 同O_NONBLOCK.
      O_SYNC 以同步的方式打开文件.
      O_NOFOLLOW 如果参数pathname 所指的文件为一符号连接, 则会令打开文件失败.
      O_DIRECTORY 如果参数pathname 所指的文件并非为一目录, 则会令打开文件失败。注:此为Linux2. 2 以后特有的旗标, 以避免一些系统安全问题.

    • 参数mode 则有下列数种组合, 只有在建立新文件时才会生效, 此外真正建文件时的权限会受到umask 值所影响, 因此该文件权限应该为 (mode-umaks).
      S_IRWXU00700 权限, 代表该文件所有者具有可读、可写及可执行的权限.
      S_IRUSR 或S_IREAD, 00400 权限, 代表该文件所有者具有可读取的权限.
      S_IWUSR 或S_IWRITE, 00200 权限, 代表该文件所有者具有可写入的权限.
      S_IXUSR 或S_IEXEC, 00100 权限, 代表该文件所有者具有可执行的权限.
      S_IRWXG 00070 权限, 代表该文件用户组具有可读、可写及可执行的权限.
      S_IRGRP 00040 权限, 代表该文件用户组具有可读的权限.
      S_IWGRP 00020 权限, 代表该文件用户组具有可写入的权限.
      S_IXGRP 00010 权限, 代表该文件用户组具有可执行的权限.
      S_IRWXO 00007 权限, 代表其他用户具有可读、可写及可执行的权限.
      S_IROTH 00004 权限, 代表其他用户具有可读的权限
      S_IWOTH 00002 权限, 代表其他用户具有可写入的权限.
      S_IXOTH 00001 权限, 代表其他用户具有可执行的权限.

    • 返回值:若所有欲核查的权限都通过了检查则返回0 值, 表示成功, 只要有一个权限被禁止则返回-1.

    • 错误代码:
      EEXIST 参数pathname 所指的文件已存在, 却使用了O_CREAT 和O_EXCL 旗标.
      EACCESS 参数pathname 所指的文件不符合所要求测试的权限.
      EROFS 欲测试写入权限的文件存在于只读文件系统内.
      EFAULT 参数pathname 指针超出可存取内存空间.
      EINVAL 参数mode 不正确.
      ENAMETOOLONG 参数 pathname 太长.
      ENOTDIR 参数pathname 不是目录.
      ENOMEM 核心内存不足.
      ELOOP 参数pathname 有过多符号连接问题.
      EIO I/O 存取错误.

    附加说明:使用 access()作用户认证方面的判断要特别小心, 例如在access()后再作open()空文件可能会造成系统安全上的问题.

    范例

    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    main()
    {
        int fd, size;
        char s[] = "Linux Programmer!\n", buffer[80];
        fd = open("/tmp/temp", O_WRONLY|O_CREAT);
        write(fd, s, sizeof(s));
        close(fd);
        fd = open("/tmp/temp", O_RDONLY);
        size = read(fd, buffer, sizeof(buffer));
        close(fd);
        printf("%s", buffer);
    }
    

    执行结果:

    Linux Programmer!
    
    展开全文
  • ifstream fin("filename"); if (!fin) { cout &lt;&lt; "fail to open the file" &lt;&lt;endl; return -1;//或者抛出异常。 } else { cout &...文件流参考链接
    ifstream fin("filename");
    
    if (!fin)
    {
      cout << "fail to open the file" <<endl;
      return -1;//或者抛出异常。
    }
    else
    {
      cout << "open the file successfully" << endl;
    }
    

    文件流参考链接

    展开全文
  • 首先参考该文 1、fopen,fclose函数举例 ... //指针使用前需要进行判断是否为空 } if(fi) { fclose(); fi = NULL; //对变量进行复位是个好习惯 } 2、open,close函数举例 int fd = -1; //文件描述符初始化

    首先参考该文

    1、fopen,fclose函数举例

    FILE* fi = NULL;    //指针初始化
    FILE* fi = fopen();    //指针赋值
    if(fi)
    {
        fread(fi);
        //do sth.    //指针使用前需要进行判断是否为空
    }
     
     
     
    if(fi)
        {
     fclose();
     fi = NULL;  //对变量进行复位是个好习惯 
    }
    

    2、open,close函数举例

    int fd = -1;    //文件描述符初始化
    fd = open();    //文件描述符赋值
    if(fd!=-1)
    {
        read(fd);
        //do sth.    //文件描述符使用前需要进行判断是否赋值成功
    }
     
    if(fd!=-1)
    {
         close();
         fd = -1;  //文件描述符在调用close函数后重新置-1,否则关闭的时候没法判断是否是打开的。
    }
    

     由上述两个例子可以看出,在关闭的时候,需要对文件指针和文件描述符进行复位操作。因为,需要通过文件指针的值和文件描述符的值进行判断,是否打开了,这一点一定要记住。

    展开全文
  • 函数一般用于打开文件,和file_get_contents()函数的作用差不多。一、fopen()函数1、fopen() 函数打开文件或者 URL。如果打开失败,本函数返回 FALSE。打开成功的话,会返回一个资源。2、fopen(filename,mode,...

          本篇主要学习php的fopen()函数。此函数一般用于打开文件,和file_get_contents()函数的作用差不多。

    一、fopen()函数

    1、fopen() 函数打开文件或者 URL。如果打开失败,本函数返回 FALSE。打开成功的话,会返回一个资源。

    2、fopen(filename,mode,include_path,context)

    常用的参数主要是filename和mode。这里的filename代表我们要打开的文件路径或者url的链接。mode是规定要求到该文件/流的访问类型。
    具体可参考手册:http://www.w3school.com.cn/php/func_filesystem_fopen.asp

    3、常见例子:

    1)在E盘下新建文件,text.txt
    这里写图片描述

    2)使用下面的代码打开

     $file = fopen("E:/text.txt","r");
    
        if ($file){
    
          //接着采用while循环(后面语言结构语句中的循环结构会详细介绍)一行行地读取文件,然后输出每行的文字
    
          while (!feof($file)) { //判断是否到最后一行
    
            $line = fgets($file); //读取一行文本
    
            echo $line; //输出一行文本
    
            echo "<br />"; //换行
    
          }
    
        }
    
        fclose($file);//关闭文件

    执行这段代码之后,浏览器上就能输出我们写在text.txt文件中的内容了。

    二、feof(),fgets(),fclose()函数讲解

    1、feof()函数

          1)feof() 函数检测是否已到达文件末尾 (eof)。

          如果文件指针到了 EOF 或者出错时则返回 TRUE,否则返回一个错误(包括 socket 超时),其它情况则返回 FALSE。我们上面的代码,在获取到$file资源之后,循环判断是否到了文件结尾,没到结尾的话,就继续执行下面的代码。

          2)注意

          提示:feof() 函数对遍历长度未知的数据很有用。

          注意:如果服务器没有关闭由 fsockopen() 所打开的连接,feof() 会一直等待直到超时而返回 TRUE。默认的超时限制是 60 秒,可以使用 stream_set_timeout() 来改变这个值。

          注意:如果传递的文件指针无效可能会陷入无限循环中,因为 EOF 不会返回 TRUE。

    2、fgets()函数

          1)fgets() 函数从文件指针中读取一行。

    3、fclose()

          1) fclose() 函数关闭一个打开文件。

          fclose() 函数关闭该指针指向的文件。如果成功则返回 true,否则返回 false。文件指针必须有效,并且是通过 fopen() 或 fsockopen() 成功打开的。

    三、使用fopen()打开中文名的文件

    1、当我把text.txt改成“哈哈.txt”,指向上面的代码。

    报错:
    这里写图片描述

    也就是说,不能直接用fopen()来打开中文名的文件,这里,我们需要进行一些处理。

    2、修改中文名的编码

    //使用这行代码即可解决,可以正常的打开文件
     $file = fopen ( iconv ( 'UTF-8', 'GBK', 'E:/哈哈.txt' ), 'r' );

    四、fopen()的一些使用问题

    1、fopen()函数的使用比起file_get_contents()函数麻烦一些。在大多数情况下,还是使用file_get_contents()函数要方便一些。file_get_contents()的使用方法:http://blog.csdn.net/LJFPHP/article/details/78552961

    2、在打开比较大的文件的时候,使用file_get_contents()函数会加大内存的占用率,这是非常不合适的。因此这种情况下,更建议使用fopen()函数。

    3、关于为什么每次使用fopen()函数,后面都要用fclose()函数关闭文件的问题。正常来说php的资源会在脚本结束的时候全部释放掉,因此普遍的情况都可以省略fclose。不过如果你fopen了一个很大的文件,早点fclose会比较节省资源。也算是良好编码习惯的一种。

    end

    展开全文
  • 第9.2节 Python的文件打开函数open详解

    千次阅读 2019-07-25 18:19:50
    在操作一个文件前,大部分情况需要先打开文件,才能进行,在Python中使用内置函数open来打开一个文件。open函数是Python的一个内置函数,io模块 定义的函数open是该内置函数的同义词(这是Python官网中关于io.open...
  • 判断文件结束函数(feof)

    千次阅读 2013-05-25 16:26:22
    函数feof(fp//文件指针)用于测试fp所指向的文件内部位置指针是否指向文件结束。如果是文件结束,函数feof(fp)的值为1(真),如果不结束,函数feof(fp)的值为0(假),feof函数判断二进制文件和文本文件的...
  • 判断文件结束函数feof 例C语言-概念-调用getc(fgetc)和putc(fputc)函数进行输入和输出中,程序从一个磁盘文件中逐个读取字符并输出到屏幕上显示,在while循环中以EOF作为文件结束的标志。这种以EOF作为文件结束...
  • C语言文件流操作函数大全

    千次阅读 2011-09-02 19:01:06
    clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include 定义函数 void clearerr(FILE * stream);...函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值
  • C语言open()函数:打开文件函数

    千次阅读 2016-08-17 10:42:41
    相关函数:read, write, fcntl, close, link, stat, umask, unlink, fopen 头文件:#include #include #include 定义函数:  int open(const char * pathname, int flags);  int open(const char * ...
  •   因为.eof()的机制,按照...只有当再往下读取时,发现文件已经到结尾了,才会将标志eofbit修改为true 所以当刚创建fstream file时,就判断file.eof()的话,一定为false 在file.eof()前加file.peek(); peek函...
  • linux open函数打开文件

    千次阅读 2013-12-02 16:24:29
    Linux中打开文件是通过open系统调用实现,其函数中调用了do_sys_open()函数完成打开功能,所以下面主要分析do_sys_open()函数,首先先看下open系统调用的入口函数,再具体看do_sys_open()函数: SYSCALL_DEFINE3...
  • 打开文件open()函数的使用方法详解

    万次阅读 2017-12-22 22:38:35
    头文件:#include #include #include 定义函数:  int open(const char * pathname, int flags);  int open(const char * pathname, int flags, mode_t mode);...参数 pathname 指向欲打开文件路径字符串. 下
  • open()—打开文件函数

    千次阅读 2014-04-13 14:10:09
    头文件:#include #include #include 定义函数:  int open(const char * pathname, int flags);  int open(const char * pathname, int flags, mode_t mode);...参数 pathname 指向欲打开文件路径字符串. 下
  • 之前做的一个项目需要读取一个文件中的数据,文件中的数据类型确定,大小不确定,每次读取完文件要计算出...判断文件结尾,结尾返回非零值,否则返回零值。 fscanf 函数原型:int fscanf (FILE *stream, char *forma...
  • 文件 mode 模式字符的含义 字符含义 ...以只读方式打开(默认) ...以只写方式打开,删除原有文件内容(如果文件不存在,则创建该文件并以只写方式打开) ...以只写文件打开一个文件,如果有原文件则追加到文件末尾 ...
  • fstream 中判断是否成功打开文件

    万次阅读 2014-11-30 18:43:07
    关于C++ fstream的一个容易使用出错的地方 ...关于c++ 中 文件流的两个类,ifstream 和ofstream,大家也许并不陌生。...基本上所以语言都会提供类似的文件输入文件输出类。   但当大家学习
  • 最近做一个课题,要求winform...通过查找资料发现C#本身是很难判断一个文件是否打开的,相关资料给出需用到windowsAPI来实现,这种方法按理说是可以的,但也许是我没有完全领会到相关函数的意义和返回值,致使不能判
  • C语言文件操作函数

    千次阅读 2017-04-18 22:27:52
    C语言文件操作函数整体概述 endgrent():关闭文件(关闭组文件) endpwent():关闭文件(关闭密码文件) endutent():关闭文件(关闭utmp文件) fgetgrent():读取组格式函数 fgetpwent():读取密码格式 getdgid():...
  • 文件  文件:把文件分块慢慢传过去,像水流一样所以叫文件,即文件如果存储或者读取,都不是一下子运行的,而是一段一段加载的。例子:网络视频,下面的进度栏  文件分类: ...打开文件
  • C语言fclose()函数:关闭文件流

    千次阅读 2016-10-10 15:34:18
    fclose()函数用来关闭当前文件流,其原型为:  int fclose(FILE * stream); 【参数】stream为文件流指针。 【返回值】若关文件动作成功则返回0,有错误发生时则返回EOF,并把错误代码存到errno。 fclose...
  • 函数原型 void open (const char* filename, ios_base::openmode mode = ios_base::in | ios_base::out); 其中 filename 为文件名字 openmode 如下: in input 以读的方式打开,即input 内存 ...
  • 语言:C/C++ 测试环境:VS2015 由于VS的高版本对文件操作的安全性有了较高的要求,...2.在使用上,函数fopen的返回值是文件指针,如果返回的文件指针为NULL时,则表示打开文件失败。而函数fopen_s的返回值是相应的...
  • 一、文件 ofstream,由ostream派生而来,用于写文件 ifstream,由istream...说明了对象之后,可使用函数open()打开文件。文件的打开即是在与文件之间建立一个连接 函数原型 void open(const char * filename,
  • 打开文件open()函数的使用方法详解--C语言函数

    万次阅读 多人点赞 2015-02-23 16:23:01
    头文件:#include #include #include 定义函数:  int open(const char * pathname, int flags);  int open(const char * pathname, int flags, mode_t mode);...参数 pathname 指向欲打开文件路径字符串. 下
  • 函数fopen_s打开数据文件

    万次阅读 多人点赞 2015-06-06 13:24:33
    ## **用函数fopen_s打开数据文件** ##学习C语言,对文件的输入和输出,打开一个数据文件,一般教材用fopen函数,但是一些编译器编译无法通过,笔者用的Vs2013,提示用fopen_s函数代替,fopen_s函数怎么用呢?...
  • fopen(打开文件) 相关函数 open,fclose 表头文件 #include 定义函数 FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着...
  • C语言文件读取函数

    千次阅读 2019-09-02 22:04:07
    相关函数 fgets 读取一行 feof 判断文件是否结束 fopen 打开文件 返回一个文件指针 fgetc 读取一个字节
  • 请教各位大佬,想通过C++程序向EXCEL文件写入数据,但这个文件打开了就写不进去了,请问如何判断这个文件是否已经打开

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 317,419
精华内容 126,967
关键字:

判断是否打开文件流的函数