最新国产AV资源网_亚洲熟女AV天堂五月天_中文字幕丶东京热_中文字幕乱码免费高清视频

Hi,您好,歡迎來到西安盛圖軟件科技有限公司!

C++ File文件處理 刪除文件和文件夾目錄

發(fā)布時間:2023-12-08 14:05:18

在C++程序開發(fā)中,也會遇到很多文件上傳,文件寫入等對于文件的操作業(yè)務(wù)需要開發(fā),文件處理也是任何應(yīng)用程序的重要組成部分。C++有幾種創(chuàng)建,讀取,更新和刪除文件的方法。本文主要介紹C++ File文件操作刪除文件和目錄。


1、刪除文件

要使用C++ 刪除文件,需要使用int remove(const char * filename);方法,filename為要刪除的文件名,可以為一目錄。如果參數(shù)filename 為一文件,則調(diào)用unlink()處理;若參數(shù)filename 為一目錄,則調(diào)用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  參數(shù)filename 指針超出可存取內(nèi)存空間。

3)ENAMETOOLONG  參數(shù)filename 太長。

4)ENOMEM  核心內(nèi)存不足。

5)ELOOP  參數(shù)filename 有過多符號連接問題。

6)EIO I/O存取錯誤。


2、刪除文件夾

除了能刪除文件,也可以使用int rmdir( const char *dirname );刪除文件夾。刪除成功則返回0,失敗則返回-1,錯誤原因存于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;
 //輸出錯誤信息
 cout << strerror(errno);
 return(0);
}


3、刪除某個目錄及目錄下的所有子目錄和文件

刪除某個目錄及目錄下的所有子目錄和文件。remove()只能刪除某個文件或者空目錄,要想要刪除某個目錄及其所有子文件和子目錄,要使用遞歸進(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"

歡迎登錄盛圖科技

歡迎注冊盛圖科技

已有賬號,立即登錄