zoukankan      html  css  js  c++  java
  • FATFS 初学之 f_truncate

     1 /*-----------------------------------------------------------------------*/
     2 /* Truncate File                                                         */
     3 /*-----------------------------------------------------------------------*/
     4 
     5 FRESULT f_truncate (
     6     FIL *fp        /* Pointer to the file object */
     7 )
     8 {
     9     FRESULT res;
    10     DWORD ncl;
    11 
    12 
    13     res = validate(fp->fs, fp->id);        /* Check validity of the object */
    14     if (res == FR_OK) {
    15         if (fp->flag & FA__ERROR) {            /* Check abort flag */
    16             res = FR_INT_ERR;
    17         } else {
    18             if (!(fp->flag & FA_WRITE))        /* Check access mode */
    19                 res = FR_DENIED;
    20         }
    21     }
    22     if (res == FR_OK) {
    23         if (fp->fsize > fp->fptr) {
    24             fp->fsize = fp->fptr;    /* Set file size to current R/W point */
    25             fp->flag |= FA__WRITTEN;
    26             if (fp->fptr == 0) {    /* When set file size to zero, remove entire cluster chain */
    27                 res = remove_chain(fp->fs, fp->sclust);
    28                 fp->sclust = 0;
    29             } else {                /* When truncate a part of the file, remove remaining clusters */
    30                 ncl = get_fat(fp->fs, fp->clust);
    31                 res = FR_OK;
    32                 if (ncl == 0xFFFFFFFF) res = FR_DISK_ERR;
    33                 if (ncl == 1) res = FR_INT_ERR;
    34                 if (res == FR_OK && ncl < fp->fs->n_fatent) {
    35                     res = put_fat(fp->fs, fp->clust, 0x0FFFFFFF);
    36                     if (res == FR_OK) res = remove_chain(fp->fs, ncl);
    37                 }
    38             }
    39         }
    40         if (res != FR_OK) fp->flag |= FA__ERROR;
    41     }
    42 
    43     LEAVE_FF(fp->fs, res);
    44 }
    View Code

    函数功能:截断文件大小

    描述:

    f_truncate函数当 _FS_READONLY == 0 并且  _FS_MINIMIZE == 0时可用。
    f_truncate函数截断文件到当前的文件读/写指针。当文件读/写指针已经指向文件结束时,该函数不起作用。

  • 相关阅读:
    线程基础之进程,线程,任务
    Jobs深入学习
    Quartz的API简介及Jobs和Trigger介绍
    Quartz入门及简单实现
    maven仓库配置阿里云镜像
    Activiti图表bpmn对应的xml文件
    Activiti流程设计工具
    Activiti的25张表
    subprocess.Popen指令包含中文导致乱码问题解决
    Qt5.9使用QWebEngineView加载网页速度非常慢,问题解决
  • 原文地址:https://www.cnblogs.com/Danhuise/p/3910079.html
Copyright © 2011-2022 走看看