多级目录创建

本文介绍了一个名为`pathtool`的C++库,包括创建多级路径和检查路径是否存在的函数,同时展示了在Windows和Linux系统下的差异处理。着重讲解了如何在不同平台上创建路径,适合于系统工具开发和跨平台应用。
摘要由CSDN通过智能技术生成

Linux-C++

header:

#ifndef TESTFUN_PATH_TOOL_H__
#define TESTFUN_PATH_TOOL_H__
namespace pathtool {
	bool CreateMultiLevelPath(const char *path);
    int CreatePathIfNoExist(const char *path);
};

#endif

cpp:

#include "path_tool.h"

#ifdef WIN32
#include <io.h>
#else
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#endif

#include <string>
using namespace std;
int pathtool::CreatePathIfNoExist(const char* path)
{
	if (0 == access(path, F_OK))
		return 0;
#ifdef WIN32
	return mkdir(path);
#else
	return mkdir(path, 0777);
#endif
	return 0;
}

bool pathtool::CreateMultiLevelPath(const char *path)
{
	if (0 == CreatePathIfNoExist(path))
		return true;

	string targt_path = path;
	int pre_split = 0;
	size_t path_len = targt_path.length();
	for (size_t i = 0; i < path_len; ++i){
		if ('/' != targt_path[i] && '\\' != targt_path[i])
			continue;
		char old_char = targt_path[i];
		targt_path[i] = '\0';
		if (0 != CreatePathIfNoExist(targt_path.c_str()))
			return false;
		targt_path[i] = old_char;
	}

	return 0 == CreatePathIfNoExist(path);
}

Golang

func IsFileExist(fileName string) (bool, bool) {
	s, err := os.Stat(fileName)
	if err != nil {
		return false, false
	}

	return true, s.IsDir()
}

//暂时发现创建路径仅能创建一级,如果多级目录会创建失败
//增加多级目录创建
func CreateFoler(path string) bool {
	isExist, isDir := IsFileExist(path)
	if isExist && isDir {
		return true
	}

	subPath := strings.Split(path, "/")
	fullPath := ""
	for _, iter := range subPath {
		if len(iter) <= 0 {
			continue
		}

		fullPath += "/" + iter
		isExist, isDir := IsFileExist(fullPath)
		if isExist && !isDir {
			return false
		}
		if isExist {
			continue
		}
		err := os.Mkdir(fullPath, os.ModePerm)
		if err != nil {
			return false
		}
	}

	return true
}

Linux 创建多级目录可以采用两种方法: ### 使用`mkdir`命令 #### 单级目录创建: 最基础的方式是在命令行直接输入 `mkdir 目录名` ,例如 `mkdir testdir`。 #### 多级目录创建: 为了创建多级目录,需要逐层递进地创建。假设我们想要创建一个名为 `example` 的目录,并在其下再创建两个子目录 `level1` 和 `level2`,则可以按照以下步骤操作: 1. 首先进入目标目录路径,如果你希望将新目录放在当前目录下的某个位置,则首先进入该目录。 ```bash cd /path/to/current/directory/ ``` 2. 接着,在终端输入 `mkdir level1 level2` 来同时创建两个子目录。这一步会在当前目录下生成 `level1` 和 `level2` 这两个目录。 如果需要进一步向下创建更深层次的目录结构,只需继续添加更多的目录名到 `mkdir` 命令中即可。比如要创建一个更深一层的目录 `subfolder`,可以直接这样做: ```bash mkdir -p example/level1/subfolder ``` 这里 `-p` 参数表示递归创建目录,即会自动创建所有不存在的上层目录。 ### 使用其他工具 除了基本的 `mkdir` 命令外,还可以借助文本编辑器、图形界面文件管理器等工具来创建多级目录。这些工具提供了一种更为直观的交互式体验。 - **文本编辑器**:虽然主要功能不是用于创建目录,但在一些特定环境下,通过脚本或批处理文件,利用编辑器的命令行功能也可以实现批量创建目录的需求。 - **图形界面文件管理器**:如 Nautilus (Ubuntu) 或 Thunar (Xfce),这些工具提供了拖放功能以及方便快捷的“新建”、“复制”和“粘贴”选项,用户可以在文件资源管理器中轻松创建多级目录。 总的来说,Linux 中创建多级目录主要是依赖于命令行操作和文件管理器提供的工具。无论是基于文本还是图形界面,都需要明确路径并按需创建新的目录层级。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值