当前位置: 首页 > news >正文

文件IO函数和目录相关函数

1、

#include <head.h>
int main(int argc, const char *argv[])
{
    int fd=open("/home/ubuntu/IO/xiaoxin.bmp",O_RDONLY);
    if(fd==-1)
        PRINT_ERROR("OPEN ERROR");
    //方法1
    /*
    int size;
    size=lseek(fd,0,SEEK_END);
    //printf("文件的大小为%d\n",size);
    lseek(fd,0,SEEK_SET);
    if(read(fd,&size,sizeof(size))<=0)
    {
        perror("read error");
        return -1;
    }
    */
    //方法2
    lseek(fd,2,SEEK_SET);
    int size2;
    read(fd,&size2,4);
    printf("文件的大小为%d\n",size2);
 
    //文件偏移量
    lseek(fd,4,SEEK_CUR);
    int offset;
    read(fd,&offset,4);
    printf("文件的偏移量为%d\n",offset);
    
    //宽
    lseek(fd,4,SEEK_CUR);
    int wide;
    read(fd,&wide,4);
    printf("文件的宽为%d\n",wide);
    
    //高
    lseek(fd,0,SEEK_CUR);
    int height;
    read(fd,&height,4);
    printf("文件的高为%d\n",height);
 
 
    close(fd);
    return 0;
}

2、

#include <head.h>
int main(int argc, const char *argv[])
{
    if (argc != 3) {
        fprintf(stderr, "使用方法: %s <目录名> <文件名>\n", argv[0]);
        exit(EXIT_FAILURE);
    }
 
    const char *dir_name = argv[1];
    const char *file_name = argv[2];
 
    DIR *dir = opendir(dir_name);
    if (dir == NULL) {
        PRINT_ERROR("无法打开目录");
    }
 
    struct dirent *entry;
    struct stat file_stat;
    char file_path[1024];
 
    int found = 0;
 
    while ((entry = readdir(dir)) != NULL) {
        if (strcmp(entry->d_name, file_name) == 0) {
            snprintf(file_path, sizeof(file_path), "%s/%s", dir_name, file_name);
 
            if (stat(file_path, &file_stat) == -1) {
                PRINT_ERROR("获取文件信息失败");
            }
 
            printf("文件存在,属性信息如下:\n");
            printf("文件路径: %s\n", file_path);
            printf("文件大小: %ld 字节\n", file_stat.st_size);
            printf("文件权限: %o\n", file_stat.st_mode & 0777);
            printf("文件硬链接数: %ld\n", file_stat.st_nlink);
            struct tm *tm_info = localtime(&file_stat.st_mtime);
            if (tm_info == NULL)
    {
        PRINT_ERROR("localtime error");
    }
            printf("最后修改的时间:%d-%d-%d %d:%d:%d\n",tm_info->tm_year+1900,tm_info->tm_mon+1,tm_info->tm_mday,tm_info->tm_hour,tm_info->tm_min,tm_info->tm_sec);
            found = 1;
            break;
        }
    }
 
    closedir(dir);
 
    if (!found) {
        printf("文件不存在\n");
    }
 
    return 0;
}

http://www.dtcms.com/a/52245.html

相关文章:

  • 飞算JavaAI编程工具集成到idea中
  • STM32 -- 仿真器 ST-Link、J-Link 的连接、参数设置
  • 版本控制器Git和gdb
  • 一键无损放大视频,让老旧画面重焕新生!
  • 充分必要条件
  • 探索DeepSeek-R1的核心秘诀:突破SFT技术的新篇章
  • 【自学笔记】Hadoop基础知识点总览-持续更新
  • MySQL性能调优(添加索引)
  • 低空经济中 建立统一的数据共享平台,促进信息透明和协同决策。
  • [Computer Vision]图像分割技术
  • 新版 FMEA 七步法 - PFMEA 第2步“结构分析”的关键要点 | FMEA软件
  • Mac OS升级后变慢了,如何恢复老系统?
  • 题目梳理2025[长期更新]
  • java面试复习巩固
  • SSE 和 WebSocket 的对比
  • 云主机 vs 轻量型云主机:如何选择最适合的云计算服务?
  • OpenFeign 学习笔记
  • java和Springboot和vue开发的企业批量排班系统人脸识别考勤打卡系统
  • AI工具集锦
  • 用户空间与内核空间切换机制详解
  • The Rust Programming Language 学习 (三)
  • 深度学习编译器(整理某survey)
  • 递归入手三维动态规划
  • RabbitMQ 2025/3/5
  • 海南自贸港的数字先锋:树莓集团的战略布局解析
  • 开发环境搭建-02.后端环境搭建-熟悉项目结构
  • Rust语言入门与应用:未来发展趋势解析
  • Pytorch系列教程:模型训练的基本要点
  • DeepSeek、Grok 和 ChatGPT 对比分析:从技术与应用场景的角度深入探讨
  • 【ROS2机器人入门到实战】