tags:

views:

140

answers:

3

I have a file which was originally named 'foo' in the Finder. If I 'get info' for the file, the Finder recognizes it as "Kind: Plain text". If I rename the file as 'foo.png', Finder then recognizes it as "Kind: Portable Network Graphics image". If I rename the file as 'foo', Finder still recognizes it as "Kind: Portable Networks Graphics image" (not plain text like I expected).

How is Mac OS X recognizing the file kind?

+1  A: 

Because *NIX systems (like Mac OS X) don't rely on extensions to recognize file types. They rely on something called Magic Number (if I remember well), that is, they search for common patterns found in those types of file (e.g headers, tags, metainfo etc.) and they recognize them.

klez
Actually, that's *not* true of Mac OS X. It uses a complex system of looking at extensions and other metadata that, since OS X 10.3, has been combined into a hierarchy of Uniform Type Identifiers (http://developer.apple.com/macosx/uniformtypeidentifiers.html) something Apple has been tweaking in every release since then.
Ned Deily
+1  A: 

Magic numbers in the file is usually how it works. A PNG file, for example, has a header to identify it as PNG and not some other file format. Wikipedia has some more info.

Carl Norum
+1  A: 

I don't know how it works, but I can imagine that until you renamed the file to foo.png Finder didn't know and didn't care what type it is. But after you've renamed it Finder stored it's type somewhere (.DS_Store perhaps?) with the inode ID so it could recognize this file even after you rename it again.

Tomas Markauskas