Page 1 of 1
					
				Determine file type, like "file" cmd in unix shell
				Posted: Mon Jan 02, 2012 10:09 pm
				by calvax
				Hi, and sorry if I write again but I didn't find in dictionary or in documentation.
Is there a function to determine file type, not from extension of it, but from reading the real header and footer of it.
I mean the same function as the command "file" in unix shell.
For example:
In windows a jpg file normally has .jpg or .jpeg or -jpe extension so I could simply parse name and check what is after the "."
But I would like to catch all .jpg files, also if renamed with another extension.
In osx extension are not so significant and it's common to have files without extension.
Does already exist a function that check header or footer of file to determine type, with the same logic of unix command "file"?
Thanks
			 
			
					
				Re: Determine file type, like "file" cmd in unix shell
				Posted: Mon Jan 02, 2012 10:28 pm
				by mwieder
				There's certainly no cross-platform way to determine a file's type unambiguously. In LiveCode or anywhere else. If there's a particular file type you're interested in you can write your own function to load the binary data and parse it, if you know what you're looking for. But as a generic function, I don't think this is possible. If you come across, for example, a file named
myFile.myType
how would you expect to figure out what it is?
			 
			
					
				Re: Determine file type, like "file" cmd in unix shell
				Posted: Mon Jan 02, 2012 11:00 pm
				by calvax
				Yes I tought about reading binary data (I am interested to take jpg and png files and discard others) but I hoped that livecode has pre-prepared function to check file types. In such case I will make myself.
If I will make and will work fine I will put online, maybe can be useful for somebody else.
Thanks
			 
			
					
				Re: Determine file type, like "file" cmd in unix shell
				Posted: Mon Jan 02, 2012 11:48 pm
				by mwieder
				Thanks! I look forward to seeing what you come up with.
			 
			
					
				Re: Determine file type, like "file" cmd in unix shell
				Posted: Sat Jan 07, 2012 7:45 pm
				by marksmithhfx
				mwieder wrote:Thanks! I look forward to seeing what you come up with.
I did something similar recently when I wanted to check if the file I was reading was SQLite or encrypted, so I loaded the file into a variable and as you say, parsed out the part I was interested in. 
Code: Select all
      put URL ("binfile:" & p_pathname) into tData -- copy the file into a variable
      -- check to see if the first word is 'SQLite'
      set itemdelimiter to space
      if item 1 of tData = "SQLite" then
However this copies the whole file which, if large, could create an undesirable delay. Do you know if there is a way to specify only a portion of the file to load into the variable?
-- Mark
 
			 
			
					
				Re: Determine file type, like "file" cmd in unix shell
				Posted: Sun Jan 08, 2012 12:12 am
				by mwieder
				Yep - check out the "read from file" command.
Code: Select all
open file tFilePath
read from file tFilePath for 6 -- read the first 6 chars of the file
put it into tText
close file tFilePath
if tText is "SQLite" then
 -- it's a database
end if
 
			 
			
					
				Re: Determine file type, like "file" cmd in unix shell
				Posted: Sun Jan 08, 2012 3:30 am
				by marksmithhfx
				mwieder wrote:Yep - check out the "read from file" command.
Code: Select all
open file tFilePath
read from file tFilePath for 6 -- read the first 6 chars of the file
put it into tText
close file tFilePath
if tText is "SQLite" then
 -- it's a database
end if
 
Brilliant. Thanks Mark