.建文件夹

2024-09-06 13:18
文章标签 文件夹

本文主要是介绍.建文件夹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


.建文件夹
int _mkdir(const char *path,mode_t mode);
函数名: _mkdir   
功 能: 建立一个目录   
用 法: int _mkdir( const char *dirname );   
头文件库:direct.h   
返回值:创建一个目录,若成功则返回0,否则返回-1

=====================================================

2.打开文件fopen()

函数功能: 打开一个文件   
函数原型:FILE * fopen(const char * path,const char * mode);
所需库: <stdio.h>
返回值: 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。   

一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
if((fin = fopen("a.txt","r")) == NULL)
 printf("Open file error.\n");

参数说明:   
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。   
mode有下列几种形态字符串:  (常用的就前几个,后面用到了再查,不用记) 
r 以只读方式打开文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

rb 为输入打开一个二进制文件。
wb 只写打开或新建一个二进制文件;只允许写数据。
ab 向二进制文件尾添加数据

r+ 以可读写方式打开文件,该文件必须存在。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

rb+ 读写打开一个二进制文件,只允许读数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。   

rt+ 读写打开一个文本文件,允许读和写。  
wt+ 读写打开或着建立一个文本文件;允许读写。   
at+ 读写打开一个文本文件,允许读或在文本末追加数据。   


上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。   
有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。

==========================================================

3.关闭文件 fclose()
在使用完一个文件后应该关闭它,以防止它再误用,关闭就是指文件指针变量不指向该文件,也就是文件指针变量与文件脱钩,此后不能再通过该指针对原来与其相联系的文件进行读写操作。除非再次打开,使该指针变量重新指向该文件。

  用 fclose 函数关闭文件,fclose 函数调用的一般形式为

  fclose(文件指针);

  例如:

  fclose(fp);

  应该养成在程序终止之前关闭所有文件的习惯,如果不关闭文件将丢失数据。因为如前所述,在向文件写数据时,是先将数据输到缓冲区,待缓冲区充满后才正式输出给文件,如果当数据未充满缓冲区,而程序结束运行,就会将缓冲区中的数据丢失,用 fclose 函数关闭文件,可以避免这个问题,它先把缓冲区中的数据输出到磁盘文件,然后才释放文件指针变量。

  fclose 函数也带回一个值,当顺利地执行了关闭操作,则返回值为 0 ,否则返回 EOF (-1) 。可以用 ferror 函数来测试。
==============================================================
下面用一个程序来说明上面几个函数用法:

将a.txt拷贝到/test目录下,名字也为a.txt

[cpp] view plain copy print ?
  1. /** 
  2.  * Author: Gneveek 
  3.  * Data: 2011-10-6 
  4.  * Descripition:  Clock Chen's Homework : File operation #1 
  5.  * 一、将a.txt拷贝到/test目录下,名字也为a.txt 
  6.  */   
  7. #include <stdio.h>  
  8. #include <direct.h> //用 _mkdir()创建一个文件夹(目录)   
  9. int main()  
  10. {  
  11.     _mkdir("test");  
  12.       
  13.     char c;  
  14.     FILE *fin, *fout;  
  15.     if((fin = fopen("a.txt","r")) == NULL)  
  16.         printf("I'm so sorry,Open file error.\n");  
  17.     if((fout = fopen("test\\a.txt","w")) == NULL) //以 w 方式,只能用于往文件中写,如果不存在,则以指定的文件名新建一个文件  
  18.         printf("I'm so sorry,Open file error.\n");  
  19.           
  20.     while((c = fgetc(fin)) != EOF)  
  21.         fputc(c,fout);     
  22.           
  23.     fclose(fin);  
  24.     fclose(fout);  
  25.     return 0;  
  26. }  
/*** Author: Gneveek* Data: 2011-10-6* Descripition:  Clock Chen's Homework : File operation #1* 一、将a.txt拷贝到/test目录下,名字也为a.txt*/ 
#include <stdio.h>
#include <direct.h> //用 _mkdir()创建一个文件夹(目录) 
int main()
{_mkdir("test");char c;FILE *fin, *fout;if((fin = fopen("a.txt","r")) == NULL)printf("I'm so sorry,Open file error.\n");if((fout = fopen("test\\a.txt","w")) == NULL) //以 w 方式,只能用于往文件中写,如果不存在,则以指定的文件名新建一个文件printf("I'm so sorry,Open file error.\n");while((c = fgetc(fin)) != EOF)fputc(c,fout);	 fclose(fin);fclose(fout);return 0;
}


================================================================
4.判断文件是否存在和是否可读可写
int access(const char *pathname,int mode);

pathname:是文件名称
mode是我们要判断的属性.可以取以下值或者是他们的组合:
R_OK文件可以读
W_OK文件可以写
X_OK文件可以执行
F_OK文件存在.

当我们测试成功时,函数返回0,否则如果有一个条件不符时,返回-1.

用一个程序实例来认识这个函数:
输入一个文件名(在命令行中输入),判断该文件是否存在,并且可读,不存在提示不存在,不可读提示不可读,如果存在并可读,则在当前目录下,创建一个目录test,并将该文件拷贝到test中

[cpp] view plain copy print ?
  1. /** 
  2.  * Author: Gneveek 
  3.  * Data: 2011-10-6 
  4.  * Descripition:  Clock Chen's Homework : File operation #2 
  5.  *二、输入一个文件名(在命令行中输入),判断该文件是否存在,并且可读, 
  6.  *不存在提示不存在,不可读提示不可读,如果存在并可读, 
  7.  *则在当前目录下,创建一个目录test,并将该文件拷贝到test中 
  8.  */   
  9. #include <stdio.h>  
  10. #include <io.h>  
  11. #include <direct.h>   
  12. #include <string.h>  
  13.   
  14. int main()  
  15. {  
  16.     FILE *fin, *fout;  
  17.     char filename[256];   
  18.     char pathname[256] = "test\\";     
  19.     scanf("%s",filename);  
  20.     if(access(filename,F_OK) == -1) //判断存在与否   
  21.         printf("This file does not exist!\n");  
  22.     else if(access(filename,R_OK) == -1) //如果存在,判断可读否   
  23.         printf("Cann't Read!\n");  
  24.     else                              //到这里,说明即存在又可读   
  25.     {  
  26.         char c;  
  27.         _mkdir("test");       
  28.           
  29.         strcat(pathname,filename);            
  30.           
  31.         fin = fopen(filename,"r");    
  32.         fout = fopen(pathname,"w");  
  33.           
  34.         while((c = fgetc(fin)) != EOF)  
  35.             fputc(c,fout);  
  36.     }  
  37.     return 0;  
  38. }  

这篇关于.建文件夹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142112

相关文章

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

Python在固定文件夹批量创建固定后缀的文件(方法详解)

《Python在固定文件夹批量创建固定后缀的文件(方法详解)》文章讲述了如何使用Python批量创建后缀为.md的文件夹,生成100个,代码中需要修改的路径、前缀和后缀名,并提供了注意事项和代码示例,... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5.

Python使用pysmb库访问Windows共享文件夹的详细教程

《Python使用pysmb库访问Windows共享文件夹的详细教程》本教程旨在帮助您使用pysmb库,通过SMB(ServerMessageBlock)协议,轻松连接到Windows共享文件夹,并列... 目录前置条件步骤一:导入必要的模块步骤二:配置连接参数步骤三:实例化SMB连接对象并尝试连接步骤四:

如何将文件夹里的PHP代码放到一个文件里

find ./dir -name "*.php" -exec 'cat' {} \; > dir.out

Linux 删除 当前下的 mysql-8.0.31 空文件夹

在Linux中,如果你想要删除当前目录下的名为mysql-8.0.31的空文件夹(即该文件夹内没有任何文件或子文件夹),你可以使用rmdir命令。但是,如果mysql-8.0.31文件夹并非完全为空(即它包含文件或子文件夹),rmdir命令会失败。 如果你的目标是删除mysql-8.0.31文件夹及其内部的所有内容(无论是否为空),你应该使用rm命令结合-r(或-R,它们是等价的)选项来递归地删