在C++程序开发中,也会遇到很多文件上传,文件写入等对于文件的操作业务需要开发,文件处理也是任何应用程序的重要组成部分。C++有几种创建,读取,更新和删除文件的方法。本文主要介绍C++ File文件操作删除文件和目录。
1、删除文件
要使用C++ 删除文件,需要使用int remove(const char * filename);方法,filename为要删除的文件名,可以为一目录。如果参数filename 为一文件,则调用unlink()处理;若参数filename 为一目录,则调用rmdir()来处理。删除成功则返回0,失败则返回-1,错误原因存于errno。C++中头文件是#include <cstdio>。
例如,错误代码:
1)EROFS 欲写入的文件为只读文件。
2)EFAULT 参数filename 指针超出可存取内存空间。
3)ENAMETOOLONG 参数filename 太长。
4)ENOMEM 核心内存不足。
5)ELOOP 参数filename 有过多符号连接问题。
6)EIO I/O存取错误。
2、删除文件夹
除了能删除文件,也可以使用int rmdir( const char *dirname );删除文件夹。删除成功则返回0,失败则返回-1,错误原因存于errno。但是,删除的文件夹必须为空:
例如,
1、删除文件
要使用C++ 删除文件,需要使用int remove(const char * filename);方法,filename为要删除的文件名,可以为一目录。如果参数filename 为一文件,则调用unlink()处理;若参数filename 为一目录,则调用rmdir()来处理。删除成功则返回0,失败则返回-1,错误原因存于errno。C++中头文件是#include <cstdio>。
例如,
- #include<iostream>
- #include<cstdio>
- #include <string.h>
- using namespace std;
- int main()
- {
- char *savePath = "/home/cjavapy/hello.txt";
- if(remove(savePath)==0)
- {
- cout<<"删除成功"<<endl;
- }
- else
- {
- cout<<"删除失败"<<endl;
- }
- //输出错误信息
- cout << strerror(errno);
- return 0;
- }
1)EROFS 欲写入的文件为只读文件。
2)EFAULT 参数filename 指针超出可存取内存空间。
3)ENAMETOOLONG 参数filename 太长。
4)ENOMEM 核心内存不足。
5)ELOOP 参数filename 有过多符号连接问题。
6)EIO I/O存取错误。
2、删除文件夹
除了能删除文件,也可以使用int rmdir( const char *dirname );删除文件夹。删除成功则返回0,失败则返回-1,错误原因存于errno。但是,删除的文件夹必须为空:
例如,
- #include <unistd.h>
- #include <stdlib.h> /* for system()函数 */
- #include<iostream>
- #include<cstdio>
- #include <string.h>
- using namespace std;
- int main( void )
- {
- system("mkdir mydir");
- system("ls -l mydir");
- //getchar();
- printf("%s","删除文件夹\n");
- cout << "返回值:" << rmdir("mydir") <<endl;
- //输出错误信息
- cout << strerror(errno);
- return(0);
- }
- #include <stdio.h>
- #include <sys/stat.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <errno.h>
- #include <dirent.h>
- #include <string.h>
- using namespace std;
- void error_quit( const char *msg )
- {
- perror( msg );
- exit( -1 );
- }
- void change_path( const char *path )
- {
- printf( "Leave %s Successed . . .\n", getcwd( NULL, 0 ) );
- if ( chdir( path ) == -1 )
- error_quit( "chdir" );
- printf( "Entry %s Successed . . .\n", getcwd( NULL, 0 ) );
- }
- void rm_dir( const char *path )
- {
- DIR *dir;
- struct dirent *dirp;
- struct stat buf;
- char *p = getcwd( NULL, 0 );
- if ( (dir = opendir( path ) ) == NULL )
- error_quit( "OpenDir" );
- change_path( path );
- while ( dirp = readdir( dir ) )
- {
- if ( (strcmp( dirp->d_name, "." ) == 0) || (strcmp( dirp->d_name, ".." ) == 0) )
- continue;
- if ( stat( dirp->d_name, &buf ) == -1 )
- error_quit( "stat" );
- if ( S_ISDIR( buf.st_mode ) )
- {
- rm_dir( dirp->d_name );
- /*if(rmdir(dirp->d_name)==-1)
- * error_quit("rmdir");
- * printf("rm %s Successed . . .\n",dirp->d_name);*/
- continue;
- }
- if ( remove( dirp->d_name ) == -1 )
- error_quit( "remove" );
- printf( "rm %s Successed . . .\n", dirp->d_name );
- }
- closedir( dir );
- change_path( p );
- if ( rmdir( path ) == -1 )
- error_quit( "rmdir" );
- printf( "rm %s Successed . . .\n", path );
- }
- int main( int argc, char **argv )
- {
- // if ( argc < 2 )
- //{
- //fprintf( stderr, "<用法>: %s + pathname", argv[0] );
- //return(-1);
- //}
- rm_dir("/tmp/");
- return(0);
- }
"小礼物走一走,来肥宅自学平台支持我"
评论区
共条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~
首页上页1下页尾页