ios&android c++文件操作

#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
#include <dirent.h>
#include <limits.h>
#include <string.h>
#include <stdio.h>
#include <limits.h>
#include<sys/types.h>
#include<fcntl.h>
#include <assert.h>
//判断是否为目录
bool is_dir(const char *path)
{
    struct stat statbuf;
    if(lstat(path, &statbuf) ==0)//lstat返回文件的信息,文件信息存放在stat结构中
    {
        return S_ISDIR(statbuf.st_mode) != 0;//S_ISDIR宏,判断文件类型是否为目录
    }
    return false;
}

//判断是否为常规文件
bool is_file(const char *path)
{
    struct stat statbuf;
    if(lstat(path, &statbuf) ==0)
        return S_ISREG(statbuf.st_mode) != 0;//判断文件是否为常规文件
    return false;
}

//判断是否是特殊目录
bool is_special_dir(const char *path)
{
    return strcmp(path, ".") == 0 || strcmp(path, "..") == 0;
}

//生成完整的文件路径
void get_file_path(const char *path, const char *file_name,  char *file_path)
{
    strcpy(file_path, path);
    if(file_path[strlen(path) - 1] != '/')
        strcat(file_path, "/");
    strcat(file_path, file_name);
}
//删除文件目录下的所有文件
void delete_dirs_file(const char *path)
{
    DIR *dir;
    dirent *dir_info;
    char file_path[PATH_MAX];
    if(is_file(path))
    {
        remove(path);
        return;
    }
    if(is_dir(path))
    {
        if((dir = opendir(path)) == NULL)
            return;
        while((dir_info = readdir(dir)) != NULL)
        {
            get_file_path(path, dir_info->d_name, file_path);
            if(is_special_dir(dir_info->d_name))
                continue;
            delete_dirs_file(file_path);
            rmdir(file_path);
        }
    }
}

//判断文件是否存在
bool is_file_exist(const char *dir) {
    if (dir == NULL)
        return false;

     if ((access(dir,F_OK))!=-1){
         printf(" 文件存在\n");
        return true;
    }
        printf(" 文件不存在\n");
    return false;
}
//判断文件目录是否存在
bool is_dir_exist(const char *dir) {
    if (dir == NULL)
        return false;
    if (opendir(dir) == NULL)
    {
        printf(" 文件目录不存在\n");
        return false;
    }
    printf(" 文件目录存在\n");

    return true;
}

//创建多级目录

bool create_dirs(const char *dir) {
    if (dir == NULL)
        return false;
    char DirName[256];
    strcpy(DirName, dir);
    int i, len = strlen(DirName);
    if (DirName[len - 1] != '/')
        strcat(DirName, "/");
    len = strlen(DirName);
    for (i = 1; i < len; i++) {
        if (DirName[i] == '/') {
            DirName[i] = 0;
            //判断路径是否存在,如果不存在则创建路径
            if (!is_dir_exist(DirName) ) {
                if (mkdir(DirName, 0755) == -1) {
                    perror("mkdir   error");
                    return false;
                }
            }
            DirName[i] = '/';
        }
    }
    return true;
}

//创建文件可读写的文件
bool create_file(const char *file_path, const char *file_name) {
    if(is_dir_exist(file_path)){
        //文件已经存在
        if (is_file_exist(file_name)) {
            return  true;
        }
    }
    else{
        //文件目录不存在,创建目录
        if (create_dirs(file_path)) {
            // 创建目录成功,这里去创建文件
            if(open(file_name,O_RDWR | O_CREAT,
                    S_IRUSR | S_IRGRP | S_IROTH)!=-1)
                return  true;
        }

    }
    return  false;

}
//删除文件
bool delete_file(const char* file_path) {
    if (file_path == NULL) {
        return false;
    }
    if(remove(file_path)==-1)
        return false;
    return  true;

}
//以追加的方式写入文件
bool write_file(const char *fileName,const char *content) {
    FILE *fp;
    fp = fopen(fileName, "a+");
    if (NULL == fp) {
        return false;
    }
    if( fwrite(content, strlen(content), 1, fp)!=1)
         return false;
    fclose (fp);
    return true;
}

int main(int argc, char **argv)
{
   // create_dirs("/Users/sunger/desktop/sunger/a/b/c");
    is_file_exist("/Users/sunger/desktop/a.c");
    read_file("/Users/sunger/desktop/a.c");
    return 0;
}

在mac下测试全部通过

时间: 2024-12-20 10:29:38

ios&android c++文件操作的相关文章

android 简单文件操作

1.布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orient

Android的文件操作

Android的文件操作 一.Android的文件操作简介 要理解Android的文件存储,首先要明白Android是如何用什么方式获取和存入数据的.Android的文件操作都是通过流的方式进行的,即IO.Android的文件操作跟Java是一样的,文件操作分为输入流(InputStream)和输出流(OutputStream),输入流用于获取文件数据,输出流用于存储文件.输入流和输出流都是很耗费内存空间的,所以在使用Android的IO时,除非特殊需要,一般在使用结束后要记得关闭IO通道.接下

iOS学习笔记——文件操作(NSFileManager)

iOS的沙盒机制,应用只能访问自己应用目录下的文件.iOS不像android,没有SD卡概念,不能直接访问图像.视频等内容.iOS应用产生的内容,如图像.文件.缓存内容等都必须存储在自己的沙盒内.默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp.Library包含Caches.Preferences目录.               上面的完整路径为:用户->资源库->Application Support->iPhone Simulator->

android之文件操作——读取assets和raw文件下的内容

1.分别创建assets文件夹和res/raw文件夹:(要注意的raw文件是在res下new,然后创建一个名字为raw的文件夹)        2.创建两个txt文件,复制到asset和raw文件夹中: 3.实现的效果: 4.实现代码: (1)布局文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.androi

android xml文件操作

//xml 写操作        XmlSerializer serializer = Xml.newSerializer();                FileOutputStream outputStream = context.openFileOutput("xmlwriter.xml", Context.MODE_PRIVATE);                StringWriter writer=new StringWriter();        serializ

iOS开发 plist文件的操作

iOS开发 plist文件操作 浏览:6287 | 更新:2015-02-05 19:57 1 2 3 4 5 分步阅读 iOS开发常用数据存储方式有:NSKeyedArchiver.NSUserDefaults.Write写入方式.SQLite.为了简洁明了的存储和可视化展现数据,以文件形式存储数据是很有必要的.plist文件在iOS开发中属于Write写入方式,可以以Property List列表形式显示,也可以以xml格式显示.对于数据管理是很方便的.掌握使用plist文件数据操作很有必要

Android数据存储-文件操作

一.预备知识 1.Android中的MVC设计模式 MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器.一个逻辑模型可以对于多种视图模型,比如一批统计数据你可以分别用柱状图.饼图来表示.一种视图模型也可以对于多种逻辑模型.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,这与<设计模式>中的观察者模式是完全一样. MVC好处:从用户的角度出发,用户可

Java和Android文件操作

File这是文件基类,抽象地代表一个文件实体,它有四个不同的构造方法: File(File dir, String name)  File(String path)   File(String dirPath, String name)  File(URI uri)  这些构造方法的实质都是一样的,就是构造一个File实例,必须提供一个完整的文件路径. 构造了一个File实例,并不是说就新建了一个文件或文件夹,这个File实例,只是实际系统内文件实体的一个代表.重要方法:public boole

Android的file文件操作详解

Android的file文件操作详解 android的文件操作要有权限: 判断SD卡是否插入 Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED); 获得sd卡根目录 File skRoot = Environment.getExternalStorageDirectory(); 获得私有根目录 File fileRoot = Context.getFilesDir()+""