当前位置: 首页 > 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;
}

相关文章:

  • 飞算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工具集锦
  • 用户空间与内核空间切换机制详解
  • 习近平同巴西总统卢拉会谈
  • 专访|导演刘江:给谍战题材注入现实主义的魂
  • 当创业热土遇上年轻气息,上海南汇新城发展如何再发力?
  • 上报集团社长李芸:发挥媒体优势,让中非民心在数字时代更深层互联互通
  • 四川资阳市原市长王善平被双开,“笃信风水,大搞迷信活动”
  • 市自规局公告收回新校区建设用地,宿迁学院:需变更建设主体