怎么获取文件类型

flyingcp 2007-05-08 03:06:19
用C语言怎么获取文件类型?
...全文
725 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nevergone 2007-05-09
  • 打赏
  • 举报
回复
GetFileType();
//windows

ccccffff 2007-05-09
  • 打赏
  • 举报
回复
如果是标准C的话,我劝你放弃吧,根本没有这个函数。

不过自己做个方法来获取,难道有困难么?

test.txt 判断.txt不就可以了?
Michael_555 2007-05-09
  • 打赏
  • 举报
回复
每一种类型的文件在其文件头部分都有确定其类型的文件签名(file signature)。
例如PNG文件,其前八个byte是89 50 4E 47 0D 0A 1A 0A


你可以将你所要识别的所有的文件类型的文件签名做成一个表,当要确定一个文件的文件类型的时候,先以二进制方式将文件打开,取出文件签名部分,再从你的表中检索出相应的文件类型。
muyouniao 2007-05-08
  • 打赏
  • 举报
回复
grip可以
flyingcp 2007-05-08
  • 打赏
  • 举报
回复
不是 获得这种文件类型,就是获得像txt
html这样的文件类型,除了API就没有了么?我看MSDN里有STATSTG这个结构,里面有TYPE,但不知道怎么用呀
ccccffff 2007-05-08
  • 打赏
  • 举报
回复
描述文件信息的结构体
struct stat {
mode_t st_mode; /* 文件类型 & 模式 (权限) */
ino_t st_ino; /* i结点号 (序列号) */
dev_t st_dev; /* 设备号 (文件系统) */
dev_t st_rdev; /* 特殊文件的设备号*/
nlink_t st_nlink; /* 链接号 */
uid_t st_uid; /* 所有者的user ID */
gid_t st_gid; /* 所有者的group ID */
off_t st_size; /* 普通文件(regular file)的大小,以字节为单位 */
time_t st_atime; /* 上次访问的时间 */
time_t st_mtime; /* 上次修改的时间 */
time_t st_ctime; /* 上次文件状态改变的时间 */
blksize_t st_blksize; /* I/O块的最佳大小 (best I/O block size) */
blkcnt_t st_blocks; /* 分配的磁盘块数目 */
};

--------------------------------------------------------------------------------
文件类型
1.普通文件
2.目录文件。任何对于某目录有读权限的进程都可以读取目录的内容,但只有内核才能直接向目录文件做写操作。
3.块特殊文件(block special file)
4.字符特殊文件(character special file)
5.FIFO,用与进程间通信的文件类型,也叫命名管道。
6.Socket,用于进程间的网络通信,但也可以用于同一台机器的进程间通信。
7.符号链接,指向其他文件的一种文件类型
定义在<sys/stat.h>中用于判断文件类型的宏
S_ISREG()、S_ISDIR()、S_ISCHR()、S_ISBLK()、S_ISFIFO()、S_ISLNK()、S_ISSOCK()
ccccffff 2007-05-08
  • 打赏
  • 举报
回复
C语言不支持GetFileType吧?
Aaron_Jerry 2007-05-08
  • 打赏
  • 举报
回复
GetFileType

The GetFileType function returns the type of the specified file.

DWORD GetFileType(
HANDLE hFile // file handle
);

Parameters
hFile
Handle to an open file handle.
Return Values
The return value is one of the following values:

Value Meaning
FILE_TYPE_UNKNOWN The type of the specified file is unknown.
FILE_TYPE_DISK The specified file is a disk file.
FILE_TYPE_CHAR The specified file is a character file, typically an LPT device or a console.
FILE_TYPE_PIPE The specified file is either a named or anonymous pipe.

liuyaoyou 2007-05-08
  • 打赏
  • 举报
回复
大部分文件类型从扩展名就能看出来,少部分同扩展名的不同文件就要从文件头中的信息来看了。
kf701 2007-05-08
  • 打赏
  • 举报
回复
楼上,文件属性 , 但不是文件类型 !!!

file 程序是对每个文件的前面的部分进行读取分析才得到类型的。
最简单的方法是把 file 的源码取一点出来用用。
sss_free 2007-05-08
  • 打赏
  • 举报
回复
看你是做windows应用还是unix了
window有访问控制列表的低级访问控制函数low level access control functions
linux就是相关的access, chmod之类的。
相对来说window的文件属性操作要复杂的多
kf701 2007-05-08
  • 打赏
  • 举报
回复
没有这样的API
flyingcp 2007-05-08
  • 打赏
  • 举报
回复
除了API呢?肯定应该有呀,我用_stat能获取文件信息,但没有类型呀
nevergone 2007-05-08
  • 打赏
  • 举报
回复
用API吧

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧