c++文件及文件夹操作(一)

文件夹的操作和文件的操作有许多种方式,这一系列的文章将介绍C++对文件的操作,本篇blog介绍文件夹和文件的创建和删除,以及判断他们是否存在

如何创建一个文件夹?

1、 使用dos命令

int FileOperate::CreateFolderByDos(string strName)
{
	string strFolder = "md ";
	strFolder += strName;
	return system(strFolder.c_str());
}
       这里要注意,文件夹的格式必须是 F:\\ 格式的,不要使用反斜杠 /否则创建失败

      2、 使用windows提供的API

int FileOperate::CreateFolderByAPI(string strName)
{
	size_t size = strName.length();
	wchar_t *buffer = new wchar_t[size+1];
	MultiByteToWideChar( CP_ACP, 0, strName.c_str(), size, buffer, size * sizeof(wchar_t) );
	buffer[size] = 0;  // 确保以 '\0' 结尾 
	int tmp = CreateDirectory(buffer,0);
	delete buffer;
	return tmp;
}

    如何删除一个文件夹

    1、 使用DOS命令

int FileOperate::DelFolderByDos(string strName)
{
	string strFolder = "rd ";
	strFolder += strName;
	return system(strFolder.c_str());
}
注意文件夹名称不要使用反斜杠

    2、 使用windowsAPI

bool FileOperate::DelFolderByAPI(string strName)
{
	size_t size = strName.length();
	wchar_t *buffer = new wchar_t[size+1];
	MultiByteToWideChar( CP_ACP, 0, strName.c_str(), size, buffer, size * sizeof(wchar_t) );
	buffer[size] = 0;  // 确保以 '\0' 结尾 
	BOOL bResult =  RemoveDirectory(buffer);
	delete buffer;
	if(bResult==TRUE)
	{
		return true;
	}
	return false;
}


      创建一个新文件

      1、 使用流式文件操作方法

bool FileOperate::CreateFileByFILE(string strName)
{
	FILE* file = fopen(strName.c_str(),"wb");
	if(NULL == file)
	{
		return false;
	}
	fclose(file);
	return true;
}

      2、 使用I/O操作方法

bool FileOperate::CreateFileByIO(string strName)
{
	int handle = open(strName.c_str(),O_RDWR|O_CREAT);
	if(-1==handle)
	{
		return false;
	}
	
	close(handle);
	return true;
}

     删除文件

    使用流式文件操作方法

int FileOperate::DeleteFileByFILE(string strName)
{
	return remove(strName.c_str());
}

    判断一个文件夹是否存在

    使用PathIsDirectory 函数,引入头文件 

    

#include<Shlwapi.h>
#pragma comment(lib, "shlwapi.lib")
    实例代码

bool FileOperate::IsFolderExist(string strName)
{
	size_t size = strName.length();
	wchar_t *buffer = new wchar_t[size+1];
	MultiByteToWideChar( CP_ACP, 0, strName.c_str(), size, buffer, size * sizeof(wchar_t) );
	buffer[size] = 0;  // 确保以 '\0' 结尾 
	BOOL bExist = PathIsDirectory(buffer);
	delete buffer;
	return bExist==FALSE?false:true;
}
      判断一个文件是否存在

bool FileOperate::IsFileExist(string strName)
{
	return (access(strName.c_str(), 0) == 0); 
}



  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在计算机中,C语言中的判断文件文件夹的一个常用方法是使用文件处理函数。通过调用这些函数,可以判断指定路径下的对象是文件还是文件夹。 其中,常用的文件处理函数包括stat、lstat和fstat。这些函数可以获取文件文件夹的详细信息,通过判断其中的属性来确定其是文件还是文件夹。 具体实现的步骤如下: 1. 包含相关头文件,例如<sys/types.h>和<sys/stat.h>。 2. 创建一个存储文件状态信息的结构体变量,例如struct stat类型的变量。 3. 使用stat、lstat或fstat函数,传入需要判断的文件文件夹的路径作为参数,并将返回的结果保存到结构体变量中。 4. 通过检查结构体变量中的st_mode字段来判断文件类型。 - 如果st_mode字段中的标志位S_ISREG为真,则表示是一个普通文件。 - 如果st_mode字段中的标志位S_ISDIR为真,则表示是一个文件夹。 - 其他标志位可以用来判断是否是符号链接、字符设备等其他类型。 5. 根据文件类型进行相应的操作。 例如,可以使用以下代码判断文件类型: ```c #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> int main() { struct stat fileInfo; const char* path = "example.txt"; // 替换成需要判断的文件路径 if (stat(path, &fileInfo) == 0) { if (S_ISREG(fileInfo.st_mode)) { printf("这是一个文件。\n"); } else if (S_ISDIR(fileInfo.st_mode)) { printf("这是一个文件夹。\n"); } else { printf("其他类型。\n"); } } else { printf("文件不存在或访问出错。\n"); } return 0; } ``` 以上是一个简单的示例代码,通过调用stat函数来判断文件类型。根据返回的文件信息中的st_mode字段,我们可以了解文件的具体类型,并进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值