功能类似于C Library for Linux中的SetFileLength()

时间:2008-12-10 23:30:41

标签: c linux file io std

Linux下的C库中是否有可以设置文件长度的函数?在Windows下我知道有一个SetFileLength()函数。 如果没有,缩短文件而不删除和重写文件的最佳方法是什么?

2 个答案:

答案 0 :(得分:5)

您可以使用truncate function

int truncate(const char *path, off_t length);

从手册页:

“truncate()和ftruncate()函数导致由path命名或由fd引用的常规文件被截断为精确长度字节的大小。如果先前文件大于此大小,则额外数据将丢失如果以前的文件较短,则会扩展,扩展部分读为空字节“

答案 1 :(得分:3)

   #include <unistd.h>
   #include <sys/types.h>

   int truncate(const char *path, off_t length);
   int ftruncate(int fd, off_t length);

从其手册页:

  

truncate()和ftruncate()   函数导致常规文件命名   通过路径或由fd引用   截断到精确的大小   长度字节。

     

如果之前的文件较大   比这个大小,额外的数据是   丢失。如果以前的文件是   更短,它是扩展的,而且   扩展部分读取为空字节   ( '\ 0')。