C 判断路径存在
1 用 int access(const char *pathname, int mode); 判断有没有此文件或目录 --它区别不出这是文件还是目录
2 用 int stat(const char *file_name, struct stat *buf); 判断该文件或目录是否否存在 ;得到st_mode,然后判断是不是目录文件。
stat()系统调用看是否成功,不成功就不存在,成功判断返回的st_mode是否是一个文件夹。
********************************************************************
linux c关于目录是否存在,新建目录等操作
1. 创建目录
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
运用条件:只能在已存在的目录下建立一级子目录
返回值: 返回0表示成功,返回-1表述出错。
mode 表示新目录的权限,可以取以下值:
其中,mode就用0777,0755这种形式。
2. 判断一个目录是否存在
可以使用opendir来判断,这是比较简单的办法。
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);
The opendir() function opens a directory stream corresponding to the directory name, and returns a pointer to the directory
stream. The stream is positioned at the first entry in the directory.
代码
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <cstddef>
int main()
{
if(NULL==opendir("/d1/liujian/readdb/adTest/data/html"))
mkdir("/d1/liujian/readdb/adTest/data/html",0775);
return 0;
}
以上代码可以测试一个目录是否存在,如果不存在就创建这个目录。
***********************************
#include<stdio.h>
#include<string.h>
#include<errno.h>
#include<unistd.h>
#include<dirent.h>
#include<sys/types.h>
#include<sys/stat.h>
extern int errno;
#define MODE (S_IRWXU | S_IRWXG | S_IRWXO)
int mk_dir(char *dir)
{
DIR *mydir = NULL;
if((mydir= opendir(dir))==NULL)//判断目录
{
int ret = mkdir(dir, MODE);//创建目录
if (ret != 0)
{
return -1;
}
printf("%s created sucess!/n", dir);
}
else
{
printf("%s exist!/n", dir);
}
return 0;
}
int mk_all_dir(char *dir)
{
bool flag = true;
char *pDir = dir;
while (flag)
{
char *pIndex = index(pDir, '/');
if (pIndex != NULL && pIndex != dir)
{
char buffer[512] = {0};
int msg_size = pIndex - dir;
memcpy(buffer, dir, msg_size);
int ret = mk_dir(buffer);
if (ret < 0)
{
printf("%s created failed!/n", dir);
}
}
else if (pIndex == NULL && pDir == dir)
{
printf("dir is not directory!/n");
return -1;
}
else if (pIndex == NULL && pDir != dir)
{
int ret = mk_dir(dir);
if (ret < 0)
{
printf("%s created failed!/n", dir);
}
break;
}
pDir = pIndex+1;
}
return 0;
}
int main()
{
char buffer[512] = {0};
printf("please input path mane/n");
fgets(buffer, sizeof(buffer), stdin);
char *pIndex = index(buffer, '/n');
if (pIndex != NULL)
{
*pIndex = '/0';
}
printf("check path mane %s/n", buffer);
int ret = mk_all_dir(buffer);
if (ret < 0)
{
printf("% mkdir failed!/n", buffer);
return -1;
}
return 0;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
int main(){ struct stat buf; stat("////etc",&buf); if (S_ISDIR(buf.st_mode) == 0) { printf("\n\t/etc is not directory !\n\n"); //mkdir("/etc/123", 0755); } else printf("\n\t/etc is directory !\n\n"); return 0;} |
#define FILENAME ***.****
BOOL Check(char * filename)
{
if(access(filename,0) == 0)
return true;
else
return false;
}
int main()
{
Check(FILENAME );
}
pasting
C 判断路径存在的更多相关文章
- shell 判断路径
判断路径 ];then echo "找到了123" if [ -d /root/Desktop/text ] then echo "找到了text" else ...
- C# 判断路径和文件存在
1.判断路径是否存在,不存在则创建路径: if (!System.IO.Directory.Exists(@"D:\Export")) { System.IO.Directory. ...
- git 判断路径是否是 git 仓库
git 判断路径是否是 git 仓库 import subprocess repo_dir = "../path/to/check/" command = ['git', 'rev ...
- C# 判断路径是否存在
定义文件状态枚举:0-路径为空,1-存在文件,2-路径不为空,但文件不存在 public enum FileExsitStatus { NoPath=0, FileExsit=1, NoFile=2 ...
- Python --判断路径是否为目录或文件
os.path.isdir( ), os.path.isfile(),os.listdir( ), os.walk( ) 参考网址:https://blog.csdn.net/xxn_723911/a ...
- PAT甲题题解-1122. Hamiltonian Cycle (25)-判断路径是否是哈密顿回路
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789799.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- hdu 4096 判断路径
思路:将每个关系当成一条有向边,查询时就判断之间存在路径. #include<iostream> #include<cstdio> #include<cstring> ...
- python 练习 simple_server 判断路径及返回函数
函数 routers 返回一个 urlpatterns 元组,里面包含了路径名和函数名:在 函数 application 中遍历 urlpatterns 元组,路径存在则返回函数名,不存在则返回 40 ...
- python 判断路径是否存在
import os os.path.exists(文件绝对路径)
随机推荐
- ListView系列(七)——Adapter内的onItemClick监听器四个arg参数 (转)
举个例子你会理解的更快:X, Y两个listview,X里有1,2,3,4这4个item,Y里有a,b,c,d这4个item.如果你点了b这个item.如下: public void onItemCl ...
- 怎样删除github中的项目
前几周上传了下做的app的源码,后来发现源码中有太多错误,匆匆便上传了,之后想删掉一直找不到按钮,看了下help:https://help.github.com/articles/deleting-a ...
- Loadrunner请求自定义的http(json)文件and参数化
Loadrunner请求自定义的http(json)文件and参数化 研究啦好些天这个东西啦 终于出来答案啦 嘿嘿 给大家分享一下 : 请求自定义的http文件用函数:web_custom_ ...
- java实例--海盗的最优方案
package unit4; public class Pirate{ private String name; private int[] schemes; private int index; p ...
- PHP 读取逐条数据库记录,以及提交下拉菜单选项
<?php $db_host=localhost; //MYSQL服务器名$db_user=root; //MYSQL用户名$db_pass="******"; //MYSQ ...
- iOS数组排序
[_fields sortUsingComparator:^NSComparisonResult(UITextField *obj1, UITextField *obj2) { /* NSOrdere ...
- 重拾ZOJ 一周解题
ZOJ 2734 Exchange Cards 题目大意: 给定一个值N,以及一堆卡片,每种卡片有一个值value和数量number.求使用任意张卡片组成N的方式. 例如N = 10 ,cards(1 ...
- POJ2396 Budget(有源汇流量有上下界网络的可行流)
题目大概给一个有n×m个单元的矩阵,各单元是一个非负整数,已知其每行每列所有单元的和,还有几个约束条件描述一些单元是大于小于还是等于某个数,问矩阵可以是怎样的. 经典的流量有上下界网络流问题. 把行. ...
- JAVA计算文件大小
File f = new File(save_path+File.separator + resouce_id+".zip"); FileInputStream fis = new ...
- 【BZOJ】1074: [SCOI2007]折纸origami
http://www.lydsy.com/JudgeOnline/problem.php?id=1074 题意:一开始有一个左上角是(0,100),右下角是(100,0)的纸片,现在可以沿有向直线折n ...