C++ File文件處理 刪除文件和文件夾目錄
發(fā)布時(shí)間:2023-12-08 14:05:18
在C++程序開(kāi)發(fā)中,也會(huì)遇到很多文件上傳,文件寫(xiě)入等對(duì)于文件的操作業(yè)務(wù)需要開(kāi)發(fā),文件處理也是任何應(yīng)用程序的重要組成部分。C++有幾種創(chuàng)建,讀取,更新和刪除文件的方法。本文主要介紹C++ File文件操作刪除文件和目錄。
1、刪除文件
要使用C++ 刪除文件,需要使用int remove(const char * filename);
方法,filename
為要?jiǎng)h除的文件名,可以為一目錄。如果參數(shù)filename
為一文件,則調(diào)用unlink()
處理;若參數(shù)filename
為一目錄,則調(diào)用rmdir()
來(lái)處理。刪除成功則返回0
,失敗則返回-1
,錯(cuò)誤原因存于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;
}
//輸出錯(cuò)誤信息
cout << strerror(errno);
return 0;
}
錯(cuò)誤代碼:
1)EROFS
欲寫(xiě)入的文件為只讀文件。
2)EFAULT
參數(shù)filename
指針超出可存取內(nèi)存空間。
3)ENAMETOOLONG
參數(shù)filename
太長(zhǎng)。
4)ENOMEM
核心內(nèi)存不足。
5)ELOOP
參數(shù)filename
有過(guò)多符號(hào)連接問(wèn)題。
6)EIO
I/O存取錯(cuò)誤。
2、刪除文件夾
除了能刪除文件,也可以使用int rmdir( const char *dirname );
刪除文件夾。刪除成功則返回0
,失敗則返回-1
,錯(cuò)誤原因存于errno
。但是,刪除的文件夾必須為空:
例如,
#include <unistd.h>
#include <stdlib.h> /* for system()函數(shù) */
#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;
//輸出錯(cuò)誤信息
cout << strerror(errno);
return(0);
}
3、刪除某個(gè)目錄及目錄下的所有子目錄和文件
刪除某個(gè)目錄及目錄下的所有子目錄和文件。remove()
只能刪除某個(gè)文件或者空目錄,要想要?jiǎng)h除某個(gè)目錄及其所有子文件和子目錄,要使用遞歸進(jìn)行刪除。
例如,
#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"
-
在線客服
-
聯(lián)系電話
熱線電話
029-89324757
-
手機(jī)站點(diǎn)
手機(jī)掃一掃打開(kāi)
-
關(guān)注微博
-
回到頂部